1DISTCHECK(1)                      DOSE Tools                      DISTCHECK(1)
2
3
4

NAME

6       distcheck - check installability of packages according to metadata
7

SYNOPSIS

9       distcheck [option] ... uri
10       debcheck [option] ... [file]
11       rpmcheck [option] ... [file]
12       eclipsecheck [option] ... [file]
13

DESCRIPTION

15       distcheck determines, for a set of package control stanzas, called the
16       repository, whether packages of the repository can be installed
17       relative to the repository according to the inter-package
18       relationsships expressed in the package control stanzas.  The exact set
19       of relevant control fields and their meaning depends on the type of the
20       repository. The constraint solving algorithm is complete, that is it
21       finds a solution whenever there exists one, even for multiple
22       disjunctive dependencies and deep package conflicts. This problem is
23       computationally infeasible in theory (that is, NP-complete), but can be
24       solved very efficiently for package repositories that actually occur in
25       practice.
26
27       Packages are split into foreground and background: only packages in the
28       foreground are checked for installability, but dependencies may be
29       satisfied by foreground packages and by background packages. By
30       default, all packages are in the foreground.
31

Input Specification

33       Currently supported input types are debian, rpm, and eclipse. The
34       distcheck tool expects its input specifiations in the form
35       type://pathname where type is one of deb, synthesis, hdlist or eclipse,
36       and pathname is the pathname of a file containing the input. The
37       package metadata found in that file must correspond to the type given
38       in the URI.
39
40       When invoked as typecheck then the type of input is assumed to be type,
41       and repositories (in positional arguments or in the values of options
42       --fg and --bg) are simply given in form of a pathname of a file
43       containing the repository. If no positional argument is given then
44       input is read from standard input. distcheck also accepts compressed
45       files (.gz , .bz2) as positional arguments. Input read on standard
46       input cannot be in compressed form.
47

Input Formats

49   Debian
50       The input file has to contain stanzas in the format of deb-control(5),
51       separated by one blank line. For instance, the Packages files as found
52       on a Debian mirror server, or in the directory /var/lib/apt/lists/ of a
53       Debian system, are suitable as input to debcheck. Installability of
54       packages is analyzed according to their Depends, Conflicts, and
55       Provides fields with their meaning as of Debian policy version 3.9.0.
56       Pre-depends are treated like Depends, and Breaks are treated like
57       Conflicts.
58
59       If the input contains several packages with the same values of name,
60       version, and architecture than only the last of these is taken into
61       account, and a warning is issued.
62
63       In the case of Debian, it is not possible to install at the same time
64       two packages with the same name but different versions.
65
66   Rpm
67       The input file can be either a synthesis file or a hdlist file.  By
68       default rpmcheck expects a synthesis file as input. To specify a hdlist
69       file distcheck must be invoked with a file argument of the form
70       hdlist://
71
72   Npm
73       The input file is a 822 encoding of an npm repository.
74
75   Opam
76       The input file is a 822 encoding of an opam repository.
77
78   Pef
79       The input is a generic 822 file. Versions are compared by default using
80       the debian comparing function, or if provided the function specified by
81       --compare
82
83   Eclipse
84       The input is a 822 file containing the encoding of OSGi plugins
85       content.xml files.
86

OPTIONS

88   MISC OPTIONS
89       --version
90               Show program version and exit.
91
92       -h, --help
93               Display this list of options.
94
95       -v, --verbose
96               Enable info / warnings / debug messages.  This option may be
97               repeated up to three times in order to increase verbosity.
98
99       --progress
100               Show progress bars.
101
102       --timers
103               Show timing information.
104
105       --quiet Do not print warning messages
106
107   DISTCHECK OPTIONS
108       -e, --explain
109               Give explanations. If used together with --failures then the
110               explanation consists of dependency chains leading to a conflict
111               or a dependency on a missing package. If used together with
112               --successes then the explanation consists of an installation
113               set.
114
115       -m, --explain-minimal
116               For all packages P that are found installable, and when used in
117               conjunction with --successes, prints a reduced installation set
118               containing only those packages in the dependency cone of P.
119               When used with Debian repositories, all essential packages and
120               their dependencies that are not in the cone of P are omitted.
121               When used in conjunction with --failures, and --explain, all
122               dependencies chains are not printed.
123
124       -c, --explain-condense
125               Compress explanation graph
126
127       -f, --failures
128               List all packages that are found not to be installable.
129
130       -s, --successes
131               List all packages that are found to be installable. May be used
132               together with --failures, in this case the value of the status
133               field in the output allows one to distinguish installable from
134               non-installable packages.
135
136       --summary
137               Gives a more detailed summary of the findings.
138
139       --coinst  package [,package] ...
140               Takes a comma-separated list of package names, each of them
141               possibly with a version constraint, as argument. If this list
142               consists of n expressions, then co-installability will be
143               checked independently for each set of n packages where the i-th
144               element of the set matches the i-th expression. The initial
145               distinction between foreground and background is ignored. This
146               option must not be combined with --checkonly.
147
148               Example: --coinst "a (>1), b"
149
150               If we have package a in versions 1, 2 and 3, and package b in
151               versions 11 and 12, then this will check 4 pairs of packages
152               for co-installability, namely (a=2,b=11), (a=2,b=12),
153               (a=3,b=11) and (a=3,b=12).
154
155       --fields=strlst
156               Print additional fields if available
157
158       --lowmem
159               Serialise multiple distcheck runs to save memory. This might
160               take more time.
161
162   INPUT OPTIONS
163       -t input-spec
164               Select the input type. Possible values are:
165
166       .       cudf for cudf files
167
168       .       csw
169
170       .       opam
171
172       .       deb for Debian binary package files, also known as Packages
173               files. Possibly compressed with gzip(1) or bzip2(1), depending
174               on compile-time options for dose3.
175
176       .       debsrc for Debian source package files, also knows as Sources
177               files.  Possibly compressed with gzip(1) or bzip2(1), depending
178               on compile-time options for dose3.
179
180       .       edsp for apt-get External Dependency Solver Protocol
181
182       .       eclipse for Eclipse (p2) package files
183
184       .       hdlist for RPM hdlists
185
186       .       synthesis for urpmi synthesis hdlists
187
188       .       pef
189
190       --checkonly package [,package] ...
191               Takes a comma-separated list of package names, each of them
192               possibly with a version constraint, as argument. The foreground
193               is constituted of all packages that match any of the
194               expressions, all other packages are pushed into the background.
195               The initial distinction between foreground and background is
196               ignored. This option must not be combined with --coinst.
197
198               Example: --checkonly "libc6 , 2ping (= 1.2.3-1)"
199
200       --latest n
201               Consider only the latest -n most recent versions of each
202               package, older versions of packages are ignored.
203
204       --fg=file
205               Add packages in file to the foreground.
206
207       --bg=file
208               Add packages in file to the background.
209
210       --compare
211               When specified with a pef file, select the comparison function
212               used by the pef -> cudf encoding. Possible values are deb
213               (<https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version>)
214               , semver (<http://semver.org/>) , npm
215               (<https://docs.npmjs.com/misc/semver>)
216
217   OUTPUT OPTIONS
218       -o, --outfile= file
219               Send output to file.
220
221       -d, --outdir= directory
222               Set the output directory (default current directory).
223
224       --dot   Save the explanation graph (one for each package) in dot
225               format.
226
227   DEBIAN SPECIFIC OPTIONS
228       Multi-arch annotations are correctly considered by distcheck. Packages
229       whose's architecture is neither the native architecture nor in the list
230       of foreign architectures (see below) are ignored.
231
232       --deb-native-arch=name
233               Specify the native architecture. The default behavior is to
234               deduce the native architecture from the first package stanza in
235               the input that has an architecture different from all.
236
237       --deb-foreign-archs=name [,name] ...
238               Specify a comma-separated list of foreign architectures. The
239               default is an empty list of foreign architectures.
240
241       --deb-ignore-essential
242               Do not consider essential packages as part of the installation
243               problem.  By default all essential package are considered as
244               part of the installation problem for all packages, that is a
245               package is installable if and only if it is co-installable with
246               all essential packages. This option allows the user to test the
247               installability with no essential packages installed.
248
249       --deb-builds-from
250               Add builds-from relationship of binary packages on source
251               packages as dependency. This allows one to create graphs for
252               bootstrapping purposes.
253

EXIT CODES

255       Exit codes 0-63 indicate a normal termination of the program, codes
256       64-127 indicate abnormal termination of the program (such as parse
257       errors, I/O errors).
258
259       In case of normal program termination:
260
261       - exit code 0 indicates that all foreground packages are found
262       installable;
263
264       - exit code 1 indicates that at least one foreground package is found
265       uninstallable.
266

EXAMPLE

268       Check which packages in a particular distribution are not installable
269       and why:
270
271        dose-distcheck -v -f -e \
272        --bg deb:///var/lib/apt/lists/ftp.fr.debian.org_debian_dists_sid_main_binary-amd64_Packages\
273        --bg deb:///var/lib/apt/lists/ftp.fr.debian.org_debian_dists_sid_non-free_binary-amd64_Packages\
274        --fg deb:///var/lib/apt/lists/ftp.fr.debian.org_debian_dists_sid_contrib_binary-amd64_Packages
275
276       where Packages is the file pertaining to that distribution, as for
277       instance found in the directory /var/lib/apt/lists.
278
279       Check which packages in contrib are not installable when dependencies
280       may be satisfied from main:
281
282         debcheck --failures --bg=main_Packages contrib_Packages
283

NOTE

285       Distcheck is a complete reimplementation of edos-debcheck, written for
286       the EDOS project.
287

AUTHOR

289       The first version of debcheck was written by Jerome Vouillon for the
290       EDOS project. The current version has been rewritten on the basis of
291       the dose3 library by Pietro Abate.
292

SEE ALSO

294       deb-control(5)
295
296       <http://www.edos-project.org> is the home page of the EDOS project.
297
298       <http://www.mancoosi.org> is the home page of the Mancoosi project.
299
300
301
302                                  2018-04-21                      DISTCHECK(1)
Impressum