Why are there so many 32-bit dependencies for Skype?

When installing Skype, whether it's by running (after enabling the partner repository):

sudo apt-get install skype

Or installing it from the .deb file that you get from the Skype website. I always find that there are always a large amount of 32-bit dependencies to be installed:

  gstreamer1.0-plugins-base:i386 libasound2:i386 libasound2-plugins:i386
  libasyncns0:i386 libaudio2:i386 libavahi-client3:i386
  libavahi-common-data:i386 libavahi-common3:i386 libcdparanoia0:i386
  libcups2:i386 libdbus-1-3:i386 libdbusmenu-qt2:i386 libflac8:i386
  libfontconfig1:i386 libfreetype6:i386 libglib2.0-0:i386 libglu1-mesa:i386
  libgmp10:i386 libgnutls-deb0-28:i386 libgssapi-krb5-2:i386
  libgstreamer-plugins-base1.0-0:i386 libgstreamer1.0-0:i386 libhogweed4:i386
  libice6:i386 libicu55:i386 libjack-jackd2-0:i386 libjbig0:i386
  libjpeg-turbo8:i386 libjpeg8:i386 libjson-c2:i386 libk5crypto3:i386
  libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 liblcms2-2:i386
  libmng2:i386 libmysqlclient18:i386 libnettle6:i386 libogg0:i386
  liborc-0.4-0:i386 libp11-kit0:i386 libpng12-0:i386 libpulse0:i386
  libqt4-dbus:i386 libqt4-declarative:i386 libqt4-network:i386
  libqt4-opengl:i386 libqt4-script:i386 libqt4-sql:i386 libqt4-sql-mysql:i386
  libqt4-xml:i386 libqt4-xmlpatterns:i386 libqtcore4:i386 libqtdbus4:i386
  libqtgui4:i386 libqtwebkit4:i386 libsamplerate0:i386 libsm6:i386
  libsndfile1:i386 libspeexdsp1:i386 libsqlite3-0:i386 libssl1.0.0:i386
  libtasn1-6:i386 libtheora0:i386 libtiff5:i386 libvisual-0.4-0:i386
  libvisual-0.4-plugins:i386 libvorbis0a:i386 libvorbisenc2:i386 libwrap0:i386
  libxi6:i386 libxml2:i386 libxrender1:i386 libxslt1.1:i386 libxss1:i386
  libxt6:i386 libxv1:i386 skype-bin:i386 sni-qt:i386

Why is this? I am running 64-bit Ubuntu GNOME 15.10 with GNOME 3.18.


Skype is a 32-bit application and 32-bit applications need 32-bit libraries.

If an application needs many libraries and it is a 32-bit one it obviously needs many 32-bit libraries.


Because your system is a 64-bit system, and has almost no 32-bit packages / libraries installed by default.

On a 64-bit system, 32-bit packages, contrarily to 64-bit packages, can take advantage only of a few already installed packages / libraries: those few installed by default and those installed manually.

On a 64-bit system the 64-bit version of almost all those packages / libraries is installed by default.

If you want proofs, compare the list of packages to be installed to the list of packages installed in your system in an architecture-agnostic way (dpkg-query -f '${Binary:package}\n' -W lists all the packages installed in your system; sed -n '/:i386/!s/:amd64//p' prints only the lines not ending with :i386 and removes a trailing :amd64 if present; "list" contains the list of packages in your question without the trailing :i386):

% comm -13 <(dpkg-query -f '${Binary:package}\n' -W | sed -n '/:i386/!s/:amd64//p' | sort) <(sort list)

You'll see that the architecture-agnostic list of packages to be installed (i.e. the list of packages you don't have installed in their 32-bit / 64-bit version already) will shrink to something similar to this:

libdbusmenu-qt2
libqt4-opengl
libqtwebkit4
skype-bin
sni-qt

A simpler answer is that Linux Skype was written quite some time ago and is being maintained, not rewritten, currently. At some point in the future, there will be few or no 32bit users left, and they might rewrite at that point.

A longer view is that you can fairly easily add 32bit libs to your system and run the 32bit app, while a 32bit user cannot do the reverse, so Microsoft made Skype 32bit from end to end rather than two releases.