Linux: How can I run multiple wine versions in a multilib enviroment?

0

I'm running Slackware 64 14.0 with 32 bit multilibs.

Numerous sites have explained that it is impossible to run multiple versions of wineserver and that the solution is to kill the old version of wineserver to use the new version. A select few sites have mentioned that it is possible by using a different WINEPREFIX for each wineserver version.

That's what I have been doing inadvertently for months because that's what Netflixplayer inherently does. I'm not certain if Netflixplayer's wineserver was running or using my wine installation's wineserver. I have been unable to verify the wine version that is in Netflixplayer.tar.gz because when I run:

/opt/Netflix64/bin/wine --version

or

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

it reports whatever wine version is installed in /usr/bin. I've verified this by installing/uninstalling several versions.

According to http://sourceforge.net/projects/postinstaller/files/data/, it doesn't look like Netflixplayer has been updated since 12/24/2012 and the latest wine version out then was 1.5.20 according to http://sourceforge.net/projects/wine/files/Source/

So I've been running

wine 1.5.25 32 bit

and Netflixplayer with

wine <=1.5.20 32 bit

According to 'file' both wine versions are 32 bit:

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

And readelf shows that the library runpaths are different.

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]

I have only been able to run Netflixplayer once after all of this happened and that was because I uninstalled everything wine related and deleted everything in /tmp including hidden files and deleted every reference to wine, excluding the package history. I've reverted back to 1.5.25 and no matter what I do, not even closing the old version of wineserver using wineserver -k will work.

Executing this:

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/

Produces this:

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 will no longer work with any other wine installed on the system. I think the environment variables are being ignored. And that somehow WINEPREFIX became useless.

linux
64-bit
wine
asked on Super User Aug 20, 2013 by user2270773

1 Answer

0

I have attempted to ask a question a considerable number of times but by the time I finish filling out the form, I've figured out in several minutes what took days or even weeks of no results. I probably should have asked and answered it myself because my questions typically have 1 or 2 page results on google hidden between thousands of similar but unrelated questions.

Anyway, here's my answer:

Netflixplayer.tar.gz is using wine-1.5.19. I got this by creating another user and performing the same commands from the question:

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

This tells me that there is definitely something wrong my current user. It's possible my environment is damaged somehow.

Currently I've resolved this by running the second wineserver as the new user but I think that if I fixed my current user I could run both wineservers in the same account. But this is not a big deal. What concerns me, however, is that there could be other unknown side effects of whatever is going on.

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

Automating the "sudo su - user" command

I'm not certain but it's possible my $LD_LIBRARY_PATH I set, from a previous compile, was interfering with the library paths of the executables. My new user obviously didn't have this in its path.

answered on Super User Aug 20, 2013 by user2270773 • edited Mar 20, 2017 by Community

User contributions licensed under CC BY-SA 3.0