112

The ia32-libs package is no longer present in Ubuntu 12.04 repositories for a 64bit system. Are there any available replacement packages available for download?

Luis Alvarado
  • 211,503
Ubuntuser
  • 9,816
  • Related http://askubuntu.com/questions/359156/how-do-you-run-a-32-bit-program-on-a-64-bit-version-of-ubuntu/359184#359184 – Braiam Dec 22 '13 at 01:41
  • 2
    +1, was just going to ask exactly the same question. SO has really great question suggestions! – ulidtko Mar 05 '15 at 09:01

6 Answers6

107

The ia32-libs package was a hack to get 32-bit packages installed on a 64-bit installation. Since Ubuntu version 11.10 (Oneiric), Multi Arch has been added. One of the objectives for it is removing the ia32-libs package. Instead, you have to install the 32-bit libraries of a package with:

sudo apt-get install package-name:i386

You don't have to worry about this for packages in the standard repositories (e.g. the wine package). For external software, it's a bit more difficult because you have to find the dependencies manually. In that case, use your favorite search engine to find which libraries you need.

It seems that ia32-libs still exist, but merely as a convenience package to include common 32-bit libraries. This package now uses Multi Arch to install the 32-bit packages correctly.

blade19899
  • 26,704
Lekensteyn
  • 174,277
  • 19
    Well, how is one suppose to find all the dependencies and first install :i386 of those ? – user117 Sep 16 '12 at 17:52
  • 12
    @wingman Run ldd, passing a path to the binary as argument. If the output contains a line like libz.so.1 => not found, then you need to find libz.so.1. You can use http://packages.ubuntu.com/ or apt-file search to find the package containing that file. In the example I gave, you need to install zlib1g:i386. – Lekensteyn Sep 16 '12 at 21:10
  • 1
    i am in a computer with ubuntu 10.10. following some tutorial on android development i have to install the ia32-libs. your answer talk about 11.10, but for this computer? what i have to do? – nkint Oct 25 '12 at 12:16
  • 1
    @nkint 10.10 is not supported anymore. If you want to proceed, you need to change your package sources. In 10.10 you need to install ia32-libs. But even then there is no guarantee that the android SDK works with that. – Lekensteyn Oct 26 '12 at 13:18
  • ➜ ~ sudo apt-get install package-name:i386 Reading package lists... Done Building dependency tree
    Reading state information... Done E: Unable to locate package package-name
    – Felipe Mar 29 '15 at 00:20
  • 1
    @FelipeMicaroniLalli You need to replace package-name by the actual name. Use ldd to figure out, see the second comment above. – Lekensteyn Mar 29 '15 at 08:47
  • 1
    @Lekensteyn Thanks so much for the apt-file tip. I really wonder why this is not installed by default. Had to install it manually. All those past years, I was using the 'Files' branch at http://pkgs.org to find the whereabouts of a particular library file. – syntaxerror Dec 18 '15 at 17:39
  • You will need the libc6-x32, to get the 32 bit loader which ldd uses to supply the list of called 32 bit libraries. Without that loader (/libx32/ld-linux-x32.so.2), ldd will simply give up and falsely claim that the 32 bit executable is not an executable. (bug 1616609). – ubfan1 Oct 09 '17 at 00:15
46

Ubuntu 13.10

What happened?

The ia32-libs package has been completely replaced by lib32z1 lib32ncurses5 lib32bz2-1.0. This should not be a problem because its functionality is still there, just in other packages. However, we do not live in an ideal world where everyone maintains their packages and all software is FLOSS, so some packages still depend on the ia32-libs.

How can I install package x that depends on ia32-libs

There are 2 ways:

  1. You can repackage it manually so it does not depend on the ia32-libs anymore. (preferred)
  2. You can install ia32-libs from the Ubuntu 13.04 (Raring Ringtail) repository (not preferred at all!, only if first method does not work)

1. Repackage old packages

I will use the citrix receiver as an example, but you can use this method for any .deb package:

First, download the citrix receiver .deb package from their website and make a temporary directory do do the hacking in.

mkdir ica_temp

Extract the package

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

Open the file in gedit (or your favorite editor)

sudo -H gedit ica_temp/DEBIAN/control

Find the line that starts with Depends:.... remove ia32-libs and add lib32z1 lib32ncurses5 lib32bz2-1.0

Rebuild the modified package

dpkg -b ica_temp icaclient-modified.deb

And install it

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

Installing the citrix receiver requires some hacking too. You can find the full installation instructions on the Ubuntu wiki

You can do this with any old .deb package that still depends on ia32-libs.

2. Install ia32-libs from raring repository

Please note that is it very bad practice to install old packages! Sadly, for some binary installers, you do not have any other choice.

You can download the ia32-libs package from the raring repository. Download it and install it manually, then the dependencies should be resolved.

Merlijn Sebrechts
  • 7,394
  • 1
  • 42
  • 70
  • What is "FOS"? I tried: http://acronyms.thefreedictionary.com/FOS – Elliptical view Aug 03 '16 at 18:32
  • 1
    @Elipticalview "Free and Open Source". Changed it to FLOSS (Free/Libre and open source software), which is more common. – Merlijn Sebrechts Aug 04 '16 at 06:42
  • "Repackage old packages" works mostly for Ubuntu 16.04 Xenial - you just need to add a few adaptions to the package-names, usually adding the ":i386"-namespace to the end of the package-names. Some of the packages have different names too, like libbz2-1.0:i386 – Christian Benke Mar 26 '17 at 10:10
6

I read that you are supposed to install the ia32-libs-multiarch package instead. However it didn't work for me and I get this error

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

The solution which worked for me was to install the following packages:

sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386
jokerdino
  • 41,320
ubarb
  • 61
4

If you get that error, try:

sudo apt-get update

Then try it again:

sudo apt-get install ia32-libs

I just did a fresh install of 12.04, that package is still available in the repositories. In fact, I got that error myself before I ran update. Afterwards, it worked fine.

ASCPL
  • 49
1

I believe this specific use case was replaced with the packages "lib32z1 lib32ncurses5 lib32bz2-1.0 lib32asound2", which is probably a more specific and useful answer than saying "you can use multi-arch".

saurik
  • 119
  • 2
    What? There's no specific use case in this question. – gertvdijk Jan 24 '13 at 21:58
  • 1
    @gertvdijk: The package itself represents a limited use case; for a more general purpose you can multi-arch, but for people who were using this one specific package before, it seems to have been replaced with "lib32z1 lib32ncurses5 lib32bz2-1.0 lib32asound2", which you can install without having to use multi-arch: that covers the same use cases as the previous package. In essence, I found these answers unhelpful, as multi-arch was overkill for the reason that ia32-libs existed, was surprised there wasn't a more direct drop-in replacement, and wasn't disappointed when I researched this further. – saurik Feb 04 '13 at 07:10
  • This was the simplest answer that solved a similar problem for me. Even though the libs indicated doesn't seem to have anything to do with starting up a general binary it did work. – Per Knytt Nov 20 '13 at 13:18
-2

I installed the ia32-libs like this (I run Ubuntu 13.04 Raring Ringtail on a 64 bit machine):

Check own architecture:

$ dpkg --print-architecture

Check if a foreign architecture is installed:

$ dpkg --print-foreign-architectures

Depending on the results of the two commands above, the following three commands might work (took a long time to process in my case):

$ sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install ia32-libs
Raja G
  • 102,391
  • 106
  • 255
  • 328
LivioM
  • 11
  • 4
    I get: 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 – foobarbecue Nov 08 '13 at 00:38