= Introduction = ||<
><>|| Multiarch is a new approach to running programs compiled for one computer architecture on another, particular i386<->amd64 (see [[https://help.ubuntu.com/community/32bit_and_64bit|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 [[https://launchpad.net/ubuntu/precise/amd64/ia32-libs|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 = * SoftwareManagement - a starting point for installing software = External Links = * [[https://wiki.ubuntu.com/MultiarchSpec|the MultiarchSpec for Ubuntu]] has more information on the architectural details * [[http://wiki.debian.org/Multiarch/|Debian documents on Multiarch]]