Guide: How to Install SoulseekQt on Linux 64Bit and integrate into shell (Ubuntu)

Dewb's picture

Soulseek Ubuntu 12.04 x86_64 and Tracing Shared Library Issues

This guide concerns installing SoulseekQt on a 64bit Linux (I use Ubuntu) operating system. I prefer to remove the date from the soulseekQt file on Download and just call it SoulsekQt (which will also make it easier to write this guide). The benefit of doing so is that when an updated client is released one can simply rename and replace the client without making any other updates.

I know there are other clients like nicotine, and museeq out there but I don't like them.
It's just Preference. I don't care for all the flashing birds and crap on nicotine. I don't think nicotine's search capabilities are up to par. As a matter of fact I've tested this by running the same search on both at the same time and let me tell you there were stark contrasts. Museeq, I don't know anything about except I dont like the interface too much. I've never really used it, don't need it if SoulseekQt will function.

Ohh and the thing I noticed ... in reading the Qt Forum about Linux that sparked the lightbulb was that

ordteapot

said everything worked perfectly. I examined the paths he posted and it said /usr/lib/x86_64-Linux-gnu/ which led me to believe that Linux has 32bit process' embedded. Much like windows has syswow, Linux has /i386-Linux-gnu/. Anyway we need to make use of those paths and libraries, and that is how I was led to avoid Downloading that QT suite and try to just satisfy any missing dependencies.

I have found that putting the binary file in /usr/bin/ makes for easy installation.
So rename the binary file you downloaded to SoulseekQt and put it in /usr/bin/.

In Terminal;

$ //usr/bin/SoulseekQt
> SoulseekQt: error while loading shared libraries: libQtGui.so.4: cannot open shared object file: No such file or directory

Hmmm.

$ locate libQtGui.so.4.8
> /usr/lib/x86_64-linux-gnu/libQtGui.so.4
> /usr/lib/x86_64-linux-gnu/libQtGui.so.4

If locate doesnt work or gives an error you may have to update your database first.

$ sudo updatedb

Okay, so it’s moaning about the Qt library, libQtgui, not being there. But it is there, although specifically, it’s a 64bit library. and Soulseek is 32bit...

$ file /usr/bin/SoulseekQt
> /usr/bin/SoulseekQt: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, BuildID[sha1]=0xa75958082844329cf021aa26dc1ae6b91eb2423d, stripped

(regular users like you and I prefer our ladies and our binaries stripped, they run/preform better, but that is beyond our scope here)

We need compatible shared x86 libraries, but when you get these sorts of issues it’s always best to see what else is missing. The ldd tool comes to the rescue.
You should see something similar to the following ...

$ ldd /usr/bin/SoulseekQt
> linux-gate.so.1 => (0xf7726000)
> libQtGui.so.4 => not found
> libQtNetwork.so.4 => not found
> libQtCore.so.4 => not found
> libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf67f0000)
> libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf670b000)
> libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf66df000)

So looking at this, we are missing compatible versions of those libraries we need both 32bit and 64bit in both 64 and i386.

With Ubuntu, to enable multiarch support, check the file /etc/dpkg/dpkg.cfg.d/multiarch.
There should be a line like below (and if there isn’t, add it):

# file /etc/dpkg/dpkg.cfg.d/multiarch
foreign-architecture i386

Now we need to satisfy SoulseekQt's i386 dependencies.

$ sudo apt-get install libxss1:i386 libqtcore4:i386 libqt4-dbus:i386 libqtgui4:i386

If we re-run ldd we can see SoulseekQt’s shared library dependencies are now satisfied.

$ ldd /usr/bin/SoulseekQt
> linux-gate.so.1 => (0xf7726000)
> libQtGui.so.4 => /usr/lib/i386-linux-gnu/libQtGui.so.4 (0xf6c36000)
> libQtNetwork.so.4 => /usr/lib/i386-linux-gnu/libQtNetwork.so.4 (0xf6ae9000)
> libQtCore.so.4 => /usr/lib/i386-linux-gnu/libQtCore.so.4 (0xf680b000)
> libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf67f0000)
> libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf670b000)
> libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf66df000)
> libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf66c1000)
> libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf651b000)
> libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf6505000)
> libfontconfig.so.1 => /usr/lib/i386-linux-gnu/libfontconfig.so.1 (0xf64d1000)
> blah blah blah ....etc (they should all be found, if not you will have to find those libraires)

SoulseekQt now starts up and behaves as it should. YAY!!!
--credit to Aaron Bonner

===================================================================
Now we just need to integrate Soulseek into shell so we can start it easily.
If you use a dock just make a launcher.

Open your text editor and copy and paste the following into it..

#!/usr/bin/env xdg-open

[Desktop Entry]
Name=SoulseekQt
Exec=SoulseekQt
Icon=Soulseek_remake
Type=Application
Terminal=false
Comment=C++/QT3 SoulseekQt client
Categories=Qt;Network;
Name[en_US]=SoulseekQt

Save the file as .local/share/applications/SoulseekQt.desktop

Now make it executable;

$ sudo chmod +x SoulseekQt.desktop

I tried linking to the binary file for the icon but I guess I didnt do it right. C'est La Vie
I made my own. I found this bird by 'remake' you can get it here.

Then risize the image (dont forget to delete the background), and place an appropriately
sized copy in each of the folders at ...

.local/share/icons/hicolor/

=======================================================================

This had to be done, I could not justify installing a 230MB SDK just to run a 2.5MB program it
was developed on. fo' real b!

Okay well that oughta do it. eNjOy !!!!

Find me on Soulseek-- Mr. Cadillac on Windows and q-_-p on Ubuntu

Tags: soulseek ubuntu linux i386

tks so much

perfect