Я использую Slackware 64 14.0 с 32-битными мультилибами.

Многочисленные сайты объясняют, что невозможно запустить несколько версий wineserver и что решение состоит в том, чтобы убить старую версию wineserver, чтобы использовать новую версию. Некоторые сайты упомянули, что это возможно, используя разные WINEPREFIX для каждой версии wineserver.

Это то, что я делал по неосторожности в течение нескольких месяцев, потому что это то, что по сути делает Netflixplayer. Я не уверен, работал ли винсервер Netflixplayer или использовал винный сервер моей винной установки. Мне не удалось проверить версию Wine, которая находится в Netflixplayer.tar.gz, потому что при запуске:

/opt/Netflix64/bin/wine --version

или же

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

он сообщает, какая версия Wine установлена в /usr /bin. Я подтвердил это путем установки / удаления нескольких версий.

Согласно http://sourceforge.net/projects/postinstaller/files/data/, не похоже, что Netflixplayer был обновлен с 24/12/2012, а последняя версия Wine тогда была 1.5.20 в соответствии с http://sourceforge.net/projects/wine/files/Source/

Итак, я бежал

вино 1.5.25 32 бит

и Netflixplayer с

вино <= 1,50 32 бит

Согласно «файлу» обе версии вина являются 32-битными:

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

И readelf показывает, что пути к библиотекам разные.

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]

Я смог запустить Netflixplayer только один раз после того, как все это произошло, и это потому, что я удалил все, что касается Wine, и удалил все в /tmp, включая скрытые файлы, и удалил все ссылки на wine, кроме истории пакетов. Я вернулся к 1.5.25 и, что бы я ни делал, даже закрытие старой версии wineserver с помощью wineserver -k не сработает.

Выполнение этого:

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/

Производит это:

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?

Netflixplayer больше не будет работать с любым другим вином, установленным в системе. Я думаю, что переменные среды игнорируются. И это как-то WINEPREFIX стало бесполезным.

1 ответ1

0

Я пытался задать вопрос довольно много раз, но к тому времени, как я заканчивал заполнять форму, я за несколько минут понял, что за несколько дней или даже недель ничего не получилось. Я, вероятно, должен был спросить и ответить на него сам, потому что мои вопросы обычно имеют результаты 1 или 2 страницы в Google, скрытые между тысячами похожих, но не связанных вопросов.

Во всяком случае, вот мой ответ:

Netflixplayer.tar.gz использует wine-1.5.19. Я получил это, создав другого пользователя и выполнив те же команды из вопроса:

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

Это говорит мне, что мой нынешний пользователь определенно что-то не так. Возможно, моя среда как-то повреждена.

В настоящее время я решил эту проблему, запустив второй wineserver в качестве нового пользователя, но я думаю, что, если я исправлю свой текущий пользователь, я смогу запустить оба wineserver в одной учетной записи. Но это не имеет большого значения. Что меня беспокоит, однако, это то, что могут быть другие неизвестные побочные эффекты того, что происходит.

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

Автоматизация команды "sudo su - user"

Я не уверен, но возможно, что мой $ LD_LIBRARY_PATH, который я установил из предыдущей компиляции, вмешивался в пути к библиотекам исполняемых файлов. Мой новый пользователь, очевидно, не имел этого на своем пути.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .