How do I apt-get a 32-bit package on a 64-bit installation? [duplicate]
I was trying to get a game working. But I have Lucid Lynx on amd64 running while the game binary was 32 bit (no 64 bit version available and nobody was in the mood for recompiling). It lacked libfsml-windows1.5 to run, and apt-getting it failed. So I have to manually download the i386 packages and force install them. (No, not part of ia32libs.)
Now I'm wondering if there is an automated way to have x86 packages downloaded at least on a 64-bit installation. apt-get -o apt::architecture=i386
did not work. (If you switch the architecture mode it doesn't find the package or assumes missing dependencies for existing packages all around.)
Is there another tool to automate that? Possibly one which downloads the i386 packages and relocates contained libraries into /usr/lib32/ implicitely?
Solution for Ubuntu 11.10 or Later
Since Ubuntu 11.10 it shouldn’t be necessary anymore to use getlibs or some other workaround. The package system on 64 bit systems is now able to manage 32 bit libraries in parallel to the 64 bit libraries. You can even easily install complete applications with all their dependencies now!
Simply add :i386
to the name of the package you would like to install.
For example, I needed a 32 bit version of Java 7 and could install it (along with all its dependencies) simply by running:
sudo apt-get install openjdk-7-jdk:i386
Yes, having a chroot environment is the way to go, it allows even to have previous releases side by side your existing Ubuntu.
It is simple to do it;
sudo apt-get install debootstrap schroot
Edit /etc/schroot/schroot.conf
and add a new schroot config:
[lucid32]
type=directory
description=Ubuntu Lucid 32bit
directory=/chroot/lucid32
users=your-user
root-groups=root
personality=linux32
Then install the chroot environment:
sudo debootstrap --variant=buildd --arch i386 lucid /chroot/lucid32 http://nl.archive.ubuntu.com/ubuntu
Then enter the chroot with:
schroot -c lucid32
Or for root tasks e.g.: run apt-get
tasks:
sudo schroot -c lucid32
Silly me. That's indeed a solved problem.
getlibs
As the name implies it can only install libraries, not applications. But it works exceptionally well for bolting 32-bit libraries onto a x86-64 system. It automates the download and installation into /usr/lib32 (let's assume it does the path substitution internally.)
ppa:jcollins/jaminppa
https://launchpad.net/~jcollins/+archive/jaminppa/+packages
Some documentation (getlibs doesn't seem to have a current homepage):
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 (in german)