38

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?

2
  • I could think of only ia32-libs using apt-get install.
    – Jamess
    Mar 9, 2011 at 16:44
  • Probably not (seeing how old it is - before 12-04 ia32-libs was needed)
    – guntbert
    Dec 8, 2013 at 13:11

4 Answers 4

41

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
4
  • 1
    as of the particular ubuntu version, this should be the correct answer Nov 11, 2013 at 13:44
  • 5
    Aren't you missing dpkg --add-architecture i386, as shown in this answer? Jul 19, 2017 at 2:15
  • @JonathonReinhart No, this doesn’t seem to be required. I have just run dpkg --print-architecture on my Ubuntu 16.04 system and it printed amd64. Then I successfully installed an i386 package as described in my answer.
    – Chriki
    Jul 22, 2017 at 11:28
  • 1
    @Chriki this is 100% required on Ubuntu 14. Apt won't even check i386 packages if you didn't add the architecture when you try to apt-get update Sep 26, 2017 at 5:38
14

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
1
  • I already have two chroot setups, but considered it a bit overkill for the task at hand. But thanks for the howto!
    – mario
    Mar 9, 2011 at 22:10
8

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)

4
  • 1
    Why-oh-why does Ubuntuforums require to login to see that page? :( Thank goodness there's Stackexchange!
    – Joril
    Jul 4, 2012 at 8:10
  • 3
    Oh, that registration s**t is new. And. Overly. Redundant.
    – mario
    Jul 4, 2012 at 14:25
  • After registering: Not allowed here Sorry, you don't have permission to access this page or the information in this page is not shared with you.
    – exic
    Oct 6, 2012 at 17:02
  • 1
    Does not exists!
    – Anwar
    Oct 13, 2015 at 13:42
2

Force installing the 32 bit libs on a 64bit system will break your system. You need to setup a 32bit chroot. See http://ubuntuforums.org/showthread.php?t=24575.

1
  • Thanks for the idea. Already have a /hardy and /maverick chroot, but 64bit too. It seems a bit overkill for this issue, but it's certainly an option to keep in mind.
    – mario
    Mar 9, 2011 at 22:11

Not the answer you're looking for? Browse other questions tagged .