为什么 Skype 有这么多 32 位依赖项?

为什么 Skype 有这么多 32 位依赖项?

安装 Skype 时,无论是通过运行(启用合作伙伴存储库后):

sudo apt-get install skype

或者.deb从 Skype 网站获取的文件进行安装。我总是发现需要安装大量 32 位依赖项:

  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

这是为什么?我正在运行带有 GNOME 3.18 的 64 位 Ubuntu GNOME 15.10。

答案1

Skype 是 32 位应用程序,32 位应用程序需要 32 位库。

如果应用程序需要许多库,而且它是 32 位的,显然需要许多32 位库。

答案2

因为你的系统是 64 位系统,并且几乎没有默认安装 32 位软件包/库

在 64 位系统上,32 位软件包与 64 位软件包相反,只能利用一些已经安装的软件包/库:默认安装的软件包和手动安装的软件包/库

在 64 位系统上,几乎所有这些包/库的 64 位版本都默认安装。

如果您需要证明,请以与体系结构无关的方式将要安装的软件包列表与系统中已安装的软件包列表进行比较(dpkg-query -f '${Binary:package}\n' -W列出系统中安装的所有软件包;sed -n '/:i386/!s/:amd64//p'仅打印不以 结尾的行:i386并删除尾随的行:amd64(如果存在);“列表”包含您问题中的软件包列表,但不包含尾随的:i386):

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

您将看到要安装的与体系结构无关的软件包列表(即您尚未安装 32 位 / 64 位版本的软件包列表)将缩小到类似于以下内容:

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

答案3

更简单的答案是,Linux Skype 是很久以前编写的,目前正在维护,而不是重写。将来的某个时候,32 位用户将很少或没有了,那时他们可能会重写。

长远来看,您可以相当容易地将 32 位库添加到您的系统并运行 32 位应用程序,而 32 位用户无法执行相反的操作,因此微软从头到尾将 Skype 打造为 32 位,而不是分两个版本。

相关内容