Issues reported by the multiarch hinter. For other multiarch topics, see the multiarch category. For a list of active issues, see hints.yaml.

The multiarch hinter is a variant of dedup.debian.net. It analyzes binary packages for Multi-Arch properties and reports them on tracker.debian.org. The source code is available in the multiarch branch of dedup.debian.net.

Multi-Arch hinter

file conflict

The package is marked Multi-Arch: same, but has conflicting versions of at least one file for different architectures. The report includes the filename (or the number of filenames) and the architectures (or number of architectures) in question.

If possible, change file paths to make your package co-installable. Otherwise, change Multi-Arch: same to Multi-Arch: no in debian/control.

You can download the relevant binary packages, extract them using dpkg-deb -x and compare them with using diffoscope. The difference might just be some build tool being versioned differently for different builds. You may be able to resolve the issue by reuploading or binNMUing the unmodified package.

set Multi-Arch: foreign

The package is Architecture: all, does not contain any maintainer scripts and does not have any dependencies on architecture-dependent packages.

It should be safe to add Multi-Arch: foreign to the binary package's debian/control section. Check the associated metadata is correct (e.g. dependencies aren't wrongly marked Multi-Arch: foreign). But see Multi-Arch: foreign vs. Architecture: all for an important edge case.

If future changes might make this change inappropriate, make a note somewhere to revert the change when the time comes.

set Multi-Arch: same

The package is Architecture: any, does not contain any maintainer scripts, and common files for any pair of architectures have the same content.

It should be safe to add Multi-Arch: same to the binary package's debian/control section. Check that any maintainer scripts work correctly when co-installing the package for multiple architectures at once.

If future changes might make this change inappropriate, make a note somewhere to revert the change when the time comes.

Ignore this report if your package exists to prevent co-installation of other packages.

For more information, see Multiarch/Implementation.

convert to Architecture: all

The package is Architecture: any, does not contain any maintainer scripts, common files for any pair of architectures have the same content, and there are no dependencies on architecture-dependent packages.

Consider changing Architecture: any to Architecture: all in debian/control. Check the associated metadata is correct (e.g. dependencies aren't wrongly marked Multi-Arch: foreign). Fixing this will probably trigger a set Multi-Arch: foreign report, so consider setting that at the same time.

This report only considers release architectures. Ignore this report if that lead to a false positive.

This change may be binNMU-unsafe. For example, if /usr/share/doc/thepackage is a symbolic link or other packages link docs to it.

annotate a dependency with :any

The package is Architecture: all, does not contain any maintainer scripts, only has one dependency on an architecture-dependent package, and that dependency is marked Multi-Arch: allowed.

Consider appending :any to the relevant dependency (e.g. python becomes python:any). Architecture-independent packages shouldn't use the dependency in an architecture-specific way, so usually don't require any particular architecture. Check the associated metadata is correct (e.g. dependencies aren't wrongly marked Multi-Arch: foreign or Multi-Arch: allowed).

If future changes might make this change inappropriate (e.g. if a future version might depend on an architecture-dependent extension for the interpreter), make a note somewhere to revert the change when the time comes.

For more information, see the discussion of Multi-Arch: allowed in Use Multi-Arch fields.

Multi-Arch: foreign library

The package is Architecture: any, is marked Multi-Arch: foreign, contains a shared library in a public library search path, and does not contain any public executables.

It should be safe to use Multi-Arch: same. Shared libraries cannot provide an architecture-independent interface. Some shared libraries exist as plugins to a program, but this package does not contain any programs.

If this is incorrectly reported, please edit this page and note it here.

requires Multi-Arch interpreter workaround

The package is Architecture: all, is Multi-Arch: foreign, and exposes an architecture-dependent dependency (e.g. a rust library).

It should be safe to use Architecture: any and Multi-Arch: same in debian/control. Packages that depend on your package will not look further down the dependency tree, so you need to reflect that information in your package's metadata.

See also


CategoryMultiarch CategoryPermalink