Linux: Como posso executar várias versões de vinhos em um ambiente multilib?

0

Estou executando o Slackware 64 14.0 com multilibs de 32 bits.

Vários sites explicaram que é impossível executar várias versões do wineserver e que a solução é matar a versão antiga do wineserver para usar a nova versão. Alguns sites selecionados mencionaram que é possível usar um WINEPREFIX diferente para cada versão do servidor de vinhos.

Isso é o que eu tenho feito inadvertidamente por meses, porque é isso que o Netflixplayer faz inerentemente. Não tenho certeza se o wineserver do Netflixplayer estava funcionando ou usando o wineserver da minha instalação de vinhos. Eu não consegui verificar a versão do vinho que está em Netflixplayer.tar.gz porque quando eu corro:

/opt/Netflix64/bin/wine --version

ou

cd /opt/Netflix64/bin && ./wine --version

relata qualquer versão de vinho instalada em / usr / bin. Eu verifiquei isso instalando / desinstalando várias versões.

De acordo com o link , não parece que o Netflixplayer tenha sido atualizado desde 24/12/2012 e a versão mais recente do vinho foi 1.5.20 de acordo com link

Então, estou correndo

wine 1.5.25 32 bit

e Netflixplayer com

wine <=1.5.20 32 bit

De acordo com o 'arquivo', ambas as versões do vinho são de 32 bits:

bash-4.2$ file /opt/Netflix64/bin/wine
/opt/Netflix64/bin/wine: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), BuildID[sha1]=0x2acec63c4ffa5cd7515f1c9fead64d54616df195, stripped

bash-4.2$ file /usr/bin/wine
/usr/bin/wine: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped

E o readelf mostra que os percursos da biblioteca são diferentes.

bash-4.2$ readelf -d /usr/bin/wine | grep -e Library -e library
 0x00000001 (NEEDED)                     Shared library: [libwine.so.1]
 0x00000001 (NEEDED)                     Shared library: [libpthread.so.0]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
 0x0000000f (RPATH)                      Library rpath: [$ORIGIN/../lib]
 0x0000001d (RUNPATH)                    Library runpath: [$ORIGIN/../lib]

bash-4.2$ readelf -d /opt/Netflix64/bin/wine | grep -e Library -e library
 0x00000001 (NEEDED)                     Shared library: [libwine.so.1]
 0x00000001 (NEEDED)                     Shared library: [libpthread.so.0]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
 0x0000000f (RPATH)                      Library rpath: [$ORIGIN/../lib32]
 0x0000001d (RUNPATH)                    Library runpath: [$ORIGIN/../lib32]

Eu só consegui rodar o Netflixplayer uma vez, depois de tudo isso acontecer e porque eu desinstalei tudo relacionado ao vinho e deletei tudo em / tmp, incluindo arquivos ocultos e deletei todas as referências ao vinho, excluindo o histórico do pacote. Voltei para 1.5.25 e não importa o que eu faça, nem mesmo fechar a versão antiga do wineserver usando o wineserver -k funcionará.

Executando isso:

env WINELOADER="/opt/Netflix64/bin/wine" WINESERVER="/opt/Netflix64/bin/wineserver" WINEPREFIX="$HOME/.Netflix" /opt/Netflix64/bin/wine "C:\Program Files\Mozilla Firefox\firefox.exe" http://netflix.com/

Produz isso:

wine client error:0: version mismatch 437/439.
Your wineserver binary was not upgraded correctly,
or you have an older one somewhere in your PATH.
Or maybe the wrong wineserver is still running?

O Netflixplayer não funcionará mais com qualquer outro vinho instalado no sistema. Eu acho que as variáveis de ambiente estão sendo ignoradas. E que de alguma forma WINEPREFIX se tornou inútil.

    
por user2270773 20.08.2013 / 22:59

1 resposta

0

Eu tentei fazer uma pergunta um número considerável de vezes, mas quando terminei de preencher o formulário, descobri em alguns minutos o que levou dias ou até semanas sem resultados. Eu provavelmente deveria ter perguntado e respondido por mim mesmo porque minhas perguntas normalmente têm resultados de 1 ou 2 páginas no Google escondidos entre milhares de perguntas similares, mas não relacionadas.

Enfim, aqui está minha resposta:

O Netflixplayer.tar.gz está usando o wine-1.5.19. Eu consegui isso criando outro usuário e executando os mesmos comandos da pergunta:

bash-4.2$ /opt/Netflix64/bin/wine --version
wine-1.5.19
bash-4.2$ /usr/bin/wine --version
wine-1.5.25

Isso me diz que definitivamente há algo errado no meu usuário atual. É possível que meu ambiente seja danificado de alguma forma.

Atualmente, resolvi isso executando o segundo wineserver como o novo usuário, mas acho que, se eu consertei meu usuário atual, posso executar os dois wineservers na mesma conta. Mas isso não é grande coisa. O que me preocupa, no entanto, é que poderia haver outros efeitos colaterais desconhecidos do que está acontecendo.

bash-4.2$ ps aux | grep wineserver
user1  7415 15.7  0.3  15460 12320 ?  Ss 17:40  17:26 /usr/bin/wineserver
user2  10661 8.7  0.3  13316 10272 ?  Ss 19:14   1:26 /opt/Netflix64/bin/wineserver

Automatizando o comando "sudo su-user"

Não tenho certeza, mas é possível que meu $ LD_LIBRARY_PATH que eu configurei, de uma compilação anterior, estivesse interferindo nos caminhos da biblioteca dos executáveis. Meu novo usuário obviamente não tem isso em seu caminho.

    
por 21.08.2013 / 00:14