1. Why doesn't apt-get -f install fix my issue?
In a sense the
sudo dpkg -i skype-debian_18.104.22.168-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:
- the .debs in the PPA repositories you have have been bumped to newer versions which no longer resolve for this broken installed app.
- you have slightly different PPAs setup on your system than someone else.
- 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
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.
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-22.214.171.124.tar.bz2
Once unpacked cd to skype directory:
And run skype from there:
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 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)
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
/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