.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .if !\nF .nr F 0 .if \nF>0 \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "DISTCHECK 1" .TH DISTCHECK 1 "2018-10-28" "dose3 " "DOSE Tools" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" dose\-distcheck \- check installability of packages according to metadata .SH "SYNOPSIS" .IX Header "SYNOPSIS" .IP "\fBdose-distcheck\fR [option] ... \fIuri\fR" 4 .IX Item "dose-distcheck [option] ... uri" .PD 0 .IP "\fBdose-debcheck\fR [option] ... [\fIfile\fR]" 4 .IX Item "dose-debcheck [option] ... [file]" .IP "\fBdose-rpmcheck\fR [option] ... [\fIfile\fR]" 4 .IX Item "dose-rpmcheck [option] ... [file]" .IP "\fBdose-eclipsecheck\fR [option] ... [\fIfile\fR]" 4 .IX Item "dose-eclipsecheck [option] ... [file]" .PD .SH "DESCRIPTION" .IX Header "DESCRIPTION" dose-distcheck determines, for a set of package control stanzas, called the repository, whether packages of the repository can be installed relative to the repository according to the inter-package relationsships expressed in the package control stanzas. The exact set of relevant control fields and their meaning depends on the type of the repository. 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 be solved very efficiently for package repositories that actually occur in practice. .PP Packages are split into foreground and background: only packages in the foreground are checked for installability, but dependencies may be satisfied by foreground packages and by background packages. By default, all packages are in the foreground. .SH "Input Specification" .IX Header "Input Specification" Currently supported input types are debian, rpm, and eclipse. The \&\fBdose-distcheck\fR tool expects its input specifiations in the form \&\fItype://pathname\fR where \fItype\fR is one of \fBdeb\fR, \fBsynthesis\fR, \&\fBhdlist\fR or \fBeclipse\fR, and \fIpathname\fR is the pathname of a file containing the input. The package metadata found in that file must correspond to the \fItype\fR given in the \s-1URI.\s0 .PP When invoked as \fI\f(BIdose\-\fItype\f(BIcheck\fI\fR then the type of input is assumed to be \&\fItype\fR, and repositories (in positional arguments or in the values of options \&\fB\-\-fg\fR and \fB\-\-bg\fR) are simply given in form of a pathname of a file containing the repository. If no positional argument is given then input is read from standard input. \fBdose-distcheck\fR also accepts compressed files (.gz , \&.bz2) as positional arguments. Input read on standard input cannot be in compressed form. .SH "Input Formats" .IX Header "Input Formats" .SS "Debian" .IX Subsection "Debian" The input file has to contain stanzas in the format of \fIdeb\-control\fR\|(5), separated by one blank line. For instance, the Packages files as found on a Debian mirror server, or in the directory \fI/var/lib/apt/lists/\fR of a Debian system, are suitable as input to \fBdose-debcheck\fR. Installability of packages is analyzed according to their \fBDepends\fR, \fBConflicts\fR, and \fBProvides\fR fields with their meaning as of Debian policy version 3.9.0. \fBPre-depends\fR are treated like \fBDepends\fR, and \fBBreaks\fR are treated like \fBConflicts\fR. .PP If the input contains several packages with the same values of name, version, and architecture than only the last of these is taken into account, and a warning is issued. .PP In the case of Debian, it is not possible to install at the same time two packages with the same name but different versions. .SS "Rpm" .IX Subsection "Rpm" The input file can be either a \fIsynthesis\fR file or a \fIhdlist\fR file. By default dose-rpmcheck expects a synthesis file as input. To specify a hdlist file dose-distcheck must be invoked with a file argument of the form hdlist:// .SS "Npm" .IX Subsection "Npm" The input file is a 822 encoding of an npm repository. .SS "Opam" .IX Subsection "Opam" The input file is a 822 encoding of an opam repository. .SS "Pef" .IX Subsection "Pef" The input is a generic 822 file. Versions are compared by default using the debian comparing function, or if provided the function specified by \fB\-\-compare\fR .SS "Eclipse" .IX Subsection "Eclipse" The input is a 822 file containing the encoding of OSGi plugins content.xml files. .SH "OPTIONS" .IX Header "OPTIONS" .SS "\s-1MISC OPTIONS\s0" .IX Subsection "MISC OPTIONS" .IP "\fB\-\-version\fR" 8 .IX Item "--version" Show program version and exit. .IP "\fB\-h, \-\-help\fR" 8 .IX Item "-h, --help" Display this list of options. .IP "\fB\-v, \-\-verbose\fR" 8 .IX Item "-v, --verbose" Enable info / warnings / debug messages. This option may be repeated up to three times in order to increase verbosity. .IP "\fB\-\-progress\fR" 8 .IX Item "--progress" Show progress bars. .IP "\fB\-\-timers\fR" 8 .IX Item "--timers" Show timing information. .IP "\fB\-\-quiet\fR" 8 .IX Item "--quiet" Do not print warning messages .SS "\s-1DISTCHECK OPTIONS\s0" .IX Subsection "DISTCHECK OPTIONS" .IP "\fB\-e\fR, \fB\-\-explain\fR" 8 .IX Item "-e, --explain" Give explanations. If used together with \fB\-\-failures\fR then the explanation consists of dependency chains leading to a conflict or a dependency on a missing package. If used together with \fB\-\-successes\fR then the explanation consists of an installation set. .IP "\fB\-m\fR, \fB\-\-explain\-minimal\fR" 8 .IX Item "-m, --explain-minimal" For all packages \fBP\fR that are found installable, and when used in conjunction with \fB\-\-successes\fR, prints a reduced installation set containing only those packages in the dependency cone of \fBP\fR. When used with Debian repositories, all essential packages and their dependencies that are not in the cone of \fBP\fR are omitted. When used in conjunction with \fB\-\-failures\fR, and \fB\-\-explain\fR, all dependencies chains are not printed. .IP "\fB\-c\fR, \fB\-\-explain\-condense\fR" 8 .IX Item "-c, --explain-condense" Compress explanation graph .IP "\fB\-f\fR, \fB\-\-failures\fR" 8 .IX Item "-f, --failures" List all packages that are found not to be installable. .IP "\fB\-s\fR, \fB\-\-successes\fR" 8 .IX Item "-s, --successes" List all packages that are found to be installable. May be used together with \fB\-\-failures\fR, in this case the value of the status field in the output allows one to distinguish installable from non-installable packages. .IP "\fB\-\-summary\fR" 8 .IX Item "--summary" Gives a more detailed summary of the findings. .IP "\fB\-\-coinst\fR \fIpackage\fR [,\fIpackage\fR] ..." 8 .IX Item "--coinst package [,package] ..." Takes a comma-separated list of package names, each of them possibly with a version constraint, as argument. If this list consists of n expressions, then co-installability will be checked independently for each set of n packages where the i\-th element of the set matches the i\-th expression. The initial distinction between foreground and background is ignored. This option must not be combined with \fB\-\-checkonly\fR. .Sp Example: \-\-coinst \*(L"a (>1), b\*(R" .Sp If we have package a in versions 1, 2 and 3, and package b in versions 11 and 12, then this will check 4 pairs of packages for co-installability, namely (a=2,b=11), (a=2,b=12), (a=3,b=11) and (a=3,b=12). .IP "\fB\-\-fields=\fR\fIstrlst\fR" 8 .IX Item "--fields=strlst" Print additional fields if available .IP "\fB\-\-lowmem\fR" 8 .IX Item "--lowmem" Serialise multiple distcheck runs to save memory. This might take more time. .SS "\s-1INPUT OPTIONS\s0" .IX Subsection "INPUT OPTIONS" .IP "\fB\-t \fR\fIinput-spec\fR" 8 .IX Item "-t input-spec" Select the input type. Possible values are: .IP "." 8 \&\fBcudf\fR for cudf files .IP "." 8 \&\fBcsw\fR .IP "." 8 \&\fBopam\fR .IP "." 8 \&\fBdeb\fR for Debian binary package files, also known as Packages files. Possibly compressed with \fIgzip\fR\|(1), \fIbzip2\fR\|(1) or \fIxz\fR\|(1), depending on compile-time options for dose3. .IP "." 8 \&\fBdebsrc\fR for Debian source package files, also knows as Sources files. Possibly compressed with \fIgzip\fR\|(1), \fIbzip2\fR\|(1) or xz(1), depending on compile-time options for dose3. .IP "." 8 \&\fBedsp\fR for apt-get External Dependency Solver Protocol .IP "." 8 \&\fBeclipse\fR for Eclipse (p2) package files .IP "." 8 \&\fBhdlist\fR for \s-1RPM\s0 hdlists .IP "." 8 \&\fBsynthesis\fR for urpmi synthesis hdlists .IP "." 8 \&\fBpef\fR .IP "\fB\-\-checkonly\fR \fIpackage\fR [,\fIpackage\fR] ..." 8 .IX Item "--checkonly package [,package] ..." Takes a comma-separated list of package names, each of them possibly with a version constraint, as argument. The foreground is constituted of all packages that match any of the expressions, all other packages are pushed into the background. The initial distinction between foreground and background is ignored. This option must not be combined with \fB\-\-coinst\fR. .Sp Example: \-\-checkonly \*(L"libc6 , 2ping (= 1.2.3\-1)\*(R" .IP "\fB\-\-latest\fR \fIn\fR" 8 .IX Item "--latest n" Consider only the latest \-\fIn\fR most recent versions of each package, older versions of packages are ignored. .IP "\fB\-\-fg=\fR\fIfile\fR" 8 .IX Item "--fg=file" Add packages in \fIfile\fR to the foreground. .IP "\fB\-\-bg=\fR\fIfile\fR" 8 .IX Item "--bg=file" Add packages in \fIfile\fR to the background. .IP "\fB\-\-compare\fR" 8 .IX Item "--compare" When specified with a \fBpef\fR file, select the comparison function used by the pef \-> cudf encoding. Possible values are \fBdeb\fR () , \&\fBsemver\fR () , \fBnpm\fR () .SS "\s-1OUTPUT OPTIONS\s0" .IX Subsection "OUTPUT OPTIONS" .IP "\fB\-o, \-\-outfile=\fR \fIfile\fR" 8 .IX Item "-o, --outfile= file" Send output to \fIfile\fR. .IP "\fB\-d, \-\-outdir=\fR \fIdirectory\fR" 8 .IX Item "-d, --outdir= directory" Set the output directory (default current directory). .IP "\fB\-\-dot\fR" 8 .IX Item "--dot" Save the explanation graph (one for each package) in dot format. .SS "\s-1DEBIAN SPECIFIC OPTIONS\s0" .IX Subsection "DEBIAN SPECIFIC OPTIONS" Multi-arch annotations are correctly considered by distcheck. Packages whose's architecture is neither the native architecture nor in the list of foreign architectures (see below) are ignored. .IP "\fB\-\-deb\-native\-arch=\fR\fIname\fR" 8 .IX Item "--deb-native-arch=name" Specify the native architecture. The default behavior is to deduce the native architecture from the first package stanza in the input that has an architecture different from all. .IP "\fB\-\-deb\-foreign\-archs=\fR\fIname\fR [,\fIname\fR] ..." 8 .IX Item "--deb-foreign-archs=name [,name] ..." Specify a comma-separated list of foreign architectures. The default is an empty list of foreign architectures. .IP "\fB\-\-deb\-ignore\-essential\fR" 8 .IX Item "--deb-ignore-essential" Do not consider essential packages as part of the installation problem. By default all essential package are considered as part of the installation problem for all packages, that is a package is installable if and only if it is co-installable with all essential packages. This option allows the user to test the installability with no essential packages installed. .IP "\fB\-\-deb\-builds\-from\fR" 8 .IX Item "--deb-builds-from" Add builds-from relationship of binary packages on source packages as dependency. This allows one to create graphs for bootstrapping purposes. .SH "EXIT CODES" .IX Header "EXIT CODES" Exit codes 0\-63 indicate a normal termination of the program, codes 64\-127 indicate abnormal termination of the program (such as parse errors, I/O errors). .PP In case of normal program termination: .PP \&\- exit code 0 indicates that all foreground packages are found installable; .PP \&\- exit code 1 indicates that at least one foreground package is found uninstallable. .SH "EXAMPLE" .IX Header "EXAMPLE" Check which packages in a particular distribution are not installable and why: .PP .Vb 4 \& dose\-distcheck \-v \-f \-e \e \& \-\-bg deb:///var/lib/apt/lists/ftp.fr.debian.org_debian_dists_sid_main_binary\-amd64_Packages\e \& \-\-bg deb:///var/lib/apt/lists/ftp.fr.debian.org_debian_dists_sid_non\-free_binary\-amd64_Packages\e \& \-\-fg deb:///var/lib/apt/lists/ftp.fr.debian.org_debian_dists_sid_contrib_binary\-amd64_Packages .Ve .PP where Packages is the file pertaining to that distribution, as for instance found in the directory \fB/var/lib/apt/lists\fR. .PP Check which packages in contrib are not installable when dependencies may be satisfied from main: .PP .Vb 1 \& dose\-debcheck \-\-failures \-\-bg=main_Packages contrib_Packages .Ve .SH "NOTE" .IX Header "NOTE" Dose-distcheck is a complete reimplementation of edos-debcheck, written for the \s-1EDOS\s0 project. .SH "AUTHOR" .IX Header "AUTHOR" The first version of debcheck was written by Jerome Vouillon for the \s-1EDOS\s0 project. The current version has been rewritten on the basis of the dose3 library by Pietro Abate. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBdeb-control\fR(5) .PP is the home page of the \s-1EDOS\s0 project. .PP is the home page of the Mancoosi project.