Translation(s): Brasileiro - English - Español - Français - Русский
Debian multiarch support
About
Multiarch is the term being used to refer to the capability of a system to install and run applications of multiple different binary targets on the same system. For example running a i386-linux-gnu application on an amd64-linux-gnu system. This example is the most common case, but many other working combinations are possible, such as armel and armhf.
Multiarch also simplifies cross-building, where foreign-architecture libraries and headers are needed on a system during building.
The existing proposals allow for the co-installation of libraries and headers for different architectures, but not (yet) binaries. So you can have either the i386 version of a binary, or the amd64 version, but not both (using conventional /bin paths). All the dependencies will be installed and available for the corresponding binary.
Multiarch is a significant and powerful development, and affects many processes and aspects of the system. The immediate practical effects are getting rid of the ia32-libs package, and allowing proper cross-architecture dependencies for cross-building.
It was first working in Ubuntu Natty and Debian Wheezy as well as used for the arm64 and mips64el port bootstraps.
Documentation
These documents define the implementation and should contain everything you need to know.
The case for multiarch
Why are we putting ourselves through all this pain? Isn't lib64 good enough for everyone?
Multiarch package manager specification
Main spec, detailing how files are laid out, how dependencies are defined, and how it works in combination with apt and dpkg
Multiarch/Tuples. The tuple schema used for multiarch paths (instead of GNU triplets).
Multiarch HOWTO for users
User-oriented info on how to use multiarch: configuration, installation, cross-building.
Multiarch conversion howto
A maintainer-oriented document detailing how you can convert your library package over for multiarch paths.
Bootstrapping The process/ordering/timeline for getting Debian unstable multiarched.
Issues for tools The conversion process can produce problems for tools using apt or dpkg and these can be documented here.
Multiarch Cross-building Specification
How multiarch is used for cross-building, including the extensions to support cross- build-dependencies
Linker and multilib behaviour
Explanatory details on the linker, gcc, libc and multilib. Not strictly speaking part of the multiarch spec, but it explains why it works, and clarifies discussion on future developments.
There are many other now-superceded documents. Links exist below for anyone who cares about the history of development.
Resources
IRC channel: #multiarch on irc.debian.org (OFTC).
There is no specific mailing list. Discussion is on lists/channels of affected packages and tools, such as dpkg, apt, gcc and general development lists (e.g. debian-devel)
Current Status
Debuting in Ubuntu Natty and Debian Wheezy.
Apt support is in Debian Squeeze and Ubuntu Maverick
Patches for gcc, eglibc, and a number of base libraries are available in Ubuntu natty.ch
Dpkg support is available starting from version 1.16.2.
Tuple tool: https://code.launchpad.net/~vorlon/+junk/multiarch-tools
Future development
Adding support for co-installable binaries is a probable future extension, but is not part of the scope of the current multiarch work (in order for it only to take 7 years, not 15).
Multiarch makes various things possible or even easy: cross architecture dependencies, cross-compilers in the archive, partial architectures. A meeting held at debconf11 discussed these issues. Multiarch/Debconf11MultiarchRelatedMinutes
History
The genesis of Multiarch has been (very!) long, and the proposal has changed significantly along the way. Here are some of the dates when things happened, with links to the documents written at the time. These have all been superceded by the docs reference above.
- 2011.02.22
Multiarch discussion at Emdebian meeting - Dpkg starts being multiarch aware.
- 2011.02.15
- 2010.09
- Multiarch-ready apt (v0.8) has made it into squeeze. Dpkg wasn't quite ready unfortunately.
- 2010.08.04
At Debconf10 we thrashed out a proposal for new ABI names which are necessary to implement multiarch correctly
- 2010.06.30
Discussion at the Linaro/Ubuntu sprint in Prague produced this very useful document on how compilers, paths, linkers, and loaders fit together:
- 2009.07.25
The info below is out of date and for historical value. See MultiarchSpec for the current cross-distro work.
- 2008.06.23
- Multiarch patches for dpkg 1.14.20 updated and uploaded to the Debian Multiarch Alioth Project patch tracker. Adds MA support except for dependency tracking.
- 2006.02
- FOSDEM Multiarch meeting
- 2005.07
- Multiarch talk at Debconf 5
- 2004.05
- Multiarch BOF at Debconf 4
Old Resources
- Forums
- Documents
Tuple Naming Proposal A proposal to implement a new tuple schema instead of GNU triplets for multiarch paths. The current tuple schema can be found at Multiarch/Tuples.
Multiarch Implementation Strategy Assessment pdf
dpkg2.0 design document pdf
- Talks
debconf4 - Multiarch: why and how, a proposal - June 1, 2004 - Tollef Fog Heen, Matt Taggart - Porto Alegre, Brazil html | pdf
debconf5 - Multiarch a proposal and an implementation - July 10, 2005 Tollef Fog Heen html Video: mpeg | ogg
debconf5 - Freezing HEL Over (dpkg2.0)- July 15, 2005 Scott James Remnant mpeg | ogg
- IRC discussions
an interesting -rpath thread
- the way to go
?needed preparations for etch dpkg