如何在64位安装上使用apt-get安装32位软件包?

我试图让一个游戏运行起来。但是我正在运行的是amd64架构的Lucid Lynx,而游戏的二进制文件是32位的(没有64位版本可用,也没有人想重新编译)。它缺少libfsml-windows1.5来运行,使用apt-get获取失败。所以我不得不手动下载i386的软件包并强制安装它们。(不,这不是ia32libs的一部分。)
现在我想知道是否有一种自动化的方式可以在64位安装上下载x86的软件包。apt-get -o apt::architecture=i386并没有起作用。(如果你切换架构模式,它找不到软件包或者假设现有软件包存在缺失依赖关系。)
是否有另一种工具可以自动化这个过程?可能是一种将i386软件包下载并隐式地将其中的库文件重定位到/usr/lib32/的工具?

我只能想到使用apt-get install来安装ia32-libs。 - Jamess
可能不会(考虑到它的年代 - 在12-04之前需要ia32-libs)。 - guntbert
4个回答

Ubuntu 11.10或更高版本的解决方案

自从Ubuntu 11.10以后,不再需要使用getlibs或其他解决方法。64位系统上的软件包系统现在能够同时管理32位和64位库。现在你甚至可以轻松安装完整的应用程序及其所有依赖项!

只需在要安装的软件包名称后面添加:i386

例如,我需要安装Java 7的32位版本,只需运行以下命令即可安装(连同所有依赖项):

sudo apt-get install openjdk-7-jdk:i386

1根据特定的Ubuntu版本,这应该是正确的答案。 - Peter Butkovic
5你是不是忘了 dpkg --add-architecture i386 这个命令,就像这个答案中所示的那样? - Jonathon Reinhart
@JonathonReinhart 不,似乎不需要这样做。我刚刚在我的Ubuntu 16.04系统上运行了dpkg --print-architecture命令,它打印出了amd64。然后,我按照我的答案所描述的成功安装了一个i386包。 - Chriki
1@Chriki 这在Ubuntu 14上是100%必需的。如果你在尝试apt-get update时没有添加架构,Apt甚至不会检查i386软件包。 - John Hamilton

是的,拥有一个chroot环境是正确的选择,它甚至允许您在现有的Ubuntu旁边同时安装之前的版本。
操作很简单;
sudo apt-get install debootstrap schroot

编辑/etc/schroot/schroot.conf并添加一个新的schroot配置:
[lucid32]
type=directory
description=Ubuntu Lucid 32bit
directory=/chroot/lucid32
users=your-user
root-groups=root
personality=linux32

然后安装 chroot 环境:
sudo debootstrap --variant=buildd --arch i386 lucid /chroot/lucid32 http://nl.archive.ubuntu.com/ubuntu

然后使用以下命令进入chroot环境:
schroot -c lucid32

或者对于根任务,例如:运行apt-get任务:
sudo schroot -c lucid32

我已经有两个chroot设置了,但是考虑到手头的任务有点过度了。不过还是谢谢你的指导! - mario

傻瓜我。这确实是一个已解决的问题。 getlibs 正如其名称所示,它只能安装库,而不能安装应用程序。但是对于在x86-64系统上添加32位库来说,它的工作非常出色。它自动下载并安装到/usr/lib32(假设它在内部进行路径替换)。

ppa:jcollins/jaminppa
https://launchpad.net/~jcollins/+archive/jaminppa/+packages

一些文档(getlibs似乎没有当前的主页):
http://ubuntuforums.org/showthread.php?t=474790
https://help.ubuntu.com/community/32bit_and_64bit
http://www.dedoimedo.com/computers/ubuntu-utils.html
http://wiki.ubuntuusers.de/getlibs(德语)

1为什么Ubuntu论坛要求登录才能查看那个页面呢?:( 幸好还有Stackexchange! - Joril
3哦,那个注册破事是新的。而且,过于冗余了。 - mario
注册后:此处不允许进入 很抱歉,您没有权限访问这个页面或者此页面的信息未与您共享。 - exic
1不存在! - Anwar


谢谢这个主意。已经有了一个 /hardy 和 /maverick 的 chroot,但是也有64位的版本。对于这个问题来说似乎有点过度吧,不过确实值得考虑。 - mario