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


16

安装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是一个多体系结构应用程序,而不具有专用的64位二进制文​​件。
汤碗

Answers:


44

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

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


28

因为您的系统是64位系统,并且默认情况下几乎没有安装32位程序包/库

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

在64位系统上,默认情况下几乎安装了所有这些软件包/库的64位版本。

如果你想证明,比较软件包的列表被安装到安装在您的系统的体系结构无关的方式包的列表(dpkg-query -f '${Binary:package}\n' -W安装在系统列出了所有的包; sed -n '/:i386/!s/:amd64//p'仅打印线不结束:i386,并删除尾随:amd64如果当前;“ list”包含您问题中的软件包列表,不带尾随: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

1

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

从长远来看,您可以相当轻松地将32位库添加到系统中并运行32位应用程序,而32位用户则不能这样做,因此Microsoft将Skype从头到尾制作成了32位,而不是两个版本。


5
这根本不正确。这些都不是真实的事实,我很想知道您从哪里获得资源。
大卫

1
@PeterCordes:Мicrosoft公司于2011
BartekChom

3
@BartekChom:感谢您所做的更正,并重新发布了经过编辑的评论:是的,Skype版本令人讨厌地是32位二进制文​​件,仅是因为它们不会使开发人员花时间制作64位版本。这不是因为Linux端口是二等公民,而是因为他们甚至没有64位Windows版本。大概他们的代码库不是64位的,或者他们有一些手工调整的asm,不想移植到64位。也许它们的数据结构使用很多指针,所以64位版本会更慢。也许64位版本会比较好,但是它们很烂,不会成功。
彼得·科德斯

2
@David Cole:Skype的“当前” Linux版本是4.3,最近一次更新是在2014年6月。Windows和OSX客户端现在是7.X版本,而不是4.X版本。我认为将其称为“维护的”而不是“积极开发的”是完全公平的。即将发布的功能的新公告通常会提及Windows和OSX支持,但不会提及Linux(因为大多数最新功能尚未添加到Skype Linux客户端中。请更详细地说明不正确的内容或不是“实际情况”) “
。– Forge
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.