Skype on Debian Testing (Squeeze) 64-bit (Workaround)

Short Version

  1. Install 32-bit libs:
    apt-get install ia32-libs ia32-libs-gtk
  2. Download 64-bit version for Ubuntu from skype.com, install the deb:
    dpkg -i skype-ubuntu-intrepid_2.1.0.81-1_amd64.deb
    apt-get install -f
  3. Get skype-wrapper from here
    (You need two files skype_wrapper.c and Makefile)
  4. Install a compiler and 32-bit headers:
    apt-get install gcc libc6-dev-i386
  5. Compile the shared library:
    make
  6. Run Skype with the wrapper:
    LD_PRELOAD=./libskype_wrapper.so skype

    Note: If you want to add LD_PRELOAD to a script or Skype shortcut remember to use its absolute path (i.e: LD_PRELOAD=/home/user/src/skype-wrapper/libskype_wrapper.so)

Long Version

Although not free software, Skype is found on many Linux installations. A couple of bugs in Debian testing prevents it from running properly. This guide supplies a workaround to get it working.

Skype for Linux 64-bit is actually a 32-bit application packed in a 64-bit package. Since it’s a dynamically linked application, you’ll need all the 32-bit libraries it uses:
apt-get install ia32-libs ia32-libs-gtk

Note that we installed ia32-libs-gtk, even though Skype is a Qt application. There’s an open Debian bug for this.

After installing the  dependencies, you can download Skype for Linux from skype.com. Note that there is no Debian 64-bit version, only Ubuntu. It will install fine anyway:
dpkg -i skype-ubuntu-intrepid_2.1.0.81-1_amd64.deb
And update dependencies by running:
apt-get install -f

Now if you’ll try running Skype, the main interface will load, but once you sign in you’ll get the following error:
Inconsistency detected by ld.so: dl-open.c: 611: _dl_open: Assertion `_dl_debug_initialize (0, args.nsid)->r_state == RT_CONSISTENT' failed!
This is caused by another bug in Debian. When Skype tries to open libpulse.so (the library for PulseAudio), it crashes. Running ldd /usr/lib32/libpulse.so.0 shows why:

linux-gate.so.1 => (0xf7700000)
libpulsecommon-0.9.15.so => /usr/lib32/libpulsecommon-0.9.15.so (0xf7666000)
libX11.so.6 => /usr/lib32/libX11.so.6 (0xf754a000)
libICE.so.6 => /usr/lib32/libICE.so.6 (0xf7531000)
libSM.so.6 => /usr/lib32/libSM.so.6 (0xf7529000)
libXtst.so.6 => /usr/lib32/libXtst.so.6 (0xf7524000)
libwrap.so.0 => not found
libasyncns.so.0 => /usr/lib32/libasyncns.so.0 (0xf751f000)
libdbus-1.so.3 => /lib32/libdbus-1.so.3 (0xf74e5000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf74cc000)
libcap.so.2 => /lib32/libcap.so.2 (0xf74c8000)
libgdbm.so.3 => not found
librt.so.1 => /lib32/librt.so.1 (0xf74bf000)
libdl.so.2 => /lib32/libdl.so.2 (0xf74ba000)
libm.so.6 => /lib32/libm.so.6 (0xf7494000)
libc.so.6 => /lib32/libc.so.6 (0xf734d000)
libwrap.so.0 => not found
libgdbm.so.3 => not found
libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf7333000)
libuuid.so.1 => /lib32/libuuid.so.1 (0xf732f000)
libXext.so.6 => /usr/lib32/libXext.so.6 (0xf7321000)
libresolv.so.2 => /lib32/libresolv.so.2 (0xf730d000)
libnsl.so.1 => /lib32/libnsl.so.1 (0xf72f6000)
/lib/ld-linux.so.2 (0xf7701000)
libXau.so.6 => /usr/lib32/libXau.so.6 (0xf72f2000)
libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf72ed000)

See the ‘not found’ entries? That means the library is linked with those libraries, but they do not exist in the system. That’s a packaging bug.
To prevent Skype from ever running into the bug, we need to prevent it from loading the library. That would be easy enough with an open source application, where we have access to the code, which is not the case here. Fortunately Skype can fail-over to libalsa, which works like a charm. Instead of removing the file from our system, we’ll trick Skype to think it’s not there.
The code can be found at here (You need two files skype_wrapper.c and Makefile). This little piece of code wraps the running application and prevents it from loading libpulse.so.0. That’s a very brute-force way, but non-destructive to the rest of the systems.
Since Skype is a 32-bit application, we’ll need to compile our wrapper as such. Install a compiler and 32-bit headers:
apt-get install gcc libc6-dev-i386
Compile the shared library:
make
Finally, run Skype with the wrapper:
LD_PRELOAD=./libskype_wrapper.so skype

You can now run Skype this way safely from scripts or shortcuts, just remember to point the absolute path of libskype_wrapper.so in LD_PRELOAD

Extra credit – Changing microphone volume in alsamizer:
If you run the test call and no one is able to hear you, your microphone may be mute. Run alsamixer and hit (you’ll see it points to ‘Capture’ in the View menu on top). Now you can unmute it by hitting m and setting the volume with the arrow keys.

About these ads

10 Comments

Filed under howto, linux

10 responses to “Skype on Debian Testing (Squeeze) 64-bit (Workaround)

  1. Pingback: Skype on Debian Testing (Squeeze) 64-bit (Workaround) | Debian-News.net - Your one stop for news about Debian

  2. Marcos

    A simple solution to Inconsistence error:

    sudo chmod a-r /usr/lib32/libpulse{-simple.so.0.0.2,.so.0.8.0,common-0.9.15.so}

    Origin: http://crunchbanglinux.org/forums/topic/7310/solution-getting-skype-to-work/

  3. Pingback: Skype Workaround für Debian testing 64bit « fluetkes Blog

  4. John Goodland

    Thanks so much. Works on Squeeze 64bit.
    To get my Logitech quickcam

    ( ID 046d:08da Logitech, Inc. QuickCam Messanger)

    working with this,
    I just added the following to LD_PRELOAD.
    Hope this helps someone

    LD_PRELOAD=/home/john/.bin/libskype_wrapper.so:/usr/lib32/libv4l/v4l1compat.so skype

  5. Pingback: Instalando Skype no Debian Squeeze 64-bits « Blog do Albuquerque

  6. Pingback: Devil's Place » Skype 64 Bit on Debian Squeeze

  7. To make this a little bit nicer to launch, you can do a few more steps.

    1 — move /usr/bin/skype to /usr/bin/skype.bin
    2 — create a new /usr/bin/skype with the following contents:

    #!/bin/bash
    LD_PRELOAD=/usr/share/skype/lib/libskype_wrapper.so skype.bin

    3 — chmod +x /usr/bin/skype

    4 — move the libskype_wrapper.so to the /usr/share/skype/lib directory (lib didn’t exist already, so you may have to create it.)

    With these steps, you can now launch the Skype app from the Applications menu in Gnome. And you can simply run skype at the command line without having to worry about the wrapper.

  8. Pingback: Instalando Skype no Debian Squeeze 64-bits « Temas Livres

  9. ty!!!!!!!…. what it work on 64b debian stable version:
    1- try install dependecies.. apt-get install ia32-libs ia32-libs-gtk
    2- install the package for ubuntu (multiarch) ther is no more 64b package!
    3- apt-get install -f and install what ever it needs!
    4- just run skype!!!
    5- sorry 4 my criminal english!

  10. Pingback: Instalando Skype no Debian Squeeze 64-bits | Blog do Albuquerque

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s