1DOSE-DISTCHECK(1) DOSE Tools DOSE-DISTCHECK(1)
2
3
4
6 distcheck - check installability of packages according to metadata
7
9 distcheck [option] ... uri
10 debcheck [option] ... [file]
11 rpmcheck [option] ... [file]
12 eclipsecheck [option] ... [file]
13
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
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
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
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), bzip2(1) or xz(1),
174 depending 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), bzip2(1) or xz(1),
178 depending 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
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
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
285 Distcheck is a complete reimplementation of edos-debcheck, written for
286 the EDOS project.
287
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
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 2023-09-10 DOSE-DISTCHECK(1)