update-multiarch.pl

Langue: en

Version: 2010-01-20 (ubuntu - 24/10/10)

Section: 1 (Commandes utilisateur)

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