Introduction

Multiarch is a new approach to running programs compiled for one computer architecture on another, particular i386<->amd64 (see 32bit and 64bit for an explanation to these two architectures).

If Ubuntu is working, you should not have to concern yourself with the details of how it supports different computer architectures; just install the programs you like.

Installing

Most packages provided in Ubuntu repositories are available for both 32-bit (identified as "i386" on http://packages.ubuntu.com) and 64-bit ("amd64" on http://packages.ubuntu.com) and your computer only needs the packages for its architecture, but there are some programs that are only available for the "other" architecture, such as Wine and some browser plug-ins.

If you have any need for 32-bit programs on a 64-bit system, then lots of library packages need to be installed for 32-bit support (denoted by "(i386)" in the package name) in addition to their native 64-bit versions. Multi-arch is a new way of handling this developed by Debian. The need for 32-bit program support on a 64-bit system is indicated by a file /etc/dpkg/dpkg.cfg.d/multiarch containing foreign-architecture i386. It is unwise to disable this unless you know what you are doing.

One package for 32-bit shared library support on a 64-bit system is named ia32-libs, which included lots of 32-bit versions of shared libraries. Starting with 12.04 (precise pangolin) this is a transitional package to the ia32-libs-multiarch package which depends on numerous Multi-arch versions of libraries that used to be in ia32-libs. According to its amd64 Launchpad page if no other packages are installed that depend on ia32-libs, you can remove it.

Upgrading

If you upgrade a 64-bit system to 12.04 (Precise Pangolin), you are likely to have a combination of libraries in the "old" /usr/lib and /usr/lib32 directories and the new /usr/lib/x86_64-linux-gnu and usr/lib/i386-linux-gnu/ directories.

Determining dependencies

In 12.04, the package management tools have not fully been updated to be multiarch-aware. If you have a 64-bit system, you can ask questions to the apt and dpkg package management software about the 32-bit versions of packages by appending :i386 to the package name. For example, enter the command dpkg-query -s SomePackageName:i386 in a terminal, and look for "State: installed" or "State: not installed" in the output to see if the 32-bit version of a package is installed . The output of dpkg-query -s is usually otherwise identical for the two architectures except for the Uncompressed Size line.

You can also enter aptitude why SomePackageName:i386 to get an explanation of why a 32-bit version of a package is installed. For example, were you to wonder why the 32-bit version of the bluez-alsa Bluetooth sound support package is needed, you could enter the commands in a terminal

% aptitude why bluez-alsa:i386
i   ia32-libs           Depends  ia32-libs-multiarch
i A ia32-libs-multiarch Provides ia32-libs-multiarch
i A ia32-libs-multiarch Depends  bluez-alsa

% aptitude why ia32-libs
i   wine1.3 Depends ia32-libs (>= 1.6)

So it's one of the many packages pulled in by ia32-libs, and in this example the wine package requires ia32-libs.

See Also

External Links

MultiArch (last edited 2013-07-29 07:08:13 by cypressyew)