Edos-debcheck(1) Check satisfiability of Debian package dependencies

SYNOPSIS

edos-debcheck [option] ... [package] ...

DESCRIPTION

edos-debcheck reads from standard input a set of Debian package descriptions, each of which is in the format of deb-control(5). For instance, the Packages files as found on a Debian mirror server, or in the directory /var/lib/apt/lists/ of a Debian system, are suitable as input to edos-debcheck.

Packages may appear with multiple versions in this set. We say that a package is identified in this set by the pair consisting of the package name and of the package version.

A package (called goal) is called installable with respect to a set of packages if there exists a subset of the packages that
 - contains at most one version for each package name
 - contains the goal package (in any version, or a specific version)
 - all packages of the subset have their dependencies and conflicts satisfied  in this subset. Pre-depends are treated like Depends, and Breaks are treated like Conflicts.

Debcheck checks whether every package given as argument is installable with respect to the input set of packages. Specific versions can be specified by following the package name with the sign '=' and the version of the package (for instance, 'xemacs21=21.4.17-1'). If no package name is given as argument then all packages of the input set are checked for satisfiability.

The constraint solving algorithm is complete, that is it finds a solution whenever there exists one, even for multiple disjunctive dependencies and deep package conflicts. This problem is computationally infeasible in theory (that is, NP-complete), but can in practice be solved very efficiently for Packages files occurring actually in Debian.

OPTIONS

-i file
Specify an additional input file containing stanzas in deb-control(5) format. These packages are checked for installability the same way as packages read from standard input.
-I file
Specify an additional input file containing stanzas in deb-control(5) format. These packages that are not checked for installability but only used for resolving dependencies.
-explain
Explain the results
-rules
Print generated rules
-failures
Only show failures
-successes
Only show successes
-checkonly list
where list is a comma-separated list of package names. Check only for installability of packages with name in list (of any available version). This means that if a package does not exist in the input pool then the test passes (since all available versions are in that case installable). However, a warning is issued in case a package mentionend in list is not available.

In the context of this option, a package of the form src:p expands to the list of all packages that stem from the source package p.

-quiet
Supress warnings and progress/timing messages
-xml
Output results in XML format
-help, --help
Display this list of options

EXIT CODE

The exit code is 0 when all packages that were asked to be checked (either explicitly with the -checkonly option, or because they exist in the package pool file) are available and found to be installable, it is 1 when a least one of these packages is available but not installable, and it is 2 when at least one of the packages is not available but all available packages are found to be installable. Hence, the exit code 2 can occur only when the -checkonly option is used.

EXAMPLE

Check which packages in a particular distribution are not installable and why:


  edos-debcheck -failures -explain < Packages

where Packages is the file pertaining to that distribution, as for instance found in the directory  /var/lib/apt/lists.

Check whether the xemacs21 and debhelper packages are installable in a distribution described by the file Packages:


  edos-debcheck -explain -checkonly xemacs21,debhelper < Packages

Check whether the package bibtex2html, and all binary packages stemming from the ocaml source package, are installable


 edos-debcheck -explain -checkonly bibtex2html,src:ocaml < Packages

AUTHOR

Edos-debcheck has been written by Jerome Vouillon for the EDOS project. This man-page has been compiled by Ralf Treinen.