ia32-libs软件包发生了什么?


Answers:


97

ia32-libs软件包是一种用于在64位安装中安装32位软件包的黑客。从Ubuntu 11.10(Oneiric)版本开始,添加了Multi Arch。其目的之一是取出ia32-libs包装。相反,您必须使用以下命令安装软件包的32位库:

sudo apt-get install package-name:i386

对于标准存储库中的wine软件包(例如,软件包),您不必为此担心。对于外部软件,这要困难一些,因为您必须手动查找依赖项。在这种情况下,请使用您喜欢的搜索引擎查找所需的库。

似乎ia32-libs仍然存在,但仅仅是作为一个方便程序包来包含常见的32位库。此软件包现在使用Multi Arch正确安装32位软件包。


17
那么,应该如何找到所有依赖项并首先安装这些依赖项?
user117 2012年

10
@wingman Run ldd,将二进制文件的路径作为参数传递。如果输出包含like之类的行libz.so.1 => not found,则需要查找libz.so.1。您可以使用packages.ubuntu.comapt-file search查找包含该文件的软件包。在我给出的示例中,您需要安装zlib1g:i386
Lekensteyn 2012年

1
我在使用ubuntu 10.10的计算机中。在一些关于android开发的教程之后,我必须安装ia32-libs。您的答案谈论的是11.10,但是对于这台计算机?我该怎么办?
nkint 2012年

1
不再支持@nkint 10.10。如果要继续,则需要更改软件包源。在10.10中,您需要安装ia32-libs。但是即使如此,也无法保证android SDK可以正常运行。
Lekensteyn

1
@FelipeMicaroniLalli您需要用package-name实际名称替换。用于计算ldd,请参阅上面的第二条注释。
Lekensteyn

43

Ubuntu 13.10

发生了什么?

ia32-libs软件包已完全替换为lib32z1 lib32ncurses5 lib32bz2-1.0。这应该不成问题,因为仅在其他软件包中,它的功能仍然存在。但是,我们并不是生活在每个人都维护其软件包并且所有软件都是FLOSS的理想世界中,因此某些软件包仍依赖于ia32-libs。

如何安装依赖ia32-libs的x软件包

有两种方法:

  1. 您可以手动将其重新打包,因此不再依赖它ia32-libs。(首选)
  2. 您可以从Ubuntu 13.04(Raring Ringtail)存储库中安装ia32-libs(根本不推荐使用!,仅当第一种方法不起作用时

1.重新包装旧包装

我将以citrix接收器为例,但是您可以对任何.deb包使用此方法:

首先,从他们的网站下载citrix接收器.deb软件包,并创建一个临时目录来进行黑客入侵。

mkdir ica_temp

提取包裹

dpkg-deb -x icaclient_13.0.0.256735_amd64.deb ica_temp
dpkg-deb --control icaclient_13.0.0.256735_amd64.deb ica_temp/DEBIAN

在gedit(或您喜欢的编辑器)中打开文件

sudo -H gedit ica_temp/DEBIAN/control

找到以开头的行Depends:...。删除ia32-libs并添加lib32z1 lib32ncurses5 lib32bz2-1.0

重建修改后的程序包

dpkg -b ica_temp icaclient-modified.deb

并安装

sudo dpkg -i icaclient-modified.deb
sudo apt-get install -f

安装citrix接收器也需要一些技巧。您可以在Ubuntu Wiki上找到完整的安装说明。

您可以使用仍然依赖ia32-libs的任何旧.deb软件包来执行此操作。

2.从raring存储库安装ia32-libs

请注意,安装旧软件包是非常不好的做法!可悲的是,对于某些二进制安装程序,您别无选择。

您可以从raring 存储库中下载ia32-libs软件包。下载并手动安装,然后应该解决依赖关系。


什么是“ FOS”?我尝试过:acronyms.thefreedictionary.com/FOS
椭圆视图

1
@Elipticalview“自由和开源”。将其更改为更常见的FLOSS(免费/自由和开源软件)。
Galgalesh

“重新打包旧软件包”主要适用于Ubuntu 16.04 Xenial-您只需要对软件包名称添加一些改编,通常在软件包名称的末尾添加“:i386”命名空间即可。一些软件包也具有不同的名称,例如libbz2-1.0:i386
Christian Benke

6

我读到您应该安装该ia32-libs-multiarch软件包。但是它对我不起作用,并且出现此错误

ia32-libs-multiarch:i386 : Depends: libgphoto2-2:i386 but it is not going to be installed.

对我有用的解决方案是安装以下软件包:

sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386

也适用于基本OS luna
camelCaseD 2014年

4

如果出现该错误,请尝试:

sudo apt-get update

然后再试一次:

sudo apt-get install ia32-libs

我刚刚进行了12.04的全新安装,该软件包仍在存储库中可用。实际上,在运行更新之前,我自己遇到了该错误。之后,它运行良好。


1

我相信这个特定的用例已被软件包“ lib32z1 lib32ncurses5 lib32bz2-1.0 lib32asound2”替换,这可能比说“您可以使用多体系结构”更具体,更有用。


2
什么?这个问题没有特定的用例。
gertvdijk

1
@gertvdijk:包本身代表有限的用例;为了更一般的目的,您可以使用多体系结构,但是对于以前使用此特定软件包的用户来说,它似乎已被替换为“ lib32z1 lib32ncurses5 lib32bz2-1.0 lib32asound2”,您可以在不使用多体系结构的情况下安装它:涵盖了与先前软件包相同的用例。从本质上讲,我发现这些答案无济于事,因为由于存在ia32-libs而导致多体系结构过大,令我惊讶的是没有更直接的替代产品,并且当我进一步研究时也不会感到失望。
saurik

这是为我解决类似问题的最简单答案。即使所指示的库似乎与启动通用二进制文件无关,但它确实有效。
Per Knytt

-2

我这样安装了ia32-libs(我在64位计算机上运行Ubuntu 13.04 Raring Ringtail):

检查自己的架构:

$ dpkg --print-architecture

检查是否安装了外部体系结构:

$ dpkg --print-foreign-architectures

根据上面两个命令的结果,以下三个命令可能会起作用(在我的情况下,要花很长时间来处理):

$ sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install ia32-libs

4
我得到:Package ia32-libs is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source However the following packages replace it: lib32z1 lib32ncurses5 lib32bz2-1.0
foob​​arbecue 2013年
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.