Name
update-multiarch.pl - Multiarch helper for dpkg-cross and related tools
Description
Identifies the binary package names from the specified Packages file
and compare the identified list against the lists in
/etc/dpkg-cross/multiarch-cross.d then write out the list of additional
package names to /var/lib/apt-cross/multiarch.list.
The list is overwritten each time update-multiarch.pl is run.
This config file helper is tied absolutely to a single target suite -
use a chroot for a different target suite.
Example of how dpkg-cross handles the list
If libfoo1 depends on libbar0 and libbar0 has transitioned to Multi-
Arch compliance (and is listed in either
/etc/dpkg-cross/multiarch-cross.d/* or
/var/lib/apt-cross/multiarch.list, then libfoo1-ARCH-cross will have a
versioned depends on libbar0 to ensure that the multiarch version is
installed.
Depends: libc6-armel-cross (>= 2.4), libbar0 (>= 0.0.2-1), libbaz2-armel-cross
Provides: libfoo1-armel-dcv1
Once libfoo has transitioned and the list updated using this helper or
some alternative method, a rebuilt libfoo-ARCH-cross will be empty, and
contain a new control field: x-Multiarch: delete along with a mangled
package description that tells users to delete all these packages as
soon as practical. (emprunecross can be used here.)
Depends: libc6-armel-cross (>= 2.4), libbar0 (>= 0.0.2-1), libbaz2-armel-cross
Provides: libfoo1-armel-dcv1
X-Multiarch: delete
Alternatives
A simple list of packages can be found using "grep-aptavail":
grep-aptavail -s Package -F Multi-Arch same
grep-aptavail -s Package -F Multi-Arch foreign
grep-aptavail -s Package -F Multi-Arch allowed
However, note that grep-aptavail uses all sources in your apt
configuration and the results will not necessarily match either the
list for the target suite or for the target architecture.
Multi-arch field meanings for dpkg-cross:
Multi-Arch: same
This package is co-installable with itself, but it must not be used to
satisfy the dependency of any package of a different architecture from
itself.
dpkg-cross needs to include this dependency as a native dependency, so
that the package for the cross architecture can be installed.
Multi-Arch: foreign
The package is not co-installable with itself, but should be allowed to
satisfy the dependencies of a package of a different arch from itself.
dpkg-cross needs to include this dependency as a native dependency, so
that the package is deemed to already meet the cross dependency.
Multi-Arch: allowed
This permits the reverse-dependencies of the package to annotate their
Depends: field to indicate that a foreign architecture version of the
package satisfies the dependencies, but does not change the resolution
of any existing dependencies. This value exists to prevent any packages
from incorrectly annotating dependencies as being architecture-neutral
without coordination with the maintainer of the depended-on package.
dpkg-cross needs to include this dependency as a native dependency, so
that the package is deemed to already meet the cross dependency.
See:
https://wiki.ubuntu.com/MultiarchSpec