Linux:multilib環境で複数のwineバージョンを実行するにはどうすればよいですか?


0

32ビットmultilibでSlackware 64 14.0を実行しています。

多数のサイトが、複数のバージョンのwineserverを実行することは不可能であり、解決策は新しいバージョンを使用するために古いバージョンのwineserverを強制終了することであると説明しています。一部のサイトでは、ワインサーバーのバージョンごとに異なるWINEPREFIXを使用することが可能であると述べています。

それは、Netflixplayerが本質的に行っていることだからです。Netflixplayerのwineserverが実行されているか、私のワインインストールのwineserverを使用しているかはわかりません。Netflixplayer.tar.gzにあるワインのバージョンを確認できませんでした。

/opt/Netflix64/bin/wine --version

または

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

/ usr / binにインストールされているワインのバージョンを報告します。いくつかのバージョンをインストール/アンインストールして、これを確認しました。

http://sourceforge.net/projects/postinstaller/files/data/によると、Netflixplayerが2012年12月24日以降に更新されたようには見えず、httpによると最新のワインバージョンは1.5.20でした。 //sourceforge.net/projects/wine/files/Source/

だから私は走っていた

ワイン1.5.25 32ビット

とNetflixplayer

wine <= 1.5.20 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を実行できるのは1回だけでした。これは、ワイン関連のすべてをアンインストールし、隠しファイルを含む/ tmpのすべてを削除し、パッケージ履歴を除くwineへのすべての参照を削除したためです。1.5.25に戻りましたが、何をしても、wineserver -kを使用して古いバージョンのwineserverを閉じることはできません。

これを実行する:

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は役に立たなくなった。


私はちょうどこれを試しました:strace wine notepad 2>&1 |grep "/lib/"そして、私は非常に奇妙なものを見つけました:wine 1.7.19(適切に設定されたPATHとLD_LIBRARY_PATH)でそれを実行している間、ワイン1.7.19からのlibがロードされました。今、私はそれを解決しようとする必要があります:)
水瓶座パワー14

回答:


0

私はかなりの数の質問をしようとしましたが、フォームに記入し終えるまでに、何日も何週間も結果が出なかったものを数分で見つけました。私の質問は、通常、数千の類似するが無関係の質問の間に隠されたグーグルでの1または2ページの結果を持っているため、私はおそらく自分で質問して答えるべきでした。

とにかく、ここに私の答えがあります:

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

これは、現在のユーザーに間違いがあることは間違いありません。私の環境が何らかの形で破損している可能性があります。

現在、2番目の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が実行可能ファイルのライブラリパスに干渉していた可能性があります。私の新しいユーザーは明らかにこれをパスに持っていませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.