2

I have downloaded "multiarch" .deb file for latest skype and unable to install it on latest version of LMDE (linux mint debian edition Xfce x86_64). e.g

  1. step one :

    sudo dpkg -i skype-debian_4.1.0.20-1_i386.deb 
    

    output:

    dpkg: dependency problems prevent configuration of skype:
    skype depends on libqt4-dbus (>= 4:4.5.3).
    skype depends on libqt4-network (>= 4:4.8.0).
    skype depends on libqt4-xml (>= 4:4.5.3).
    skype depends on libqtcore4 (>= 4:4.7.0~beta1).
    skype depends on libqtgui4 (>= 4:4.8.0).
    skype depends on libqtwebkit4 (>= 2.1.0~2011week13).
    
  2. step two (trying fix broken) :

    sudo apt-get install -f
    
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    Correcting dependencies... Done
    The following extra packages will be installed:
      libapache2-mod-php5filter
    Suggested packages:
      php-pear
    The following packages will be REMOVED:
      libapache2-mod-php5 php5-cli skype:i386
    The following NEW packages will be installed:
      libapache2-mod-php5filter
    0 upgraded, 1 newly installed, 3 to remove and 3 not upgraded.
    1 not fully installed or removed.
    Need to get 0 B/2,663 kB of archives.
    After this operation, 44.9 MB disk space will be freed.
    

Here my main concern is the way its removing my LAMP related files e.g.:

The following packages will be REMOVED:
libapache2-mod-php5 php5-cli skype:i386

I need a way to install skype without upsetting other installed applications.

The sudo apt-get install -f just removes and does not fixes the dependencies.

I'll appreciate if someone write step-wise commands for the installation of skype and while keeping LAMP intact, and explain why the apache and skype are colliding .

2

1. Why doesn't apt-get -f install fix my issue?

In a sense the sudo dpkg -i skype-debian_4.1.0.20-1_i386.deb is installing a package in a broken state into your system, and the sudo apt-get install -f is an attempt to try and get apt to resolve your now broken setup by installing any missing dependency libraries.

The major drawback with this approach is that if this broken package requires dependencies that apt can't resolve, then this package becomes the problem and will get removed.

Also packages that you may want or need for some other application, might be casualties and get removed, in order to resolve a potential conflict with libraries that your broken package needs.

Doing package installations this way is problematic. What works for one may not work for another because either:

  1. the .debs in the PPA repositories you have have been bumped to newer versions which no longer resolve for this broken installed app.
  2. you have slightly different PPAs setup on your system than someone else.
  3. differences in architectures 32-bit vs. 64-bit and/or differing architectures (for eg. ARM vs. i686).

If you really want to do the installation this way then I would suggest one of the following methods.

Method #1 - do it manually

Manually remove the packages that apt has deemed as necessary to resolve your broken system, but make note of their names so that you can put them back in later.

Once these packages have been removed, I would then attempt to run the sudo apt-get install -f again until it appears like it's acutally installing the missing .deb packages for skype.

Method #2 - undo packages in a "hold" status

It' possible that there is a package installation that's basically in a wedged state. This is called a "hold" status in apt terminology. You can detect if this is your situation with the following command:

sudo dpkg --get-selections | grep hold

If any packages show up in a "hold" status you can change them to "installed" using this command:

sudo echo "package_name install"|dpkg --set-selections

Then try running install -f again:

sudo apt-get install -f

Found the above technique on askubuntu in the following Q&A's:

Method #3 - use aptitude

If packages with a "hold" status are encountered, an alternative method to dealing with them is to try and let aptitude resolve them, instead of the apt-get install -f. Aptitude is reported to be more persistent in resolving packaging/dependency issues vs. apt-get.

For the packages that exhibit a "hold" status:

sudo aptitude install <package name>

Found the above technique on askubuntu in the following Q&A:

2. An alternative way using Dynamic tarball

Rather than attempt to install the .deb version of skype I think I would go with the Dynamic version (last one on the pulldown on the Skype website). This version can be put in either your home directory or maybe even /opt/skype. The dynamic version has all the skype software self contained.

You'll still need to have packages installed for libraries that it needs, but this should allow you to leave your Apache/PHP setup intact.

Contents of Dynamic Skype's tarball

$ tar jxvf skype-4.1.0.20.tar.bz2 
skype-4.1.0.20/
skype-4.1.0.20/third-party_attributions.txt
skype-4.1.0.20/LICENSE
skype-4.1.0.20/lang/
skype-4.1.0.20/lang/skype_es.ts
skype-4.1.0.20/lang/skype_es.qm
skype-4.1.0.20/lang/skype_pl.qm
skype-4.1.0.20/lang/skype_it.ts
skype-4.1.0.20/lang/skype_zh_t.qm
...
...

Once unpacked cd to skype directory:

cd skype-4.1.0.20

And run skype from there:

./skype

If you're missing dependencies you'll either encounter an error when skype starts up or you can get a sense of what libraries the skype executable might need using the ldd command:

$ ldd skype
    linux-gate.so.1 =>  (0xf7751000)
    libasound.so.2 => /lib/libasound.so.2 (0xf7621000)
    libXv.so.1 => /usr/lib/libXv.so.1 (0xf761c000)
    libXss.so.1 => /usr/lib/libXss.so.1 (0xf7619000)
    librt.so.1 => /lib/librt.so.1 (0x461b9000)
    libdl.so.2 => /lib/libdl.so.2 (0x46076000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0x464c0000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0x46c1c000)
    libQtDBus.so.4 => /usr/lib/libQtDBus.so.4 (0xf75a1000)
    libQtWebKit.so.4 => /usr/lib/libQtWebKit.so.4 (0xf622d000)
    libQtXml.so.4 => /usr/lib/libQtXml.so.4 (0xf61ec000)
    libQtGui.so.4 => /usr/lib/libQtGui.so.4 (0xf5753000)
    libQtNetwork.so.4 => /usr/lib/libQtNetwork.so.4 (0xf562c000)
    libQtCore.so.4 => /usr/lib/libQtCore.so.4 (0xf5396000)
    libpthread.so.0 => /lib/libpthread.so.0 (0x46059000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x4a9d8000)
    libm.so.6 => /lib/libm.so.6 (0x4607d000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x4623a000)
    libc.so.6 => /lib/libc.so.6 (0x45ecd000)
    /lib/ld-linux.so.2 (0x45eac000)
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0x465f9000)
    libdbus-1.so.3 => /lib/libdbus-1.so.3 (0x4a98b000)
    libXrender.so.1 => /usr/lib/libXrender.so.1 (0x4645c000)
    libsqlite3.so.0 => /usr/lib/libsqlite3.so.0 (0xf5301000)
    libphonon.so.4 => /usr/lib/libphonon.so.4 (0xf528e000)
    libpulse-mainloop-glib.so.0 => /usr/lib/libpulse-mainloop-glib.so.0 (0xf5289000)
    libpulse.so.0 => /usr/lib/libpulse.so.0 (0xf5242000)
    libglib-2.0.so.0 => /lib/libglib-2.0.so.0 (0x460a9000)
    libXi.so.6 => /usr/lib/libXi.so.6 (0x46bfd000)
    libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x46bf3000)
    libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x466dc000)
    libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x46c34000)
    libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x466d7000)
    libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x42809000)
    libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x42840000)
    libgthread-2.0.so.0 => /lib/libgthread-2.0.so.0 (0x461e1000)
    libpng12.so.0 => /usr/lib/libpng12.so.0 (0x46467000)
    libz.so.1 => /lib/libz.so.1 (0x461c4000)
    libgobject-2.0.so.0 => /lib/libgobject-2.0.so.0 (0x461e8000)
    libSM.so.6 => /usr/lib/libSM.so.6 (0x46e21000)
    libICE.so.6 => /usr/lib/libICE.so.6 (0x46e91000)
    libssl.so.10 => /usr/lib/libssl.so.10 (0x4e0d3000)
    libcrypto.so.10 => /lib/libcrypto.so.10 (0x466e3000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0x463e9000)
    libqzeitgeist.so.0 => /usr/lib/libqzeitgeist.so.0 (0xf521d000)
    libQtTest.so.4 => /usr/lib/libQtTest.so.4 (0xf51f9000)
    libpulsecommon-0.9.21.so => /usr/lib/libpulsecommon-0.9.21.so (0xf51a6000)
    libXtst.so.6 => /usr/lib/libXtst.so.6 (0xf51a0000)
    libwrap.so.0 => /lib/libwrap.so.0 (0xf5197000)
    libsndfile.so.1 => /usr/lib/libsndfile.so.1 (0xf5125000)
    libasyncns.so.0 => /usr/lib/libasyncns.so.0 (0xf511f000)
    libexpat.so.1 => /lib/libexpat.so.1 (0x46619000)
    libuuid.so.1 => /lib/libuuid.so.1 (0x46e2b000)
    libgssapi_krb5.so.2 => /lib/libgssapi_krb5.so.2 (0x4e08d000)
    libkrb5.so.3 => /lib/libkrb5.so.3 (0x4e12d000)
    libcom_err.so.2 => /lib/libcom_err.so.2 (0x4748f000)
    libk5crypto.so.3 => /lib/libk5crypto.so.3 (0x4dfd7000)
    libresolv.so.2 => /lib/libresolv.so.2 (0x4627a000)
    libnsl.so.1 => /lib/libnsl.so.1 (0xf5102000)
    libFLAC.so.8 => /usr/lib/libFLAC.so.8 (0xf50c5000)
    libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0xf4f4f000)
    libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0xf4f25000)
    libogg.so.0 => /usr/lib/libogg.so.0 (0xf4f1f000)
    libkrb5support.so.0 => /lib/libkrb5support.so.0 (0x4e0c7000)
    libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x47495000)
    libselinux.so.1 => /lib/libselinux.so.1 (0x46259000)

The above list can be a little daunting but you'll basically need to work through it in an iterative fashion confirming that each library is installed. If not then use apt-cache search <.so file name> to figure out what package provides that library.

For binary packages from non-opensource types of projects like Skype I typically find this approach easier to deal with.

If you do run into an issue where skype wants a particular version of a library, you can either compile them yourself and put them alongside skype in /opt/libs. You'll need to set an environment variable LD_LIBRARY_PATH=/opt/libs/lib... so that the dynamic library loader knows to load them from this location for skype, rather than the normal locations.

static builds of skype

Skype used to provide static builds which were a snap to use since everything was included, but according to this thread: Static binaries for Skype 4.1?, it looks like they've decided to drop this offering.

Also in that thread is a comment that Debian 7.0 multiarch has issues.

To support that last statement: Debian 7.0 (multiarch) does not work on amd64.

References

  • I really appreciate your detail answer and an alternate way.Before going to this way could you help done this way forums.linuxmint.com/viewtopic.php?t=122296&f=190#p671564 , I run dpkg -i , and then apt-get -f install, the later one removes 'skype:i386' instead of installing dependencies. My foreign architecture is : i386 ,ran apt update several times. Just to mention I have removed LAMP altogether. – sakhunzai May 11 '13 at 17:24
  • Check out the updates I've made to the answer. Let me know if you need more guidance and/or info. I'll be out of the house for a while so don't expect a quick response 8-). – slm May 11 '13 at 18:02
  • plz check the logs paste.debian.net/3639 – sakhunzai May 11 '13 at 18:29
  • Checked the logs, I've updated the answer with some things to try. – slm May 12 '13 at 2:02
  • thanks I went through all the the logs you send. Its seems I added the architecture later after adding cario-dock etc.On fresh VM instance I tired your suggestions and it works as expected and described. – sakhunzai May 13 '13 at 14:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.