|
|
@@ -1,63 +0,0 @@
|
|
|
-Before we start with this topic: Note that MultiArch is not yet ready for
|
|
|
-prime time and/or for the casual user. The implementation is so far widely
|
|
|
-untested and only useful for developers of packagemanagment tools which
|
|
|
-use APT and his friends and maintainers of (upcoming) MultiArch packages.
|
|
|
-This README is especially NOT written for the casual user and is NOT a
|
|
|
-usage guide - you have been warned. It is assumed that the reader has
|
|
|
-at least a bit of knowledge about APT internals, dependency relations
|
|
|
-and the MultiArch spec [0].
|
|
|
-
|
|
|
-Note also that the toolchain isn't ready yet, e.g. while you can simulate
|
|
|
-the installation of MultiArch packages they will more sooner than later
|
|
|
-cause enormous problems if really installed as dpkg can't handle MultiArch
|
|
|
-yet (no, --force-{overwrite,architecture} aren't good options here).
|
|
|
-Other parts of the big picture are missing and/or untested too.
|
|
|
-You have been warned!
|
|
|
-
|
|
|
-
|
|
|
-The implementation is focused on NOT breaking existing singleArch-only
|
|
|
-applications and/or systems as this is the current status-quo for all
|
|
|
-systems. Also, many systems don't need (or can't make use of) MultiArch,
|
|
|
-so APT will proceed in thinking SingleArch as long as it is not explicitly
|
|
|
-told to handle MultiArch:
|
|
|
-To activate MultiArch handling you need to specify architectures you
|
|
|
-want to be considered by APT with the config list APT::Architectures
|
|
|
-(Insert architectures in order of preference).
|
|
|
-APT will download Packages files for all these architectures in the
|
|
|
-update step. Exception: In the sourcelist is the optionfield used:
|
|
|
-deb [ arch=amd64,i386 ] http://example.org/ experimental main
|
|
|
-(This optionfield is a NOP in previous apt versions)
|
|
|
-
|
|
|
-Internally in APT a package is represented as a PkgIterator -
|
|
|
-before MultiArch this PkgIterator was architecture unaware,
|
|
|
-only VerIterators include the architecture they came from.
|
|
|
-This is/was a big problem as all versions in a package are
|
|
|
-considered for dependency resolution, so pinning will not work in all cases.
|
|
|
-
|
|
|
-The problem is solved by a conceptional change:
|
|
|
-A PkgIterator is now architecture aware, so the packages
|
|
|
-of foobar for amd64 and for i386 are now for apt internal totally
|
|
|
-different packages. That is a good thing for e.g. pinning, but
|
|
|
-sometimes you need the information that such packages are belonging together:
|
|
|
-All these foobar packages therefore form a Group accessible with GrpIterators.
|
|
|
-Note that the GrpIterator has the same name as all the packages in this group,
|
|
|
-so e.g. apt-cache pkgnames iterates over GrpIterator to get the package names:
|
|
|
-This is compatible to SingleArch as a Group consists only of a single package
|
|
|
-and also to MultiArch as a Group consists of possible many packages which
|
|
|
-all have the same name and are therefore out of interest for pkgnames.
|
|
|
-
|
|
|
-
|
|
|
-Given all these internal changes it is quite interesting that the actual
|
|
|
-implementation of MultiArch is trivial: Some implicit dependencies and a few
|
|
|
-more provides are all changes needed to get it working. Especially noteworthy
|
|
|
-is that it wasn't needed to change the resolver in any way and other parts only
|
|
|
-need to be told about using GrpIterator instead of PkgIterator, so chances are
|
|
|
-good that libapt-applications will proceed to work without or at least only
|
|
|
-require minor changes, but your mileage may vary…
|
|
|
-
|
|
|
-
|
|
|
-Known Issues and/or noteworthy stuff:
|
|
|
-* The implementation is mostly untested, so it is very likely that APT will
|
|
|
- eat your kids if you aren't as lucky as the author of these patches.
|
|
|
-
|
|
|
-[0] https://wiki.ubuntu.com/MultiarchSpec
|