summaryrefslogtreecommitdiffstats
path: root/docs/reprepro.1
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:12:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:12:14 +0000
commit4b8a0f3f3dcf60dac2ce308ea08d413a535af29f (patch)
tree0f09c0ad2a4d0f535d89040a63dc3a866a6606e6 /docs/reprepro.1
parentInitial commit. (diff)
downloadreprepro-4b8a0f3f3dcf60dac2ce308ea08d413a535af29f.tar.xz
reprepro-4b8a0f3f3dcf60dac2ce308ea08d413a535af29f.zip
Adding upstream version 5.4.4.upstream/5.4.4
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--docs/reprepro.12847
1 files changed, 2847 insertions, 0 deletions
diff --git a/docs/reprepro.1 b/docs/reprepro.1
new file mode 100644
index 0000000..34f1a3c
--- /dev/null
+++ b/docs/reprepro.1
@@ -0,0 +1,2847 @@
+.TH REPREPRO 1 "2013-05-04" "reprepro" REPREPRO
+.SH NAME
+reprepro \- produce, manage and sync a local repository of Debian packages
+.mso www.tmac
+.SH SYNOPSIS
+.B reprepro \-\-help
+
+.B reprepro
+[
+\fIoptions\fP
+]
+\fIcommand\fP
+[
+\fIper\-command\-arguments\fP
+]
+.SH DESCRIPTION
+reprepro is a tool to manage a repository of Debian packages
+(.deb, .udeb, .dsc, ...).
+It stores files either being injected manually or
+downloaded from some other repository (partially) mirrored
+into a pool/ hierarchy.
+Managed packages and checksums of files are stored in a
+Berkeley DB database file,
+so no database server is needed.
+Checking signatures of mirrored repositories and creating
+signatures of the generated Package indices is supported.
+
+Former working title of this program was mirrorer.
+.SH "GLOBAL OPTIONS"
+Options can be specified before the command. Each affects a different
+subset of commands and is ignored by other commands.
+.TP
+.B \-h \-\-help
+Displays a short list of options and commands with description.
+.TP
+.B \-v, \-V, \-\-verbose
+Be more verbose. Can be applied multiple times. One uppercase
+.B \-V
+counts as five lowercase
+.B \-v.
+.TP
+.B \-\-silent
+Be less verbose. Can be applied multiple times. One
+.B \-v
+and one
+.B \-s
+cancel each other out.
+.TP
+.B \-f, \-\-force
+This option is ignored, as it no longer exists.
+.TP
+.B \-b, \-\-basedir \fIbasedir\fP
+Sets the base\-dir all other default directories are relative to.
+If none is supplied and the
+.B REPREPRO_BASE_DIR
+environment variable is not set either, the current directory
+will be used.
+.TP
+.B \-\-outdir \fIoutdir\fP
+Sets the base\-dir of the repository to manage, i.e. where the
+.B pool/
+subdirectory resides. And in which the
+.B dists/
+directory is placed by default.
+If this starts with '\fB+b/\fP', it is relative to basedir.
+
+The default for this is \fIbasedir\fP.
+.TP
+.B \-\-confdir \fIconfdir\fP
+Sets the directory where the configuration is searched in.
+
+If this starts with '\fB+b/\fP', it is relative to basedir.
+
+If none is given, \fB+b/conf\fP (i.e. \fIbasedir\fP\fB/conf\fP) will be used.
+.TP
+.B \-\-distdir \fIdistdir\fP
+Sets the directory to generate index files relatively to. (i.e. things like
+Packages.gz, Sources.gz and Release.gpg)
+
+If this starts with '\fB+b/\fP', it is relative to basedir,
+if starting with '\fB+o/\fP' relative to outdir.
+
+If none is given, \fB+o/dists\fP (i.e. \fIoutdir\fP\fB/dists\fP) is used.
+
+.B Note:
+apt has
+.B dists
+hard-coded in it, so this is mostly only useful for testing or when your webserver
+pretends another directory structure than your physical layout.
+
+.B Warning:
+Beware when changing this forth and back between two values not ending
+in the same directory.
+Reprepro only looks if files it wants are there. If nothing of the content
+changed and there is a file it will not touch it, assuming it is the one it
+wrote last time, assuming any different \fB\-\-distdir\fP ended in the same
+directory.
+So either clean a directory before setting \fB\-\-distdir\fP to it or
+do an \fBexport\fP with the new one first to have a consistent state.
+.TP
+.B \-\-logdir \fIlogdir\fP
+The directory where files generated by the \fBLog:\fP directive are
+stored if they have no absolute path.
+
+If this starts with '\fB+b/\fP', it is relative to basedir,
+if starting with '\fB+o/\fP' relative to outdir,
+with '\fB+c/\fP' relative to confdir.
+
+If none is given, \fB+b/logs\fP (i.e. \fIbasedir\fP\fB/logs\fP) is used.
+.TP
+.B \-\-dbdir \fIdbdir\fP
+Sets the directory where reprepro keeps its databases.
+
+If this starts with '\fB+b/\fP', it is relative to basedir,
+if starting with '\fB+o/\fP' relative to outdir,
+with '\fB+c/\fP' relative to confdir.
+
+If none is given, \fB+b/db\fP (i.e. \fIbasedir\fP\fB/db\fP) is used.
+
+.B Note:
+This is permanent data, no cache. One has almost to regenerate the whole
+repository when this is lost.
+.TP
+.B \-\-listdir \fIlistdir\fP
+Sets the directory where it downloads indices to when importing
+from other repositories. This is temporary data and can be safely deleted
+when not in an update run.
+
+If this starts with '\fB+b/\fP', it is relative to basedir,
+if starting with '\fB+o/\fP' relative to outdir,
+with '\fB+c/\fP' relative to confdir.
+
+If none is given, \fB+b/lists\fP (i.e. \fIbasedir\fP\fB/lists\fP) is used.
+.TP
+.B \-\-morguedir \fImorguedir\fP
+Files deleted from the pool are stored into \fImorguedir\fP.
+
+If this starts with '\fB+b/\fP', it is relative to basedir,
+if starting with '\fB+o/\fP' relative to outdir,
+with '\fB+c/\fP' relative to confdir.
+
+If none is given, deleted files are just deleted.
+.TP
+.B \-\-methoddir \fImethoddir\fP
+Look in \fImethoddir\fP instead of
+.B /usr/lib/apt/methods
+for methods to call when importing from other repositories.
+.TP
+.B \-C, \-\-component \fIcomponents\fP
+Limit the specified command to this components only.
+This will force added packages to this components,
+limit removing packages from this components,
+only list packages in this components,
+and/or otherwise only look at packages in this components,
+depending on the command in question.
+
+Multiple components are specified by separating them with \fB|\fP,
+as in \fB\-C 'main|contrib'\fP.
+.TP
+.B \-A, \-\-architecture \fIarchitectures\fP
+Limit the specified command to this architectures only.
+(i.e. only list such packages,
+only remove packages from the specified architectures,
+or otherwise only look at/act on this architectures
+depending on the specific command).
+
+Multiple architectures are specified by separating them with \fB|\fP,
+as in \fB\-A 'sparc|i386'\fP.
+
+Note that architecture \fBall\fP packages can be included to each
+architecture but are then handled separately.
+Thus by using \fB\-A\fP in a specific way one can have different versions of
+an architecture \fBall\fP package in different architectures of the
+same distribution.
+.TP
+.B \-T, \-\-type \fRdsc|deb|udeb
+Limit the specified command to this packagetypes only.
+(i.e. only list such packages, only remove such packages, only include
+such packages, ...)
+.TP
+.B \-S, \-\-section \fIsection\fP
+Overrides the section of inclusions. (Also override possible override files)
+.TP
+.B \-P, \-\-priority \fIpriority\fP
+Overrides the priority of inclusions. (Also override possible override files)
+.TP
+.BR \-\-export= ( silent\-never | never | changed | lookedat | force )
+This option specify whether and how the high level actions
+(e.g. install, update, pull, delete)
+should export the index files of the distributions they work with.
+.TP
+.BR \-\-export=lookedat
+In this mode every distribution the action handled will be exported,
+unless there was an error possibly corrupting it.
+.br
+\fINote\fP that only missing files and files whose intended content changed
+between before and after the action will be written.
+To get a guaranteed current export, use the \fBexport\fP action.
+.br
+For backwards compatibility, \fBlookedat\fP is also available under the
+old name \fBnormal\fP.
+The name \fBnormal\fP is deprecated and will be removed in future versions.
+.TP
+.BR \-\-export=changed
+In this mode every distribution actually changed will be exported,
+unless there was an error possibly corrupting it.
+(i.e. if nothing changed, not even missing files will be created.)
+.br
+\fINote\fP that only missing files and files whose intended content changed
+between before and after the action will be written.
+To get a guaranteed current export, use the \fBexport\fP action.
+.TP
+.BR \-\-export=force
+Always export all distributions looked at, even if there was some
+error possibly bringing it into a inconsistent state.
+.TP
+.BR \-\-export=never
+No index files are exported. You will have to call \fBexport\fP later.
+.br
+\fINote\fP that you most likely additionally need the \fB\-\-keepunreferencedfiles\fP
+option, if you do not want some of the files pointed to by the untouched index
+files to vanish.
+.TP
+.BR \-\-export=silent-never
+Like never, but suppress most output about that.
+.TP
+.B \-\-ignore=\fIwhat\fP
+Ignore errors of type \fIwhat\fP. See the section \fBERROR IGNORING\fP
+for possible values.
+.TP
+.B \-\-nolistsdownload
+When running \fBupdate\fP, \fBcheckupdate\fP or \fBpredelete\fP do not download
+any Release or index files.
+This is hardly useful except when you just run one of those
+command for the same distributions.
+And even then reprepro is usually good in
+not downloading except \fBRelease\fP and \fBRelease.gpg\fP files again.
+.TP
+.B \-\-nothingiserror
+If nothing was done, return with exitcode 1 instead of the usual 0.
+
+Note that "nothing was done" means the primary purpose of the action
+in question.
+Auxiliary actions (opening and closing the database, exporting missing
+files with \-\-export=lookedat, ...) usually do not count.
+Also note that this is not very well tested.
+If you find an action that claims to have done something in some cases
+where you think it should not, please let me know.
+.TP
+.B \-\-keeptemporaries
+Do not delete temporary \fB.new\fP files when exporting a distribution
+fails.
+(reprepro first create \fB.new\fP files in the \fBdists\fP directory and
+only if everything is generated, all files are put into their final place
+at once.
+If this option is not specified and something fails, all are deleted
+to keep \fBdists\fP clean).
+.TP
+.B \-\-keepunreferencedfiles
+Do not delete files that are no longer used because the package they
+are from is deleted/replaced with a newer version from the last distribution
+it was in.
+.TP
+.B \-\-keepunusednewfiles
+The include, includedsc, includedeb and processincoming by default delete
+any file they added to the pool that is not marked used at the end of the
+operation.
+While this keeps the pool clean and allows changing before trying to add again,
+this needs copying and checksum calculation every time one tries to add a file.
+.TP
+.B \-\-keepdirectories
+Do not try to rmdir parent directories after files or directories
+have been removed from them.
+(Do this if your directories have special permissions you want keep,
+do not want to be pestered with warnings about errors to remove them,
+or have a buggy rmdir call deleting non-empty directories.)
+.TP
+.B \-\-ask\-passphrase
+Ask for passphrases when signing things and one is needed. This is a quick
+and dirty and unsafe implementation using the obsolete \fBgetpass(3)\fP
+function with the description gpgme is supplying.
+So the prompt will look quite funny and support for passphrases with
+more than 8 characters depend on your libc.
+Use of this option is not recommended. Use gpg-agent with pinentry instead.
+
+(With current versions of gnupg you need to set \fBpinentry-mode loopback\fP
+in your .gnupg/gpg.conf file to use \fB\-\-ask\-passphrase\fP.
+Without that option gnupg uses the much safer and recommended pinentry instead).
+.TP
+.B \-\-noskipold
+When updating do not skip targets where no new index files and no files
+marked as already processed are available.
+
+If you changed a script to preprocess downloaded index files or
+changed a Listfilter, you most likely want to call reprepro with \-\-noskipold.
+.TP
+.B \-\-waitforlock \fIcount
+If there is a lockfile indicating another instance of reprepro is currently
+using the database, retry \fIcount\fP times after waiting for 10 seconds
+each time.
+The default is 0 and means to error out instantly.
+.TP
+.B \-\-spacecheck full\fR|\fPnone
+The default is \fBfull\fR:
+.br
+In the update commands, check for every to be downloaded file which filesystem
+it is on and how much space is left.
+.br
+To disable this behaviour, use \fBnone\fP.
+.TP
+.BI \-\-dbsafetymargin " bytes-count"
+If checking for free space, reserve \fIbyte-count\fP bytes on the filesystem
+containing the \fBdb/\fP directory.
+The default is 104857600 (i.e. 100MB), which is quite large.
+But as there is no way to know in advance how large the databases will
+grow and libdb is extremely touchy in that regard, lower only when you know
+what you do.
+.TP
+.BI \-\-safetymargin " bytes-count"
+If checking for free space, reserve \fIbyte-count\fP bytes on filesystems
+not containing the \fBdb/\fP directory.
+The default is 1048576 (i.e. 1MB).
+.TP
+.B \-\-noguessgpgtty
+Don't set the environment variable
+.BR GPG_TTY ,
+even when it is not set, stdin is terminal and
+.B /proc/self/fd/0
+is a readable symbolic link.
+.TP
+.B \-\-gnupghome
+Set the
+.B GNUPGHOME
+evnironment variable to the given directory as argument to this option.
+And your gpg will most likely use the content of this variable
+instead of "~/.gnupg".
+Take a look at
+.BR gpg (1)
+to be sure.
+This option in the command line is usually not very useful, as it is possible
+to set the environment variable directly.
+Its main reason for existence is that it can be used in \fIconf\fP\fB/options\fP.
+.TP
+.BI \-\-gunzip " gz-uncompressor"
+While reprepro links against \fBlibz\fP, it will look for the program given
+with this option (or \fBgunzip\fP if not given) and use that when uncompressing
+index files while downloading from remote repositories.
+(So that downloading and uncompression can happen at the same time).
+If the program is not found or is \fBNONE\fP (all-uppercase) then uncompressing
+will always be done using the built in uncompression method.
+The program has to accept the compressed file as stdin and write
+the uncompressed file into stdout.
+.TP
+.BI \-\-bunzip2 " bz2-uncompressor"
+When uncompressing downloaded index files or if not linked against \fBlibbz2\fP
+reprepro will use this program to uncompress \fB.bz2\fP files.
+The default value is \fBbunzip2\fP.
+If the program is not found or is \fBNONE\fP (all-uppercase) then uncompressing
+will always be done using the built in uncompression method or not be possible
+if not linked against \fBlibbz2\fP.
+The program has to accept the compressed file as stdin and write
+the uncompressed file into stdout.
+.TP
+.BI \-\-unlzma " lzma-uncompressor"
+When uncompressing downloaded index files or if not linked against \fBliblzma\fP
+reprepro will use this program to uncompress \fB.lzma\fP files.
+The default value is \fBunlzma\fP.
+If the program is not found or is \fBNONE\fP (all-uppercase)
+then uncompressing lzma files will always be done using
+the built in uncompression method
+or not be possible if not linked against \fBliblzma\fP.
+The program has to accept the compressed file as stdin and write
+the uncompressed file into stdout.
+.TP
+.BI \-\-unxz " xz-uncompressor"
+When uncompressing downloaded index files or if not linked against \fBliblzma\fP
+reprepro will use this program to uncompress \fB.xz\fP files.
+The default value is \fBunxz\fP.
+If the program is not found or is \fBNONE\fP (all-uppercase)
+then uncompressing xz files will always be done using
+the built in uncompression method
+or not be possible if not linked against \fBliblzma\fP.
+The program has to accept the compressed file as stdin and write
+the uncompressed file into stdout.
+.TP
+.BI \-\-lunzip " lzip-uncompressor"
+When trying to uncompress or read \fPlzip\fP compressed files, this program
+will be used.
+The default value is \fBlunzip\fP.
+If the program is not found or is \fBNONE\fP (all-uppercase) then uncompressing
+lz files will not be possible.
+The program has to accept the compressed file as stdin and write
+the uncompressed file into stdout.
+Note that .lz support is \fBDEPRECATED\fP and will be removed in the future.
+.TP
+.BI \-\-list\-max " count"
+Limits the output of \fBlist\fP, \fBlistmatched\fP and \fBlistfilter\fP to the first \fIcount\fP
+results.
+The default is 0, which means unlimited.
+.TP
+.BI \-\-list\-skip " count"
+Omitts the first \fIcount\fP results from the output of
+\fBlist\fP, \fBlistmatched\fP and \fBlistfilter\fP.
+.TP
+.BI \-\-list\-format " format"
+Set the output format of \fBlist\fP, \fBlistmatched\fP and \fBlistfilter\fP commands.
+The format is similar to dpkg\-query's \fB\-\-showformat\fP:
+fields are specified as
+.BI ${ fieldname }
+or
+.BI ${ fieldname ; length }\fR.\fP
+Zero length or no length means unlimited.
+Positive numbers mean fill with spaces right, negative fill with spaces left.
+
+.BR \[rs]n ", " \[rs]r ", " \[rs]t ", " \[rs]0
+are new-line, carriage-return, tabulator and zero-byte.
+Backslash (\fB\[rs]\fP) can be used to escape every non-letter-or-digit.
+
+The special field names
+.BR $identifier ", " $architecture ", " $component ", " $type ", " $codename
+denote where the package was found.
+
+The special field names
+.BR $source " and " $sourceversion
+denote the source and source version a package belongs to.
+(i.e.
+.B ${$source}
+will either be the same as
+.B ${source}
+(without a possible version in parentheses at the end)
+or the same as
+.BR ${package} .
+
+The special field names
+.BR $basename ", " $filekey " and " $fullfilename
+denote the first package file part of this entry
+(i.e. usually the .deb, .udeb or .dsc file)
+as basename, as filekey (filename relative to the outdir)
+and the full filename with outdir prepended
+(i.e. as relative or absolute as your
+outdir (or basedir if you did not set outdir) is).
+
+When \fB\-\-list\-format\fP is not given or \fBNONE\fP, then the default
+is equivalent to
+.br
+.BR "${$identifier} ${package} ${version}\[rs]n" .
+
+Escaping digits or letters not in above list,
+using dollars not escaped outside specified constructs,
+or any field names not listed as special and not consisting entirely out of
+letters, digits and minus signs have undefined behaviour
+and might change meaning without any further notice.
+
+If you give this option on the command line,
+don't forget that $ is also interpreted by your shell.
+So you have to properly escape it.
+For example by putting the whole argument to \-\-list\-format in single quotes.
+.TP
+.B \-\-show\-percent
+When downloading packages, show each completed percent of completed package
+downloads together with the size of completely downloaded packages.
+(Repeating this option increases the frequency of this output).
+.TP
+.B \-\-onlysmalldeletes
+The pull and update commands will skip every distribution in which one
+target loses more than 20% of its packages (and at least 10).
+
+Using this option (or putting it in the options config file) can
+avoid removing large quantities of data but means you might often
+give
+.B \-\-noonlysmalldeletes
+to override it.
+.TP
+.B \-\-restrict \fIsrc\fP\fR[\fP=\fIversion\fP\fR|\fP:\fItype\fP\fR]\fP
+Restrict a \fBpull\fP or \fBupdate\fP to only act on packages belonging
+to source-package \fIsrc\fP.
+Any other package will not be updated (unless it matches a \fB\-\-restrict\-bin\fP).
+Only packages that would otherwise be updated or are at least marked with \fBhold\fP
+in a \fBFilterList\fP or \fBFilerSrcList\fP will be updated.
+
+The action can be restricted to a source version using a equal sign or
+changed to another type (see FilterList) using a colon.
+
+This option can be given multiple times to list multiple packages, but each
+package may only be named once (even when there are different versions or types).
+.TP
+.B \-\-restrict\-binary \fIname\fP\fR[\fP=\fIversion\fP\fR|\fP:\fItype\fP\fR]\fP
+Like \fB\-\-restrict\fP but restrict to binary packages (\fB.deb\fP and \fB.udeb\fP).
+Source packages are not upgraded unless they appear in a \fB\-\-restrict\fP.
+.TP
+.B \-\-restrict\-file \fIfilename\fP
+Like \fB\-\-restrict\fP but read a whole file in the \fBFilterSrcList\fP format.
+.TP
+.B \-\-restrict\-file\-bin \fIfilename\fP
+Like \fB\-\-restrict\-bin\fP but read a whole file in the \fBFilterList\fP format.
+.TP
+.B \-\-endhook \fIhookscript\fP
+
+Run the specified \fIhookscript\fP once reprepro exits.
+It will get the usual \fBREPREPRO_\fP* environment variables set (or unset)
+and additionally a variable \fBREPREPRO_EXIT_CODE\fP that is the exit code
+with which reprepro would have exited (the hook is always called once the
+initial parsing of global options and the command name is done, no matter
+if reprepro did anything or not).
+Reprepro will return to the calling process with the exitcode of this script.
+Reprepro has closed all its databases and removed all its locks,
+so you can run reprepro again in this script
+(unless someone else did so in the same repository before, of course).
+
+The only advantage over running that command always directly after reprepro
+is that you can some environment variables set and cannot so easily forget
+it if this option is in conf/options.
+
+The script is supposed to be located relative to \fIconfdir\fP, unless its
+name starts with \fB/\fP, \fB./\fP, \fB+b/\fP, \fB+o/\fP, or \fB+c/\fP
+and the name may not start (except in the cases given before) with a \fB+\fP.
+
+An example script looks like: \fB
+ #!/bin/sh
+
+ if [ "$REPREPRO_EXIT_CODE" \-ne 0 ] ; then
+ exit "$REPREPRO_EXIT_CODE"
+ fi
+
+ echo "congratulations, reprepro with arguments: $*"
+ echo "seems to have run successfully. REPREPRO_ part of the environment is:"
+ set | grep ^REPREPRO_
+
+ exit 0
+ \fP
+.TP
+.B \-\-outhook \fIhookscript\fP
+\fIhookscript\fP is called with a \fB.outlog\fP file as argument (located
+in \fIlogdir\fP) containing a description of all changes made to \fIoutdir\fP.
+
+The script is supposed to be located relative to \fIconfdir\fP, unless its
+name starts with \fB/\fP, \fB./\fP, \fB+b/\fP, \fB+o/\fP, or \fB+c/\fP
+and the name may not start (except in the cases given before) with a \fB+\fP.
+
+For a format of the \fB.outlog\fP files generated for this script see the
+\fBmanual.html\fP shipped with reprepro.
+.SH COMMANDS
+.TP
+.BR export " [ " \fIcodenames\fP " ]"
+Generate all index files for the specified distributions.
+
+This regenerates all files unconditionally.
+It is only useful if you want to be sure \fBdists\fP is up to date,
+you called some other actions with \fB\-\-export=never\fP before or
+you want to create an initial empty but fully equipped
+.BI dists/ codename
+directory.
+.TP
+.RB " [ " \-\-delete " ] " createsymlinks " [ " \fIcodenames\fP " ]"
+Creates \fIsuite\fP symbolic links in the \fBdists/\fP-directory pointing
+to the corresponding \fIcodename\fP.
+
+It will not create links, when multiple of the given codenames
+would be linked from the same suite name, or if the link
+already exists (though when \fB\-\-delete\fP is given it
+will delete already existing symlinks)
+.TP
+.B list \fIcodename\fP \fR[\fP \fIpackagename\fP \fR]\fP
+List all packages (source and binary, except when
+.B \-T
+or
+.B \-A
+is given) with the given name in all components (except when
+.B \-C
+is given) and architectures (except when
+.B \-A
+is given) of the specified distribution.
+If no package name is given, list everything.
+The format of the output can be changed with \fB\-\-list\-format\fP.
+To only get parts of the result, use \fB\-\-list\-max\fP and
+\fB\-\-list\-skip\fP.
+.TP
+.B listmatched \fIcodename\fP \fIglob\fP
+as list, but does not list a single package, but all packages
+matching the given shell-like \fIglob\fP.
+(i.e. \fB*\fP, \fB?\fP and \fB[\fP\fIchars\fP\fB]\fP are allowed).
+
+Examples:
+
+.B reprepro \-b . listmatched test2 'linux\-*'
+lists all packages starting with \fBlinux\-\fP.
+
+.TP
+.B listfilter \fIcodename\fP \fIcondition\fP
+as list, but does not list a single package, but all packages
+matching the given condition.
+
+The format of the formulas is those of the dependency lines in
+Debian packages' control files with some extras.
+That means a formula consists of names of fields with a possible
+condition for its content in parentheses.
+These atoms can be combined with
+an exclamation mark '!' (meaning not),
+a pipe symbol '|' (meaning or) and
+a comma ',' (meaning and).
+Additionally parentheses can be used to change binding
+(otherwise '!' binds more than '|' than ',').
+
+The values given in the search expression are directly alphabetically
+compared to the headers in the respective index file.
+That means that each part \fIFieldname\fP\fB (\fP\fIcmp\fP\fB \fP\fIvalue\fP\fB)\fP
+of the formula will be true for exactly those package that have
+in the \fBPackage\fP or \fBSources\fP file a line starting with \fIfieldname\fP
+and a value is alphabetically \fIcmp\fP to \fIvalue\fP.
+
+Additionally since reprepro 3.11.0, '\fB%\fP' can be used as comparison operator,
+denoting matching a name with shell like wildcard
+(with '\fB*\fP', '\fB?\fP' and '\fB[\fP..\fB]\fP').
+
+The special field names starting with '\fB$\fP' have special meaning
+(available since 3.11.1):
+
+.B $Version
+
+The version of the package, comparison is not alphabetically, but as
+Debian version strings.
+
+.B $Source
+
+The source name of the package.
+
+.B $SourceVersion
+
+The source version of the package.
+
+.B $Architecture
+
+The architecture the package is in (listfilter) or to be put into.
+
+.B $Component
+
+The component the package is in (listfilter) or to be put into.
+
+.B $Packagetype
+
+The packagetype of the package.
+
+Examples:
+
+.B reprepro \-b . listfilter test2 'Section (== admin)'
+will list all packages in distribution test2 with a Section field and the value
+of that field being \fBadmin\fP.
+
+.B reprepro \-b . \-T deb listfilter test2 'Source (== \fIblub\fP) | ( !Source , Package (== \fIblub\fP) )'
+will find all .deb Packages with either a Source field blub or
+no Source field and a Package field blub.
+(That means all package generated by a source package \fIblub\fP,
+except those also specifying a version number with its Source).
+
+.B reprepro \-b . \-T deb listfilter test2 '$Source (==\fIblub\fP)'
+is the better way to do this (but only available since 3.11.1).
+
+.B reprepro \-b . listfilter test2 '$PackageType (==deb), $Source (==\fIblub\fP)'
+is another (less efficient) way.
+
+.B reprepro \-b . listfilter test2 'Package (% linux\-*\-2.6*)'
+lists all packages with names starting with \fBlinux\-\fP and later
+having an \fB\-2.6\fP.
+.TP
+.B ls \fIpackage-name\fP
+List the versions of the specified package in all distributions.
+.TP
+.B lsbycomponent \fIpackage-name\fP
+Like ls, but group by component (and print component names).
+.TP
+.B remove \fIcodename\fP \fIpackage-names\fP\fR[\fP=\fIversion\fP\fR]\fP \fI...\fP
+Delete packages in the specified distribution,
+that have package name listed as argument.
+Package versions must be specified by appending '\fB=\fP' and the
+version to the name (without spaces). When no version is specified, the latest
+package version is removed.
+
+Note that like any other operation removing or replacing a package,
+the old package's files are unreferenced and thus may be automatically
+deleted if this was their last reference and no \fB\-\-keepunreferencedfiles\fP
+specified.
+.TP
+.B removematched \fIcodename\fP \fIglob\fP
+Delete all packages \fBlistmatched\fP with the same arguments would list.
+.TP
+.B removefilter \fIcodename\fP \fIcondition\fP
+Delete all packages \fBlistfilter\fP with the same arguments would list.
+.TP
+.B removesrc \fIcodename\fP \fIsource-name\fP \fR[\fP\fIversion\fP\fR]\fP
+Remove all packages in distribution \fIcodename\fP belonging to source
+package \fIsource-name\fP.
+(Limited to those with source version \fIversion\fP if specified).
+
+If package tracking is activated, it will use that information to find the
+packages, otherwise it traverses all package indices for the distribution.
+.TP
+.B removesrcs \fIcodename\fP \fIsource-name\fP\fR[\fP=\fIversion\fP\fR]\fP \fI...\fP
+Like \fBremovesrc\fP, but can be given multiple source names
+and source versions must be specified by appending '\fB=\fP' and the version
+to the name (without spaces).
+.TP
+.BR update " [ " \fIcodenames\fP " ]"
+Sync the specified distributions (all if none given) as
+specified in the config with their upstreams. See the
+description of
+.B conf/updates
+below.
+.TP
+.BR checkupdate " [ " \fIcodenames\fP " ]"
+Same like
+.BR update ,
+but will show what it will change instead of actually changing it.
+.TP
+.BR dumpupdate " [ " \fIcodenames\fP " ]"
+Same like
+.BR checkupdate ,
+but less suitable for humans and more suitable for computers.
+.TP
+.BR predelete " [ " \fIcodenames\fP " ]"
+This will determine which packages a \fBupdate\fP would delete or
+replace and remove those packages.
+This can be useful for reducing space needed while upgrading, but
+there will be some time where packages are vanished from the
+lists so clients will mark them as obsolete.
+Plus if you cannot
+download a updated package in the (hopefully) following update
+run, you will end up with no package at all instead of an old one.
+This will also blow up \fB.diff\fP files if you are using the pdiff
+example or something similar.
+So be careful when using this option or better get some more space so
+that update works.
+.TP
+.B cleanlists
+Delete all files in \fIlistdir\fP (default \fIbasedir\fP\fB/lists\fP) that do not
+belong to any update rule for any distribution.
+I.e. all files are deleted in that directory that no \fBupdate\fP
+command in the current configuration can use.
+(The files are usually left there, so if they are needed again they
+do not need to be downloaded again. Though in many easy cases not
+even those files will be needed.)
+.TP
+.BR pull " [ " \fIcodenames\fP " ]"
+pull in newer packages into the specified distributions (all if none given)
+from other distributions in the same repository.
+See the description of
+.B conf/pulls
+below.
+.TP
+.BR checkpull " [ " \fIcodenames\fP " ]"
+Same like
+.BR pull ,
+but will show what it will change instead of actually changing it.
+.TP
+.BR dumppull " [ " \fIcodenames\fP " ]"
+Same like
+.BR checkpull ,
+but less suitable for humans and more suitable for computers.
+.TP
+.B includedeb \fIcodename\fP \fI.deb-filename\fP
+Include the given binary Debian package (.deb) in the specified
+distribution, applying override information and guessing all
+values not given and guessable.
+.TP
+.B includeudeb \fIcodename\fP \fI.udeb-filename\fP
+Same like \fBincludedeb\fP, but for .udeb files.
+.TP
+.B includedsc \fIcodename\fP \fI.dsc-filename\fP
+Include the given Debian source package (.dsc, including other files
+like .orig.tar.gz, .tar.gz and/or .diff.gz) in the specified
+distribution, applying override information and guessing all values
+not given and guessable.
+
+Note that .dsc files do not contain section or priority, but the
+Sources.gz file needs them.
+reprepro tries to parse .diff and .tar files for
+it, but is only able to resolve easy cases.
+If reprepro fails to extract those automatically,
+you have to either specify a DscOverride or give them via
+.B \-S
+and
+.B \-P
+.TP
+.B include \fIcodename\fP \fI.changes-filename\fP
+Include in the specified distribution all packages found and suitable
+in the \fI.changes\fP file, applying override information guessing all
+values not given and guessable.
+.TP
+.B processincoming \fIrulesetname\fP \fR[\fP\fI.changes-file\fP\fR]\fP
+Scan an incoming directory and process the .changes files found there.
+If a filename is supplied, processing is limited to that file.
+.I rulesetname
+identifies which rule-set in
+.B conf/incoming
+determines which incoming directory to use
+and in what distributions to allow packages into.
+See the section about this file for more information.
+.TP
+.BR check " [ " \fIcodenames\fP " ]"
+Check if all packages in the specified distributions have all files
+needed properly registered.
+.TP
+.BR checkpool " [ " fast " ]"
+Check if all files believed to be in the pool are actually still there and
+have the known md5sum. When
+.B fast
+is specified md5sum is not checked.
+.TP
+.BR collectnewchecksums
+Calculate all supported checksums for all files in the pool.
+(Versions prior to 3.3 did only store md5sums, 3.3 added sha1, 3.5 added sha256).
+.TP
+.BR translatelegacychecksums
+Remove the legacy \fBfiles.db\fP file after making sure all information
+is also found in the new \fBchecksums.db\fP file.
+(Alternatively you can call \fBcollecnewchecksums\fP and remove the file
+on your own.)
+.TP
+.B rereference
+Forget which files are needed and recollect this information.
+.TP
+.B dumpreferences
+Print out which files are marked to be needed by whom.
+.TP
+.B dumpunreferenced
+Print a list of all filed believed to be in the pool, that are
+not known to be needed.
+.TP
+.B deleteunreferenced
+Remove all known files (and forget them) in the pool not marked to be
+needed by anything.
+.TP
+.BR deleteifunreferenced " [ " \fIfilekeys\fP " ]"
+Remove the given files (and forget them) in the pool if they
+are not marked to be used by anything.
+If no command line arguments are given,
+stdin is read and every line treated as one filekey.
+This is mostly useful together with \fB\-\-keepunreferenced\fP
+in \fBconf/options\fP or in situations where one does not want
+to run \fBdeleteunreferenced\fP, which removes all files eligible
+to be deleted with this command.
+.TP
+.BR reoverride " [ " \fIcodenames\fP " ]"
+Reapply the override files to the given distributions (Or only parts
+thereof given by \fB\-A\fP,\fB\-C\fP or \fB\-T\fP).
+
+Note: only the control information is changed. Changing a section
+to a value, that would cause another component to be guessed, will
+not cause any warning.
+.TP
+.BR redochecksums " [ " \fIcodenames\fP " ]"
+Re-add the information about file checksums to the package indices.
+
+Usually the package's control information is created at inclusion
+time or imported from some remote source and not changed later.
+This command modifies it to re-add missing checksum types.
+
+Only checksums already known are used.
+To update known checksums about files run \fBcollectnewchecksums\fP first.
+
+.TP
+.BR dumptracks " [ " \fIcodenames\fP " ]"
+Print out all information about tracked source packages in the
+given distributions.
+.TP
+.BR retrack " [ " \fIcodenames\fP " ]"
+Recreate a tracking database for the specified distributions.
+This contains ouf of three steps.
+First all files marked as part of a source package are set to
+unused.
+Then all files actually used are marked as thus.
+Finally tidytracks is called remove everything no longer needed
+with the new information about used files.
+
+(This behaviour, though a bit longsome, keeps even files only
+kept because of tracking mode \fBkeep\fP and files not otherwise
+used but kept due to \fBincludechanges\fP or its relatives.
+Before version 3.0.0 such files were lost by running retrack).
+.TP
+.BR removealltracks " [ " \fIcodenames\fP " ]"
+Removes all source package tracking information for the
+given distributions.
+.TP
+.B removetrack " " \fIcodename\fP " " \fIsourcename\fP " " \fIversion\fP
+Remove the trackingdata of the given version of a given sourcepackage
+from a given distribution. This also removes the references for all
+used files.
+.TP
+.BR tidytracks " [ " \fIcodenames\fP " ]"
+Check all source package tracking information for the given distributions
+for files no longer to keep.
+.TP
+.B copy \fIdestination-codename\fP \fIsource-codename\fP \fIpackage\fP\fR[\fP=\fIversion\fP\fR]\fP \fI...\fP
+Copy the given packages from one distribution to another.
+The packages are copied verbatim, no override files are consulted.
+Only components and architectures present in the source distribution are
+copied. Package versions must be specified by appending '\fB=\fP' and the
+version to the name (without spaces). When no version is specified, the latest
+package version is copied.
+.TP
+.B copysrc \fIdestination-codename\fP \fIsource-codename\fP \fIsource-package\fP \fR[\fP\fIversions\fP\fR]\fP
+look at each package
+(where package means, as usual, every package be it dsc, deb or udeb)
+in the distribution specified by \fIsource-codename\fP
+and identifies the relevant source package for each.
+All packages matching the specified \fIsource-package\fP name
+(and any \fIversion\fP if specified)
+are copied to the \fIdestination-codename\fP distribution.
+The packages are copied verbatim, no override files are consulted.
+Only components and architectures present in the source distribution are
+copied.
+.TP
+.B copymatched \fIdestination-codename\fP \fIsource-codename\fP \fIglob\fP
+Copy packages matching the given glob (see \fBlistmatched\fP).
+
+The packages are copied verbatim, no override files are consulted.
+Only components and architectures present in the source distribution are
+copied.
+.TP
+.B copyfilter \fIdestination-codename\fP \fIsource-codename\fP \fIformula\fP
+Copy packages matching the given formula (see \fBlistfilter\fP).
+(all versions if no version is specified).
+The packages are copied verbatim, no override files are consulted.
+Only components and architectures present in the source distribution are
+copied.
+.TP
+.B move \fIdestination-codename\fP \fIsource-codename\fP \fIpackage\fP\fR[\fP=\fIversion\fP\fR]\fP \fI...\fP
+Move the given packages from one distribution to another.
+The packages are moved verbatim, no override files are consulted.
+Only components and architectures present in the source distribution are
+moved. Package versions must be specified by appending '\fB=\fP' and the
+version to the name (without spaces). When no version is specified, the latest
+package version is moved.
+.TP
+.B movesrc \fIdestination-codename\fP \fIsource-codename\fP \fIsource-package\fP \fR[\fP\fIversions\fP\fR]\fP
+look at each package
+(where package means, as usual, every package be it dsc, deb or udeb)
+in the distribution specified by \fIsource-codename\fP
+and identifies the relevant source package for each.
+All packages matching the specified \fIsource-package\fP name
+(and any \fIversion\fP if specified)
+are moved to the \fIdestination-codename\fP distribution.
+The packages are moved verbatim, no override files are consulted.
+Only components and architectures present in the source distribution are
+moved.
+.TP
+.B movematched \fIdestination-codename\fP \fIsource-codename\fP \fIglob\fP
+Move packages matching the given glob (see \fBlistmatched\fP).
+
+The packages are moved verbatim, no override files are consulted.
+Only components and architectures present in the source distribution are
+moved.
+.TP
+.B movefilter \fIdestination-codename\fP \fIsource-codename\fP \fIformula\fP
+Move packages matching the given formula (see \fBlistfilter\fP).
+(all versions if no version is specified).
+The packages are moved verbatim, no override files are consulted.
+Only components and architectures present in the source distribution are
+moved.
+.TP
+.B restore \fIcodename\fP \fIsnapshot\fP \fIpackages...\fP
+.TP
+.B restoresrc \fIcodename\fP \fIsnapshot\fP \fIsource-epackage\fP \fR[\fP\fIversions\fP\fR]\fP
+.TP
+.B restorefilter \fIdestination-codename\fP \fIsnapshot\fP \fIformula\fP
+.TP
+.B restorematched \fIdestination-codename\fP \fIsnapshot\fP \fIglob\fP
+Like the copy commands, but do not copy from another distribution,
+but from a snapshot generated with \fBgensnapshot\fP.
+Note that this blindly trusts the contents of the files in your \fBdists/\fP
+directory and does no checking.
+.TP
+.B clearvanished
+Remove all package databases that no longer appear in \fBconf/distributions\fP.
+If \fB\-\-delete\fP is specified, it will not stop if there are still
+packages left.
+Even without \fB\-\-delete\fP it will unreference
+files still marked as needed by this target.
+(Use \fB\-\-keepunreferenced\fP to not delete them if that was the last
+reference.)
+
+Do not forget to remove all exported package indices manually.
+.TP
+.B gensnapshot " " \fIcodename\fP " " \fIdirectoryname\fP
+Generate a snapshot of the distribution specified by \fIcodename\fP
+in the directory \fIdists\fB/\fIcodename\fB/snapshots/\fIdirectoryname\fB/\fR
+and reference all needed files in the pool as needed by that.
+No Content files are generated and no export hooks are run.
+
+Note that there is currently no automated way to remove that snapshot
+again (not even clearvanished will unlock the referenced files after the
+distribution itself vanished).
+You will have to remove the directory yourself and tell reprepro
+to \fBunreferencesnapshot \fP\fIcodename\fP\fB \fP\fIdirectoryname\fP before
+\fBdeleteunreferenced\fP will delete the files from the pool locked by this.
+
+To access such a snapshot with apt, add something like the following to
+your sources.list file:
+.br
+\fBdeb method://as/without/snapshot \fIcodename\fB/snapshots/\fIname\fB main\fR
+.TP
+.B unreferencesnapshot " " \fIcodename\fP " " \fIdirectoryname\fP
+Remove all references generated by an \fBgenshapshot\fP with the
+same arguments.
+This allows the next \fBdeleteunferenced\fP call to delete those files.
+(The indices in \fBdists/\fP for the snapshot are not removed.)
+.TP
+.BR rerunnotifiers " [ " \fIcodenames\fP " ]"
+Run all external scripts specified in the \fBLog:\fP options of the
+specified distributions.
+.TP
+.B build\-needing \fIcodename\fP \fIarchitecture\fP \fR[\fP \fIglob\fP \fR]\fP
+List source packages (matching \fIglob\fP) that likely need a build on the
+given architecture.
+
+List all source package in the given distribution without a binary package
+of the given architecture built from that version of the source,
+without a \fB.changes\fP or \fB.log\fP file for the given architecture,
+with an Architecture field including \fBany\fP, \fIos\fP\fB-any\fP (with
+\fIos\fP being the part before the hyphen in the architecture or \fBlinux\fP
+if there is no hyphen) or the architecture and
+at least one package in the Binary field not yet available.
+
+If instead of \fIarchitecture\fP the term \fBany\fP is used,
+all architectures are iterated and the architecture is printed as
+fourth field in every line.
+
+If the \fIarchitecture\fP is \fBall\fP, then only source packages
+with an Architecture field including \fBall\fP are considered
+(i.e. as above with real architectures but \fBany\fP does not suffice).
+Note that dpkg\-dev << 1.16.1 does not both set \fBany\fP and \fBall\fP
+so source packages building both architecture dependent and independent
+packages will never show up unless built with a new enough dpkg\-source).
+
+.TP
+.B translatefilelists
+Translate the file list cache within
+.IB db /contents.cache.db
+into the new format used since reprepro 3.0.0.
+
+Make sure you have at least half of the space of the current
+.IB db /contents.cache.db
+file size available in that partition.
+.TP
+.B flood \fIdistribution\fP \fR[\fP\fIarchitecture\fP\fR]\fP
+For each architecture of \fIdistribution\fP (or for the one specified)
+add architecture \fBall\fP packages from other architectures
+(but the same component or packagetype) under the following conditions:
+
+ Packages are only upgraded, never downgraded.
+ If there is a package not being architecture \fPall\fP,
+then architecture \fBall\fP packages of the same source from the same
+source version are preferred over those that have no such binary sibling.
+ Otherwise the package with the highest version wins.
+
+You can restrict with architectures are looked for architecture \fPall\fP
+packages using \fB\-A\fP and which components/packagetypes are flooded by
+\fB\-C\fP/\fB\-T\fP as usual.
+
+There are mostly two use cases for this command:
+If you added an new architecture to an distribution and want to copy all
+architecture \fBall\fP packages to it.
+Or if you included some architecture all packages only to some architectures
+using \fB\-A\fP to avoid breaking the other architectures for which the binary
+packages were still missing and now want to copy it to those architectures were
+they are unlikely to break something (because a newbinary is already available).
+.TP
+.B unusedsources \fR[\fP\fIdistributions\fP\fR]\fP
+List all source packages for which no binary package build from them is found.
+.TP
+.B sourcemissing \fR[\fP\fIdistributions\fP\fR]\fP
+List all binary packages for which no source package is found
+(the source package must be in the same distribution,
+but source packages only kept by package tracking is enough).
+.TP
+.B reportcruft \fR[\fP\fIdistributions\fP\fR]\fP
+List all source package versions that either have a source package
+and no longer a binary package or binary packages left without
+source package in the index. (Unless sourcemissing also list packages
+where the source package in only in the pool due to enabled tracking
+but no longer in the index).
+.TP
+.BR sizes " [ " \fIcodenames\fP " ]"
+List the size of all packages in the distributions specified or
+in all distributions.
+
+Each row contains 4 numbers, each being a number of bytes in a set
+of packages, which are:
+The packages in this distribution
+(including anything only kept because of tracking),
+the packages only in this distribution
+(anything in this distribution and a snapshot of this distribution
+counts as only in this distribution),
+the packages in this distribution and its snapshots,
+the packages only in this distribution or its snapshots.
+
+If more than one distribution is selected, also list a sum of those
+(in which 'Only' means only in selected ones, and not only only in
+one of the selected ones).
+
+.TP
+.BR repairdescriptions " [ " \fIcodenames\fP " ]"
+Look for binary packages only having a short description
+and try to get the long description from the .deb file
+(and also remove a possible Description-md5 in this case).
+.SS internal commands
+These are hopefully never needed, but allow manual intervention.
+.B WARNING:
+Is is quite easy to get into an inconsistent and/or unfixable state.
+.TP
+.BR _detect " [ " \fIfilekeys\fP " ]"
+Look for the files, which \fIfilekey\fP
+is given as argument or as a line of the input
+(when run without arguments), and calculate
+their md5sum and add them to the list of known files.
+(Warning: this is a low level operation, no input validation
+or normalization is done.)
+.TP
+.BR _forget " [ " \fIfilekeys\fP " ]"
+Like
+.B _detect
+but remove the given \fIfilekey\fP from the list of known
+files.
+(Warning: this is a low level operation, no input validation
+or normalization is done.)
+.TP
+.B _listmd5sums
+Print a list of all known files and their md5sums.
+.TP
+.B _listchecksums
+Print a list of all known files and their recorded checksums.
+.TP
+.B _addmd5sums
+alias for the newer
+.TP
+.B _addchecksums
+Add information of known files (without any check done)
+in the strict format of _listchecksums output (i.e. don't dare to
+use a single space anywhere more than needed).
+.TP
+.BI _dumpcontents " identifier"
+Printout all the stored information of the specified
+part of the repository. (Or in other words, the content
+the corresponding Packages or Sources file would get)
+
+This command is deprecated and will be removed in a future version.
+.TP
+.BI "_addreference " filekey " " identifier
+Manually mark \fIfilekey\fP to be needed by \fIidentifier\fP
+.TP
+.BI "_addreferences " identifier " \fR[\fR " filekeys " \fR]\fR"
+Manually mark one or more \fIfilekeys\fP to be needed by \fIidentifier\fP.
+If no command line arguments are given,
+stdin is read and every line treated as one filekey.
+.TP
+.BI "_removereference " identifier " " filekey
+Manually remove the given mark that the file is needed by this identifier.
+.TP
+.BI "_removereferences " identifier
+Remove all references what is needed by
+.I identifier.
+.TP
+.BI __extractcontrol " .deb-filename"
+Look what reprepro believes to be the content of the
+.B control
+file of the specified .deb-file.
+.TP
+.BI __extractfilelist " .deb-filename"
+Look what reprepro believes to be the list of files
+of the specified .deb-file.
+.TP
+.BI _fakeemptyfilelist " filekey"
+Insert an empty filelist for \fIfilekey\fP. This is a evil
+hack around broken .deb files that cannot be read by reprepro.
+.TP
+.B _addpackage \fIcodenam\fP \fIfilename\fP \fIpackages...\fP
+Add packages from the specified filename to part specified
+by \fB\-C\fP \fB\-A\fP and \fB\-T\fP of the specified distribution.
+Very strange things can happen if you use it improperly.
+.TP
+.B __dumpuncompressors
+List what compressions format can be uncompressed and how.
+.TP
+.BI __uncompress " format compressed-file uncompressed-file"
+Use builtin or external uncompression to uncompress the specified
+file of the specified format into the specified target.
+.TP
+.BR _listcodenames
+Print - on per line - the codenames of all configured distributions.
+.TP
+.B _listconfidentifiers \fIidentifier\fP \fR[\fP \fIdistributions...\fP \fR]\fP
+Print - one per line - all identifiers of subdatabases as derived from the
+configuration.
+If a list of distributions is given, only identifiers of those are printed.
+
+.TP
+.B _listdbidentifiers \fIidentifier\fP \fR[\fP \fIdistributions...\fP \fR]\fP
+Print - one per line - all identifiers of subdatabases in the current
+database.
+This will be a subset of the ones printed by \fB_listconfidentifiers\fP or
+most commands but \fBclearvanished\fP will refuse to run, and depending
+on the database compatibility version, will include all those if reprepro
+was run since the config was last changed.
+
+.SH "CONFIG FILES"
+.B reprepo
+uses three config files, which are searched in
+the directory specified with
+.B \-\-confdir
+or in the
+.B conf/
+subdirectory of the \fIbasedir\fP.
+
+If a file
+.B options
+exists, it is parsed line by line.
+Each line can be the long
+name of a command line option (without the \-\-)
+plus an argument, where possible.
+Those are handled as if they were command line options given before
+(and thus lower priority than) any other command line option.
+(and also lower priority than any environment variable).
+
+To allow command line options to override options file options,
+most boolean options also have a corresponding form starting with \fB\-\-no\fP.
+
+(The only exception is when the path to look for config files
+changes, the options file will only opened once and of course
+before any options within the options file are parsed.)
+
+The file
+.B distributions
+is always needed and describes what distributions
+to manage, while
+.B updates
+is only needed when syncing with external repositories and
+.B pulls
+is only needed when syncing with repositories in the same reprepro database.
+
+The last three are in the format control files in Debian are in,
+i.e. paragraphs separated by empty lines consisting of
+fields. Each field consists of a fieldname, followed
+by a colon, possible whitespace and the data. A field
+ends with a newline not followed by a space or tab.
+
+Lines starting with # as first character are ignored,
+while in other lines the # character and
+everything after it till the newline character are ignored.
+
+A paragraph can also consist of only a single field
+.RB \(dq !include: \(dq
+which causes the named file (relative to confdir unless starting
+with
+.BR ~/ ", " +b/ ", " +c/ " or " / " )"
+to be read as if it was found at this place.
+
+Each of the three files or a file included as described above
+can also be a directory, in which case all files it contains
+with a filename ending in
+.B .conf
+and not starting with
+.B .
+are read.
+.SS conf/distributions
+.TP
+.B Codename
+This required field is the unique identifier of a distribution
+and used as directory name within
+.B dists/
+It is also copied into the Release files.
+
+Note that this name is not supposed to change.
+You most likely \fBnever ever\fP want a name like \fBtesting\fP
+or \fBstable\fP here (those are suite names and supposed to point
+to another distribution later).
+.TP
+.B Suite
+This optional field is simply copied into the
+Release files. In Debian it contains names like
+stable, testing or unstable. To create symlinks
+from the Suite to the Codename, use the
+\fBcreatesymlinks\fP command of reprepro.
+.TP
+.B FakeComponentPrefix
+If this field is present,
+its argument is added - separated by a slash - before every
+Component written to the main Release file
+(unless the component already starts with it),
+and removed from the end of the Codename and Suite fields in that file.
+Also if a component starts with it, its directory in the dists dir
+is shortened by this.
+.br
+So \fB
+
+ Codename: bla/updates
+ Suite: foo/updates
+ FakeComponentPrefix: updates
+ Components: main bad\fP
+
+will create a Release file with \fB
+
+ Codename: bla
+ Suite: foo
+ Components: updates/main updates/bad\fP
+
+in it, but otherwise nothing is changed, while\fB
+
+ Codename: bla/updates
+ Suite: foo/updates
+ FakeComponentPrefix: updates
+ Components: updates/main updates/bad\fP
+
+will also create a Release file with \fB
+
+ Codename: bla
+ Suite: foo
+ Components: updates/main updates/bad\fP
+
+but the packages will actually be in the components
+\fBupdates/main\fP and \fBupdates/bad\fP,
+most likely causing the same file using duplicate storage space.
+
+This makes the distribution look more like Debian's security archive,
+thus work around problems with apt's workarounds for that.
+.TP
+.B AlsoAcceptFor
+A list of distribution names.
+When a \fB.changes\fP file is told to be included
+into this distribution with the \fBinclude\fP command
+and the distribution header of that file is neither
+the codename, nor the suite name, nor any name from the
+list, a \fBwrongdistribution\fP error is generated.
+The \fBprocess_incoming\fP command will also use this field,
+see the description of \fBAllow\fP and \fBDefault\fP
+from the \fBconf/incoming\fP file for more information.
+.TP
+.B Version
+This optional field is simply copied into the
+Release files.
+.TP
+.B Origin
+This optional field is simply copied into the
+Release files.
+.TP
+.B Label
+This optional field is simply copied into the
+Release files.
+.TP
+.B NotAutomatic
+This optional field is simply copied into the
+Release files.
+(The value is handled as an arbitrary string,
+though anything but \fByes\fP does not make much
+sense right now.)
+.TP
+.B ButAutomaticUpgrades
+This optional field is simply copied into the
+Release files.
+(The value is handled as an arbitrary string,
+though anything but \fByes\fP does not make much
+sense right now.)
+.TP
+.B Description
+This optional field is simply copied into the
+Release files.
+.TP
+.B Architectures
+This required field lists the binary architectures within
+this distribution and if it contains
+.B source
+(i.e. if there is an item
+.B source
+in this line this Distribution has source. All other items
+specify things to be put after "binary\-" to form directory names
+and be checked against "Architecture:" fields.)
+
+This will also be copied into the Release files. (With exception
+of the
+.B source
+item, which will not occur in the topmost Release file whether
+it is present here or not)
+.TP
+.B Components
+This required field lists the component of a
+distribution. See
+.B GUESSING
+for rules which component packages are included into
+by default. This will also be copied into the Release files.
+.TP
+.B DDebComponents
+List of components containing .ddebs.
+.TP
+.B UDebComponents
+Components with a debian\-installer subhierarchy containing .udebs.
+(E.g. simply "main")
+.TP
+.B Update
+When this field is present, it describes which update rules are used
+for this distribution. There also can be a magic rule minus ("\-"),
+see below.
+.TP
+.B Pull
+When this field is present, it describes which pull rules are used
+for this distribution.
+Pull rules are like Update rules,
+but get their stuff from other distributions and not from external sources.
+See the description for \fBconf/pulls\fP.
+.TP
+.B SignWith
+When this field is present, a Release.gpg file will be generated.
+If the value is "yes" or "default", the default key of gpg is used.
+If the field starts with an exclamation mark ("!"), the given script
+is executed to do the signing.
+Otherwise the value will be given to libgpgme to determine to key to
+use.
+
+If there are problems with signing, you can try
+.br
+.B gpg \-\-list\-secret\-keys \fIvalue\fP
+.br
+to see how gpg could interpret the value.
+If that command does not list any keys or multiple ones,
+try to find some other value (like the keyid),
+that gpg can more easily associate with a unique key.
+
+If this key has a passphrase, you need to use gpg\-agent
+or the insecure option \fB\-\-ask\-passphrase\fP.
+
+A '\fB!\fP' hook script is looked for in the confdir,
+unless it starts with
+.BR ~/ ", " ./ ", " +b/ ", " +o/ ", " +c/ " or " / " ."
+Is gets three command line arguments: The filename to sign,
+an empty argument or the filename to create with an inline
+signature (i.e. InRelease) and
+an empty argument or the filename to create an detached signature
+(i.e. Release.gpg).
+The script may generate no Release.gpg file if it choses to
+(then the repository will look like unsigned for older clients),
+but generating empty files is not allowed.
+Reprepro waits for the script to finish and will abort the exporting
+of the distribution this signing is part of unless the scripts
+returns normally with exit code 0.
+Using a space after ! is recommended to avoid incompatibilities
+with possible future extensions.
+.TP
+.B DebOverride
+When this field is present, it describes the override file used
+when including .deb files.
+.TP
+.B UDebOverride
+When this field is present, it describes the override file used
+when including .udeb files.
+.TP
+.B DscOverride
+When this field is present, it describes the override file used
+when including .dsc files.
+.TP
+.B DebIndices\fR, \fBUDebIndices\fR, \fBDscIndices
+Choose what kind of Index files to export. The first
+part describes what the Index file shall be called.
+The second argument determines the name of a Release
+file to generate or not to generate if missing.
+Then at least one of "\fB.\fP", "\fB.gz\fP", "\fB.xz\fP" or "\fB.bz2\fP"
+specifying whether to generate uncompressed output, gzipped
+output, bzip2ed output or any combination.
+(bzip2 is only available when compiled with bzip2 support,
+so it might not be available when you compiled it on your
+own, same for xz and liblzma).
+If an argument not starting with dot follows,
+it will be executed after all index files are generated.
+(See the examples for what argument this gets).
+The default is:
+.br
+DebIndices: Packages Release . .gz
+.br
+UDebIndices: Packages . .gz
+.br
+DscIndices: Sources Release .gz
+.TP
+.B ExportOptions
+Options to modify how and if exporting is done:
+.br
+.B noexport
+Never export this distribution.
+That means there will be no directory below \fBdists/\fP generated and the distribution is only useful to copy packages to other distributions.
+.br
+.B keepunknown
+Ignore unknown files and directories in the exported directory.
+This is currently the only available option and the default, but might change in the future, so it can already be requested explicitly.
+.TP
+.B Contents
+Enable the creation of Contents files listing all the files
+within the binary packages of a distribution.
+(Which is quite slow, you have been warned).
+
+In earlier versions, the first argument was a rate at which
+to extract file lists.
+As this did not work and was no longer easily possible after
+some factorisation, this is no longer supported.
+
+The arguments of this field is a space separated list of options.
+If there is a \fBudebs\fP keyword, \fB.udeb\fPs are also listed
+(in a file called \fBuContents\-\fP\fIarchitecture\fP.)
+If there is a \fBnodebs\fP keyword, \fB.deb\fPs are not listed.
+(Only useful together with \fBudebs\fP)
+If there is at least one of the keywords
+\fB.\fP, \fB.gz\fP, \fB\.xz\fP and/or \fB.bz2\fP,
+the Contents files are written uncompressed, gzipped and/or bzip2ed instead
+of only gzipped.
+
+If there is a \fBpercomponent\fP then one Contents\-\fIarch\fP file
+per component is created.
+If there is a \fBallcomponents\fP then one global Contents\-\fIarch\fP
+file is generated.
+If both are given, both are created.
+If none of both is specified then \fBpercomponent\fP is taken
+as default (earlier versions had other defaults).
+
+The switches \fBcompatsymlink\fP or \fBnocompatsymlink\fP
+(only possible if \fBallcomponents\fP was not specified explicitly)
+control whether a compatibility symlink is created so old versions
+of apt\-file looking for the component independent filenames at
+least see the contents of the first component.
+
+Unless \fBallcomponents\fP is given, \fBcompatsymlinks\fP
+currently is the default, but that will change
+in some future (current estimate: after wheezy was released)
+
+.TP
+.B ContentsArchitectures
+Limit generation of Contents files to the architectures given.
+If this field is not there, all architectures are processed.
+An empty field means no architectures are processed, thus not
+very useful.
+.TP
+.B ContentsComponents
+Limit what components are processed for the \fBContents\-\fP\fIarch\fP
+files to the components given.
+If this field is not there, all components are processed.
+An empty field is equivalent to specify \fBnodebs\fP in the
+\fBContents\fP field, while a non-empty field overrides a
+\fBnodebs\fP there.
+.TP
+.B ContentsUComponents
+Limit what components are processed for the uContents files to
+the components given.
+If this field is not there and there is the \fBudebs\fP keyword
+in the Contents field, all .udebs of all components are put
+in the \fBuContents.\fP\fIarch\fP files.
+If this field is not there and there is no \fBudebs\fP keyword
+in the Contents field, no \fBuContents\-\fP\fIarch\fP files are
+generated at all.
+A non-empty fields implies generation of \fBuContents\-\fP\fIarch\fP
+files (just like the \fBudebs\fP keyword in the Contents field),
+while an empty one causes no \fBuContents\-\fP\fIarch\fP files to
+be generated.
+.TP
+.B Uploaders
+Specifies a file (relative to confdir if not starting with
+.BR ~/ ", " +b/ ", " +c/ " or " / " )"
+to specify who is allowed to upload packages. Without this there are no
+limits, and this file can be ignored via \fB\-\-ignore=uploaders\fP.
+See the section \fBUPLOADERS FILES\fP below.
+.TP
+.B Tracking
+Enable the (experimental) tracking of source packages.
+The argument list needs to contain exactly one of the following:
+.br
+.B keep
+Keeps all files of a given source package, until that
+is deleted explicitly via \fBremovetrack\fP. This is
+currently the only possibility to keep older packages
+around when all indices contain newer files.
+.br
+.B all
+Keep all files belonging to a given source package until
+the last file of it is no longer used within that
+distribution.
+.br
+.B minimal
+Remove files no longer included in the tracked distribution.
+(Remove changes, logs and includebyhand files once no file is
+in any part of the distribution).
+.br
+And any number of the following (or none):
+.br
+.B includechanges
+Add the .changes file to the tracked files of a source package.
+Thus it is also put into the pool.
+.br
+.B includebyhand
+Add \fBbyhand\fP and \fBraw\-\fP\fI*\fP files to the tracked
+files and thus in the pool.
+.br
+.B includebuildinfos
+Add buildinfo files to the tracked files and thus in the pool.
+.br
+.B includelogs
+Add log files to the tracked files and thus in the pool.
+(Not that putting log files in changes files is a reprepro
+extension not found in normal changes files)
+.br
+.B embargoalls
+Not yet implemented.
+.br
+.B keepsources
+Even when using minimal mode, do not remove source files
+until no file is needed any more.
+.br
+.B needsources
+Not yet implemented.
+.TP
+.B Limit
+Limit the number of versions of a package per distribution, architecture,
+component, and type. The limit must be a number. If the number is positive,
+all old package version that exceed these limit will be removed or archived
+(see
+.B Archive
+option), when a new package version is added. If the number is zero or negative,
+all package version will be kept. By default only one package version will be
+kept.
+.TP
+.B Archive
+Specify a codename which must be declared before (to avoid loops). When packages
+exceed the version count limit (specified in \fBLimit\fR), these packages will
+be moved to the specified distribution instead of being removed.
+.TP
+.B Log
+Specify a file to log additions and removals of this distribution
+into and/or external scripts to call when something is added or
+removed.
+The rest of the \fBLog:\fP line is the filename,
+every following line (as usual, have to begin with a single space)
+the name of a script to call.
+The name of the script may be preceded with options of the
+form \fB\-\-type=\fP(\fBdsc\fP|\fBdeb\fP|\fBudeb\fP),
+\fB\-\-architecture=\fP\fIname\fP or
+\fB\-\-component=\fP\fIname\fP to only call the script for some
+parts of the distribution.
+An script with argument \fB\-\-changes\fP is called when a \fB.changes\fP
+file was accepted by \fBinclude\fP or \fBprocessincoming\fP (and with other
+arguments).
+Both type of scripts can have a \fB\-\-via=\fP\fIcommand\fP specified,
+in which case it is only called when caused by reprepro command \fIcommand\fP.
+
+For information how it is called and some examples take a look
+at manual.html in reprepro's source or
+.B /usr/share/doc/reprepro/
+
+If the filename for the log files does not start with a slash,
+it is relative to the directory specified with \fB\-\-logdir\fP,
+the scripts are relative to \fB\-\-confdir\fP unless starting with
+.BR ~/ ", " +b/ ", " +c/ " or " / .
+.TP
+.B ValidFor
+If this field exists, an Valid\-Until field is put into generated
+.B Release
+files for this distribution with an date as much in the future as the
+argument specifies.
+
+The argument has to be an number followed by one of the units
+.BR d ", " m " or " y ,
+where \fBd\fP means days, \fBm\fP means 31 days and \fBy\fP means
+365 days.
+So
+.B ValidFor: 1m 11 d
+causes the generation of a
+.B Valid\-Until:
+header in Release files that points 42 days into the future.
+.TP
+.B ReadOnly
+Disallow all modifications of this distribution or its directory
+in \fBdists/\fP\fIcodename\fP (with the exception of snapshot subdirectories).
+.TP
+.B ByHandHooks
+This species hooks to call for handling byhand/raw files by processincoming
+(and in future versions perhaps by include).
+
+Each line consists out of 4 arguments:
+A glob pattern for the section
+(classically \fBbyhand\fP, though Ubuntu uses \fBraw\-\fP*),
+a glob pattern for the priority (not usually used),
+and a glob pattern for the filename.
+
+The 4th argument is the script to be called when all of the above match.
+It gets 5 arguments: the codename of the distribution,
+the section (usually \fBbyhand\fP),
+the priority (usually only \fB\-\fP),
+the filename in the changes file and
+the full filename (with processincoming in the secure TempDir).
+.TP
+.B Signed\-By
+This optional field is simply copied into the Release files.
+It is used to tell apt which keys to trust for this Release
+in the future.
+(see SignWith for how to tell reprepro whether and how to sign).
+.SS conf/updates
+.TP
+.B Name
+The name of this update\-upstream as it can be used in the
+.B Update
+field in conf/distributions.
+.TP
+.B Method
+An URI as one could also give it apt, e.g.
+.I http://ftp.debian.de/debian
+which is simply given to the corresponding
+.B apt\-get
+method. (So either
+.B apt\-get has to be installed, or you have to point with
+.B \-\-methoddir
+to a place where such methods are found.
+.TP
+.B Fallback
+(Still experimental:) A fallback URI, where all files are
+tried that failed the first one. They are given to the
+same method as the previous URI (e.g. both http://), and
+the fallback-server must have everything at the same place.
+No recalculation is done, but single files are just retried from
+this location.
+.TP
+.B Config
+This can contain any number of lines, each in the format
+.B apt\-get \-\-option
+would expect. (Multiple lines \(hy as always \(hy marked with
+leading spaces).
+.P
+For example: Config: Acquire::Http::Proxy=http://proxy.yours.org:8080
+.TP
+.B From
+The name of another update rule this rules derives from.
+The rule containing the \fBFrom\fP may not contain
+.BR Method ", " Fallback " or " Config "."
+All other fields are used from the rule referenced in \fBFrom\fP, unless
+found in this containing the \fBFrom\fP.
+The rule referenced in \fBFrom\fP may itself contain a \fBFrom\fP.
+Reprepro will only assume two remote index files are the same,
+if both get their \fBMethod\fP information from the same rule.
+.TP
+.B Suite
+The suite to update from. If this is not present, the codename
+of the distribution using this one is used. Also "*/whatever"
+is replaced by "<codename>/whatever"
+.TP
+.B Components
+The components to update. Each item can be either the name
+of a component or a pair of a upstream component and a local
+component separated with ">". (e.g. "main>all contrib>all non\-free>notall")
+
+If this field is not there, all components from the distribution
+to update are tried.
+
+An empty field means no source or .deb packages are updated by this rule,
+but only .udeb packages, if there are any.
+
+A rule might list components not available in all distributions
+using this rule. In this case unknown components are silently
+ignored.
+(Unless you start reprepro with the \fB\-\-fast\fP option,
+it will warn about components unusable in all distributions using
+that rule. As exceptions, unusable components called \fBnone\fP
+are never warned about, for compatibility with versions prior to
+3.0.0 where and empty field had a different meaning.)
+.TP
+.B Architectures
+The architectures to update. If omitted all from the distribution
+to update from. (As with components, you can use ">" to download
+from one architecture and add into another one. (This only determine
+in which Package list they land, it neither overwrites the Architecture
+line in its description, nor the one in the filename determined from this
+one. In other words, it is no really useful without additional filtering))
+.TP
+.B UDebComponents
+Like
+.B Components
+but for the udebs.
+.TP
+.B VerifyRelease
+Download the
+.B Release.gpg
+file and check if it is a signature of the
+.B Releasefile
+with the key given here. (In the Format as
+"gpg \-\-with\-colons \-\-list\-key" prints it, i.e. the last
+16 hex digits of the fingerprint) Multiple keys can be specified
+by separating them with a "\fB|\fP" sign. Then finding a signature
+from one of the will suffice.
+To allow revoked or expired keys, add a "\fB!\fP" behind a key.
+(but to accept such signatures, the appropriate \fB\-\-ignore\fP
+is also needed).
+To also allow subkeys of a specified key, add a "\fB+\fP" behind a key.
+.TP
+.B IgnoreRelease: yes
+If this is present, no
+.B InRelease
+or
+.B Release
+file will be downloaded and thus the md5sums of the other
+index files will not be checked.
+.TP
+.B GetInRelease: no
+IF this is present, no
+.B InRelease
+file is downloaded but only
+.B Release
+(and
+.B Release.gpg
+)
+are tried.
+.TP
+.B Flat
+If this field is in an update rule, it is supposed to be a
+flat repository, i.e. a repository without a \fBdists\fP
+dir and no subdirectories for the index files.
+(If the corresponding \fBsources.list\fP line has the suite
+end with a slash, then you might need this one.)
+The argument for the \fBFlat:\fP field is the Component to
+put those packages into.
+No \fBComponents\fP or \fBUDebComponents\fP
+fields are allowed in a flat update rule.
+If the \fBArchitecture\fP field has any \fB>\fP items,
+the part left of the "\fB>\fP" is ignored.
+.br
+For example the \fBsources.list\fP line
+ deb http://cran.r\-project.org/bin/linux/debian etch\-cran/
+.br
+would translate to
+.br
+ Name: R
+ Method: http://cran.r\-project.org/bin/linux/debian
+ Suite: etch\-cran
+ Flat: whatevercomponentyoudlikethepackagesin
+.TP
+.B IgnoreHashes
+This directive tells reprepro to not check the listed
+hashes in the downloaded Release file (and only in the Release file).
+Possible values are currently \fBmd5\fP, \fBsha1\fP and \fBsha256\fP.
+
+Note that this does not speed anything
+up in any measurable way. The only reason to specify this if
+the Release file of the distribution you want to mirror from
+uses a faulty algorithm implementation.
+Otherwise you will gain nothing and only lose security.
+.TP
+.B FilterFormula
+This can be a formula to specify which packages to accept from
+this source. The format is misusing the parser intended for
+Dependency lines. To get only architecture all packages use
+"architecture (== all)", to get only at least important
+packages use "priority (==required) | priority (==important)".
+
+See the description of the listfilter command for the semantics
+of formulas.
+.TP
+.B FilterList\fR, \fPFilterSrcList
+These two options each take at least two arguments:
+The first argument is the fallback (default) action.
+All following arguments are treated as file names of lists.
+
+The filenames are considered to be relative to
+.B \-\-confdir\fR,
+if not starting with
+.BR ~/ ", " +b/ ", " +c/ " or " / "."
+
+Each list file consists of lines with a package name
+followed by whitespaced followed by an action.
+
+Each list may only contain a single line for a given package name.
+The action to be taken is the action specified by the first file
+mentioning that package.
+If no list file mentions a package, the fallback action is used instead.
+
+This format is inspired by dpkg \-\-get\-selections before multiarch
+and the names of the actions likely only make sense if you imagine the
+file to be the output of this command of an existing system.
+
+For each package available in the distribution to be updated from/pulled from
+this action is determined and affects the current decision what to do
+to the target distribution.
+(Only after all update/pull rules for a given target distribution have been
+processed something is actually done).
+
+The possible action keywords are:
+.RS
+.TP
+.B install
+mark the available package to be added to the target distribution unless
+the same version or a higher version is already marked as to be added/kept.
+(Note that without a prior delete rule (\fB\-\fP) or \fBsupersede\fP action,
+this will never downgrade a package as the already existing version
+is marked to be kept).
+.TP
+.B upgradeonly
+like \fBinstall\fP but will not add new packages to a distribution.
+.TP
+.B supersede
+unless the current package version is higher than the available package version,
+mark the package to be deleted in the target distribution.
+(Useful to remove packages in add-on distributions once they reached the base distribution).
+.TP
+.BR deinstall " or " purge
+ignore the newly available package.
+.TP
+.B warning
+print a warning message to stderr if a new package/newer version is available.
+Otherwise ignore the new package (like with \fBdeinstall\fP or \fBpurge\fP).
+.TP
+.B hold
+the new package is ignored, but every previous decision to
+downgrade or delete the package in the target distribution is reset.
+.TP
+.B error
+abort the whole upgrade/pull if a new package/newer version is available
+.TP
+.B "= \fIversion\fP"
+If the candidate package has the given version, behave like \fBinstall\fP.
+Otherwise continue as if this list file did not mention this package
+(i.e. look in the remaining list files or use the fallback action).
+Only one such entry per package is currently supported and the version
+is currently compared as string.
+.RE
+.PP
+.RS
+If there is both \fBFilterList\fP and \fBFilterSrcList\fP then
+the first is used for \fB.deb\fP and \fB.udeb\fP and the second for
+\fB.dsc\fP packages.
+.PP
+If there is only \fBFilterList\fP that is applied to everything.
+.PP
+If there is only \fBFilterSrcList\fP that is applied to everything, too,
+but the source package name (and source version) is used to do the lookup.
+.RE
+.TP
+.B OmitExtraSourceOnly
+This field controls whether source packages with Extra-Source-Only
+set are ignore when getting source packages.
+Without this option or if it is true, those source packages
+are ignored, while if set to no or false, those source packages
+are also candidates if no other filter excludes them.
+(The default of true will likely change once reprepro supports
+multiple versions of a package or has other means to keep the
+source packages around).
+.TP
+.B ListHook
+If this is given, it is executed for all downloaded index files
+with the downloaded list as first and a filename that will
+be used instead of this. (e.g. "ListHook: /bin/cp" works
+but does nothing.)
+
+If a file will be read multiple times, it is processed multiple
+times, with the environment variables
+.BR REPREPRO_FILTER_CODENAME ", " REPREPRO_FILTER_PACKAGETYPE ", "
+.BR REPREPRO_FILTER_COMPONENT " and " REPREPRO_FILTER_ARCHITECTURE
+set to the where this file will be added and
+.B REPREPRO_FILTER_PATTERN
+to the name of the update rule causing it.
+
+.TP
+.B ListShellHook
+This is like ListHook, but the whole argument is given to the shell
+as argument, and the input and output file are stdin and stdout.
+
+i.e.:
+.br
+ListShellHook: cat
+.br
+works but does nothing but useless use of a shell and cat, while
+.br
+ListShellHook: grep\-dctrl \-X \-S apt \-o \-X \-S dpkg || [ $? \-eq 1 ]
+.br
+will limit the update rule to packages from the specified source packages.
+.TP
+.B DownloadListsAs
+The arguments of this field specify which index files reprepro
+will download.
+
+Allowed values are
+.BR . ", " .gz ", " .bz2 ", " .lzma ", " .xz ", " .diff ", "
+.BR force.gz ", " force.bz2 ", " force.lzma ", "
+.BR force.xz ", and " force.diff "."
+
+Reprepro will try the first supported variant in the list given:
+Only compressions compiled in or for which an uncompressor was found
+are used.
+Unless the value starts with \fBforce.\fP,
+it is only tried if is found in the Release or InRelease file.
+
+The default value is \fB.diff .xz .lzma .bz2 .gz .\fP, i.e.
+download Packages.diff if listed in the Release file,
+otherwise or if not usable download .xz if
+listed in the Release file and there is a way to uncompress it,
+then .lzma if usable,
+then .bz2 if usable,
+then .gz and then uncompressed).
+
+Note there is no way to see if an uncompressed variant
+of the file is available (as the Release file always lists their
+checksums, even if not there),
+so putting '\fB.\fP' anywhere but as the last argument can mean
+trying to download a file that does not exist.
+
+Together with \fBIgnoreRelease\fP reprepro will download the first
+in this list that could be unpacked (i.e. \fBforce\fP is always assumed)
+and the default value is \fB.gz .bzip2 . .lzma .xz\fP.
+.SS conf/pulls
+This file contains the rules for pulling packages from one
+distribution to another.
+While this can also be done with update rules using the file
+or copy method and using the exported indices of that other
+distribution, this way is faster.
+It also ensures the current files are used and no copies
+are made.
+(This also leads to the limitation that pulling from one
+component to another is not possible.)
+
+Each rule consists out of the following fields:
+.TP
+.B Name
+The name of this pull rule as it can be used in the
+.B Pull
+field in conf/distributions.
+.TP
+.B From
+The codename of the distribution to pull packages from.
+.TP
+.B Components
+The components of the distribution to get from.
+
+If this field is not there,
+all components from the distribution to update are tried.
+
+A rule might list components not available in all distributions using this
+rule. In this case unknown components are silently ignored.
+(Unless you start reprepro with the \-\-fast option,
+it will warn about components unusable in all distributions using that rule.
+As exception, unusable components called \fBnone\fP are never warned about,
+for compatibility with versions prior to 3.0.0 where and empty field had
+a different meaning.)
+.TP
+.B Architectures
+The architectures to update.
+If omitted all from the distribution to pull from.
+As in
+.BR conf/updates ,
+you can use ">" to download
+from one architecture and add into another one. (And again, only useful
+with filtering to avoid packages not architecture \fBall\fP to migrate).
+.TP
+.B UDebComponents
+Like
+.B Components
+but for the udebs.
+.TP
+.B FilterFormula
+.TP
+.B FilterList
+.TP
+.B FilterSrcList
+The same as with update rules.
+.SH "OVERRIDE FILES"
+The format of override files used by reprepro
+should resemble the extended ftp\-archive format,
+to be specific it is:
+
+.B \fIpackagename\fP \fIfield name\fP \fInew value\fP
+
+For example:
+.br
+.B kernel\-image\-2.4.31\-yourorga Section protected/base
+.br
+.B kernel\-image\-2.4.31\-yourorga Priority standard
+.br
+.B kernel\-image\-2.4.31\-yourorga Maintainer That's me <me@localhost>
+.br
+.B reprepro Priority required
+
+All fields of a given package will be replaced by the new value specified
+in the override file
+with the exception of special fields starting with a dollar sign ($).
+While the field name is compared case-insensitive, it is copied in
+exactly the form in the override file there.
+(Thus I suggest to keep to the exact case it is normally found in
+index files in case some other tool confuses them.)
+More than copied is the Section header (unless \fB\-S\fP is supplied),
+which is also used to guess the component (unless \fB\-C\fP is there).
+
+Some values like \fBPackage\fP, \fBFilename\fP, \fBSize\fP or \fBMD5sum\fP
+are forbidden, as their usage would severely confuse reprepro.
+
+As an extension reprepro also supports patterns instead of packagenames.
+If the package name contains '*', '[' or '?',
+it is considered a pattern
+and applied to each package
+that is not matched by any non-pattern override nor by any previous pattern.
+
+Fieldnames starting with a dollar ($) are not be placed in the
+exported control data but have special meaning.
+Unknown ones are loudly ignored.
+Special fields are:
+
+ \fB$Component\fP: includedeb, includedsc, include and processincoming
+will put the package in the component given as value
+(unless itself overridden with \fB\-C\fP).
+Note that the proper way to specify the component is by setting the
+section field and using this extension will most likely confuse people
+and/or tools.
+
+ \fB$Delete\fP: the value is treated a fieldname and fields of that
+name are removed.
+(This way one can remove fields previously added without removing and
+re-adding the package.
+And fields already included in the package can be removed, too).
+
+.SS conf/incoming
+Every chunk is a rule set for the
+.B process_incoming
+command.
+Possible fields are:
+.TP
+.B Name
+The name of the rule-set, used as argument to the scan command to specify
+to use this rule.
+.TP
+.B IncomingDir
+The Name of the directory to scan for
+.B .changes
+files.
+.TP
+.B TempDir
+A directory where the files listed in the processed .changes files
+are copied into before they are read.
+You can avoid some copy operations by placing this directory
+within the same mount point the pool hierarchy
+is (at least partially) in.
+.TP
+.B LogDir
+A directory where .changes files, .log files, .buildinfo files
+and otherwise unused .byhand files are stored upon procession.
+.TP
+.B Allow
+Each argument is either a pair \fIname1\fB>\fIname2\fR or simply
+\fIname\fP which is short for \fIname\fB>\fIname\fR.
+Each \fIname2\fP must identify a distribution,
+either by being Codename, a unique Suite, or a unique AlsoAcceptFor
+from \fBconf/distributions\fP.
+Each upload has each item in its
+.B Distribution:
+header compared first to last with each \fIname1\fP in the rules
+and is put in the first one accepting this package. e.g.:
+.br
+Allow: local unstable>sid
+.br
+or
+.br
+Allow: stable>security\-updates stable>proposed\-updates
+.br
+(Note that this makes only sense if Multiple is set to true or if
+there are people only allowed to upload to proposed\-updates but
+not to security\-updates).
+.TP
+.B Default \fIdistribution
+Every upload not put into any other distribution because
+of an Allow argument is put into \fIdistribution\fP if that
+accepts it.
+.TP
+.B Multiple
+Old form of Options: multiple_distributions.
+.TP
+.B Options
+A list of options
+.br
+.B multiple_distributions
+.br
+Allow including a upload in multiple distributions.
+
+If a .changes file lists multiple distributions,
+then reprepro will start with the first name given,
+check all Accept and Default options till it finds
+a distribution this upload can go into.
+
+If this found no distribution or if this option was given,
+reprepro will then do the same with the second distribution name
+given in the .changes file and so on.
+.br
+.B limit_arch_all
+.br
+If an upload contains binaries from some architecture and architecture
+all packages,
+the architecture all packages are only put into the architectures within
+this upload.
+Useful to combine with the \fBflood\fP command.
+.TP
+.B Permit
+A list of options to allow things otherwise causing errors:
+.br
+.B unused_files
+.br
+Do not stop with error if there are files listed in the \fB.changes\fP
+file if it lists files not belonging to any package in it.
+.br
+.B older_version
+.br
+Ignore a package not added because there already is a strictly newer
+version available instead of treating this as an error.
+.br
+.B unlisted_binaries
+.br
+Do not abort with an error if a .changes file contains .deb files that
+are not listed in the Binaries header.
+.TP
+.B Cleanup \fIoptions
+A list of options to cause more files in the incoming directory to be
+deleted:
+.br
+.B unused_files
+.br
+If there is \fBunused_files\fP in \fBPermit\fP then also delete those
+files when the package is deleted after successful processing.
+.br
+.B unused_buildinfo_files
+.br
+If .buildinfo files of processed .changes files are not used (neither
+stored by LogDir nor with Tracking: includebuildinfos) then delete them
+from the incoming dir.
+(This option has no additional effect if \fBunused_files\fP is already used.)
+.br
+.B on_deny
+.br
+If a \fB.changes\fP file is denied processing because of missing signatures
+or allowed distributions to be put in, delete it and all the files it references.
+.br
+.B on_error
+.br
+If a \fB.changes\fP file causes errors while processing, delete it and the files
+it references.
+
+Note that allowing cleanup in publicly accessible incoming queues allows a denial
+of service by sending in .changes files deleting other peoples files before they
+are completed.
+Especially when .changes files are handled directly (e.g. by inoticoming).
+
+.TP
+.B MorgueDir
+If files are to be deleted by Cleanup, they are instead moved to a subdirectory
+of the directory given as value to this field.
+This directory has to be on the same partition as the incoming directory and
+files are moved (i.e. owner and permission stay the same) and never copied.
+
+.SH "UPLOADERS FILES"
+These files specified by the \fBUploaders\fP header in the distribution
+definition as explained above describe what key a \fB.changes\fP file
+as to be signed with to be included in that distribution.
+.P
+Empty lines and lines starting with a hash are ignored, every other line
+must be of one of the following nine forms or an include directive:
+.TP
+.B allow \fIcondition\fP by anybody
+which allows everyone to upload packages matching \fIcondition\fP,
+.TP
+.B allow \fIcondition\fP by unsigned
+which allows everything matching that has no pgp/gpg header,
+.TP
+.B allow \fIcondition\fP by any key
+which allows everything matching with any valid signature in or
+.TP
+.B allow \fIcondition\fP by key \fIkey-id\fP
+which allows everything matching signed by this \fIkey-id\fP
+(to be specified without any spaces).
+If the \fIkey-id\fP ends with a \fB+\fP (plus), a signature with a subkey of
+this primary key also suffices.
+
+\fIkey-id\fP must be a suffix of the id libgpgme uses to identify this key,
+i.e. a number of hexdigits from the end of the fingerprint of the key, but
+no more than what libgpgme uses.
+(The maximal number should be what gpg \-\-list-key \-\-with\-colons prints,
+as of the time of this writing that is at most 16 hex-digits).
+.TP
+.B allow \fIcondition\fP by group \fIgroupname\fP
+which allows every member of group \fIgroupname\fP.
+Groups can be manipulated by
+.TP
+.B group \fIgroupname\fP add \fIkey-id\fP
+to add a \fIkey-id\fP (see above for details) to this group, or
+.TP
+.B group \fIgroupname\fP contains \fIgroupname\fP
+to add a whole group to a group.
+
+To avoid warnings in incomplete config files there is also
+.TP
+.B group \fIgroupname\fP empty
+to declare a group has no members (avoids warnings that it is used without those)
+and
+.TP
+.B group \fIgroupname\fP unused
+to declare that a group is not yet used (avoid warnings that it is not used).
+.PP
+A line starting with \fBinclude\fP causes the rest of the line to be
+interpreted as filename, which is opened and processed before the rest
+of the file is processed.
+
+The only conditions currently supported are:
+.TP
+.B *
+which means any package,
+.TP
+.BI "source '" name '
+which means any package with source \fIname\fP.
+('\fB*\fP', '\fB?\fP' and '\fB[\fP..\fB]\fP' are treated as in shell wildcards).
+.TP
+.B sections '\fIname\fP'\fR(\fP|'\fIname\fP'\fR)*\fP
+matches an upload in which each section matches one of the names
+given.
+As upload conditions are checked very early,
+this is the section listed in the .changes file,
+not the one from the override file.
+(But this might change in the future,
+if you have the need for the one or the other behavior, let me know).
+.TP
+.B sections contain '\fIname\fP'\fR(\fP|'\fIname\fP'\fR)*\fP
+The same, but not all sections must be from the given set,
+but at least one source or binary package needs to have one of those given.
+.TP
+.B binaries '\fIname\fP'\fR(\fP|'\fIname\fP'\fR)*\fP
+matches an upload in which each binary (type deb or udeb)
+matches one of the names given.
+.TP
+.B binaries contain '\fIname\fP'\fR(\fP|'\fIname\fP'\fR)*\fP
+again only at least one instead of all is required.
+.TP
+.B architectures '\fIarchitecture\fP'\fR(\fP|'\fIname\fP'\fR)*\fP
+matches an upload in which each package has only architectures
+from the given set.
+\fBsource\fP and \fBall\fP are treated as unique architectures.
+Wildcards are not allowed.
+.TP
+.B architectures contain '\fIarchitecture\fP'\fR(\fP|'\fIarchitecture\fP'\fR)*\fP
+again only at least one instead of all is required.
+.TP
+.B byhand
+matches an upload with at least one byhand file
+(i.e. a file with section \fBbyhand\fP or \fBraw\-\fP\fIsomething\fP).
+.TP
+.B byhand '\fIsection\fP'\fR(\fP|'\fIsection\fP'\fR)*\fP
+matches an upload with at least one byhand file and
+all byhand files having a section listed in the list of given section.
+(i.e. \fBbyhand 'byhand'|'raw\-*'\fP is currently is the same as \fBbyhand\fP).
+.TP
+.BI "distribution '" codename '
+which means any package when it is to be included in \fIcodename\fP.
+As the uploaders file is given by distribution, this is only useful
+to reuse a complex uploaders file for multiple distributions.
+.PP
+Putting \fBnot\fP in front of a condition, inverses it's meaning.
+For example
+.br
+\fBallow not source 'r*' by anybody\fP
+.br
+means anybody may upload packages which source name does not start
+with an 'r'.
+.PP
+Multiple conditions can be connected with \fBand\fP and \fBor\fP,
+with \fBor\fP binding stronger (but both weaker than \fBnot\fP).
+That means
+.br
+\fBallow source 'r*' and source '*xxx' or source '*o' by anybody\fP
+.br
+is equivalent to
+.br
+\fBallow source 'r*xxx' by anybody\fP
+.br
+\fBallow source 'r*o' by anybody\fP
+
+(Other conditions
+will follow once somebody tells me what restrictions are useful.
+Currently planned is only something for architectures).
+.SH "ERROR IGNORING"
+With \fB\-\-ignore\fP on the command line or an \fIignore\fP
+line in the options file, the following type of errors can be
+ignored:
+.TP
+.B brokenold \fR(hopefully never seen)
+If there are errors parsing an installed version of package, do not
+error out, but assume it is older than anything else, has not files
+or no source name.
+.TP
+.B brokensignatures
+If a .changes or .dsc file contains at least one invalid signature
+and no valid signature (not even expired or from an expired or revoked key),
+reprepro assumes the file got corrupted and refuses to use it unless this
+ignore directive is given.
+.TP
+.B brokenversioncmp \fR(hopefully never seen)
+If comparing old and new version fails, assume the new one is newer.
+.TP
+.B dscinbinnmu
+If a .changes file has an explicit Source version that is different the
+to the version header of the file,
+than reprepro assumes it is binary non maintainer upload (NMU).
+In that case, source files are not permitted in .changes files
+processed by
+.B include
+or
+.BR processincoming .
+Adding \fB\-\-ignore=dscinbinnmu\fP allows it for the \fBinclude\fP
+command.
+.TP
+.B emptyfilenamepart \fR(insecure)
+Allow strings to be empty that are used to construct filenames.
+(like versions, architectures, ...)
+.TP
+.B extension
+Allow one to \fBincludedeb\fP files that do not end with \fB.deb\fP,
+to \fBincludedsc\fP files not ending in \fB.dsc\fP and to
+\fBinclude\fP files not ending in \fB.changes\fP.
+.TP
+.B forbiddenchar \fR(insecure)
+Do not insist on Debian policy for package and source names
+and versions.
+Thus allowing all 7-bit characters but slashes (as they would
+break the file storage) and things syntactically active
+(spaces, underscores in filenames in .changes files, opening
+parentheses in source names of binary packages).
+To allow some 8-bit chars additionally, use \fB8bit\fP additionally.
+.TP
+.B 8bit \fR(more insecure)
+Allow 8-bit characters not looking like overlong UTF-8 sequences
+in filenames and things used as parts of filenames.
+Though it hopefully rejects overlong UTF-8 sequences, there might
+be other characters your filesystem confuses with special characters,
+thus creating filenames possibly equivalent to
+\fB/mirror/pool/main/../../../etc/shadow\fP
+(Which should be safe, as you do not run reprepro as root, do you?)
+or simply overwriting your conf/distributions file adding some commands
+in there. So do not use this if you are paranoid, unless you are paranoid
+enough to have checked the code of your libs, kernel and filesystems.
+.TP
+.B ignore \fR(for forward compatibility)
+Ignore unknown ignore types given to \fI\-\-ignore\fP.
+.TP
+.B flatandnonflat \fR(only suppresses a warning)
+Do not warn about a flat and a non-flat distribution from the same
+source with the same name when updating.
+(Hopefully never ever needed.)
+.TP
+.B malformedchunk \fR(I hope you know what you do)
+Do not stop when finding a line not starting with a space but
+no colon(:) in it. These are otherwise rejected as they have no
+defined meaning.
+.TP
+.B missingfield \fR(safe to ignore)
+Ignore missing fields in a .changes file that are only checked but
+not processed.
+Those include: Format, Date, Urgency, Maintainer, Description, Changes
+.TP
+.B missingfile \fR(might be insecure)
+When including a .dsc file from a .changes file,
+try to get files needed but not listed in the .changes file
+(e.g. when someone forgot to specify \-sa to dpkg\-buildpackage)
+from the directory the .changes file is in instead of erroring out.
+(\fB\-\-delete\fP will not work with those files, though.)
+.TP
+.B spaceonlyline \fR(I hope you know what you do)
+Allow lines containing only (but non-zero) spaces. As these
+do not separate chunks as thus will cause reprepro to behave
+unexpected, they cause error messages by default.
+.TP
+.B surprisingarch
+Do not reject a .changes file containing files for a
+architecture not listed in the Architecture-header within it.
+.TP
+.B surprisingbinary
+Do not reject a .changes file containing .deb files containing
+packages whose name is not listed in the "Binary:" header
+of that changes file.
+.TP
+.B undefinedtarget \fR(hope you are not using the wrong db directory)
+Do not stop when the packages.db file contains databases for
+codename/packagetype/component/architectures combinations that are
+not listed in your distributions file.
+
+This allows you to temporarily remove some distribution from the config files,
+without having to remove the packages in it with the \fBclearvanished\fP
+command.
+You might even temporarily remove single architectures or components,
+though that might cause inconsistencies in some situations.
+.TP
+.B undefinedtracking \fR(hope you are not using the wrong db directory)
+Do not stop when the tracking file contains databases for
+distributions that are not listed in your \fBdistributions\fP file.
+
+This allows you to temporarily remove some distribution from the config files,
+without having to remove the packages in it with the \fBclearvanished\fP
+command.
+You might even temporarily disable tracking in some distribution, but that
+is likely to cause inconsistencies in there, if you do not know, what you
+are doing.
+.TP
+.B unknownfield \fR(for forward compatibility)
+Ignore unknown fields in the config files, instead of refusing to run
+then.
+.TP
+.B unusedarch \fR(safe to ignore)
+No longer reject a .changes file containing no files for any of the
+architectures listed in the Architecture-header within it.
+.TP
+.B unusedoption
+Do not complain about command line options not used by the
+specified action (like \fB\-\-architecture\fP).
+.TP
+.B uploaders
+The include command will accept packages that would otherwise been
+rejected by the uploaders file.
+.TP
+.B wrongarchitecture \fR(safe to ignore)
+Do not warn about wrong "Architecture:" lines in downloaded
+Packages files.
+(Note that wrong Architectures are always ignored when getting
+stuff from flat repositories or importing stuff from one architecture
+to another).
+.TP
+.B wrongdistribution \fR(safe to ignore)
+Do not error out if a .changes file is to be placed in a
+distribution not listed in that files' Distributions: header.
+.TP
+.B wrongsourceversion
+Do not reject a .changes file containing .deb files with
+a different opinion on what the version of the source package is.
+.br
+(Note: reprepro only compares literally here, not by meaning.)
+.TP
+.B wrongversion
+Do not reject a .changes file containing .dsc files with
+a different version.
+.br
+(Note: reprepro only compares literally here, not by meaning.)
+.TP
+.B expiredkey \fR(I hope you know what you do)
+Accept signatures with expired keys.
+(Only if the expired key is explicitly requested).
+.TP
+.B expiredsignature \fR(I hope you know what you do)
+Accept expired signatures with expired keys.
+(Only if the key is explicitly requested).
+.TP
+.B revokedkey \fR(I hope you know what you do)
+Accept signatures with revoked keys.
+(Only if the revoked key is explicitly requested).
+.SH GUESSING
+When including a binary or source package without explicitly
+declaring a component with
+.B \-C
+it will take the
+first component with the name of the section, being
+prefix to the section, being suffix to the section
+or having the section as prefix or any. (In this order)
+
+Thus having specified the components:
+"main non\-free contrib non\-US/main non\-US/non\-free non\-US/contrib"
+should map e.g.
+"non\-US" to "non\-US/main" and "contrib/editors" to "contrib",
+while having only "main non\-free and contrib" as components should
+map "non\-US/contrib" to "contrib" and "non\-US" to "main".
+
+.B NOTE:
+Always specify main as the first component, if you want things
+to end up there.
+
+.B NOTE:
+unlike in dak, non\-US and non\-us are different things...
+.SH NOMENCLATURE
+.B Codename
+the primary identifier of a given distribution. This are normally
+things like \fBsarge\fP, \fBetch\fP or \fBsid\fP.
+.TP
+.B basename
+the name of a file without any directory information.
+.TP
+.B byhand
+Changes files can have files with section 'byhand' (Debian) or 'raw\-' (Ubuntu).
+Those files are not packages but other data generated (usually together with
+packages) and then uploaded together with this changes files.
+
+With reprepro those can be stored in the pool next to their packages with
+tracking, put in some log directory when using processincoming, or given to
+an hook script (currently only possible with processincoming).
+.TP
+.B filekey
+the position relative to the outdir. (as found in "Filename:" in Packages.gz)
+.TP
+.B "full filename"
+the position relative to /
+.TP
+.B architecture
+The term like \fBsparc\fP, \fBi386\fP, \fBmips\fP, ... .
+To refer to the source packages, \fBsource\fP
+is sometimes also treated as architecture.
+.TP
+.B component
+Things like \fBmain\fP, \fBnon\-free\fP and \fBcontrib\fP
+(by policy and some other programs also called section, reprepro follows
+the naming scheme of apt here.)
+.TP
+.B section
+Things like \fBbase\fP, \fBinterpreters\fP, \fBoldlibs\fP and \fBnon\-free/math\fP
+(by policy and some other programs also called subsections).
+.TP
+.B md5sum
+The checksum of a file in the format
+"\fI<md5sum of file>\fP \fI<length of file>\fP"
+.SH Some note on updates
+.SS A version is not overwritten with the same version.
+.B reprepro
+will never update a package with a version it already has. This would
+be equivalent to rebuilding the whole database with every single upgrade.
+To force the new same version in, remove it and then update.
+(If files of
+the packages changed without changing their name, make sure the file is
+no longer remembered by reprepro.
+Without \fB\-\-keepunreferencedfiled\fP
+and without errors while deleting it should already be forgotten, otherwise
+a \fBdeleteunreferenced\fP or even some \fB__forget\fP might help.)
+.SS The magic delete rule ("\-").
+A minus as a single word in the
+.B Update:
+line of a distribution marks everything to be deleted. The mark causes later rules
+to get packages even if they have (strict) lower versions. The mark will
+get removed if a later rule sets the package on hold (hold is not yet implemented,
+in case you might wonder) or would get a package with the same version
+(Which it will not, see above). If the mark is still there at the end of the processing,
+the package will get removed.
+.P
+Thus the line "Update: \-
+.I rules
+" will cause all packages to be exactly the
+highest Version found in
+.I rules.
+The line "Update:
+.I near
+\-
+.I rules
+" will do the same, except if it needs to download packages, it might download
+it from
+.I near
+except when too confused. (It will get too confused e.g. when
+.I near
+or
+.I rules
+have multiple versions of the package and the highest in
+.I near
+is not the first one in
+.I rules,
+as it never remember more than one possible spring for a package.
+.P
+Warning: This rule applies to all type/component/architecture triplets
+of a distribution, not only those some other update rule applies to.
+(That means it will delete everything in those!)
+.SH ENVIRONMENT VARIABLES
+Environment variables are always overwritten by command line options,
+but overwrite options set in the \fBoptions\fP file. (Even when the
+options file is obviously parsed after the environment variables as
+the environment may determine the place of the options file).
+.TP
+.B REPREPRO_BASE_DIR
+The directory in this variable is used instead of the current directory,
+if no \fB\-b\fP or \fB\-\-basedir\fP options are supplied.
+.br
+It is also set in all hook scripts called by reprepro
+(relative to the current directory or absolute,
+depending on how reprepro got it).
+.TP
+.B REPREPRO_CONFIG_DIR
+The directory in this variable is used when no \fB\-\-confdir\fP is
+supplied.
+.br
+It is also set in all hook scripts called by reprepro
+(relative to the current directory or absolute,
+depending on how reprepro got it).
+.TP
+.B REPREPRO_OUT_DIR
+This is not used, but only set in hook scripts called by reprepro
+to the directory in which the \fBpool\fP subdirectory resides
+(relative to the current directory or absolute,
+depending on how reprepro got it).
+.TP
+.B REPREPRO_DIST_DIR
+This is not used, but only set in hook scripts called by reprepro
+to the \fBdists\fP directory (relative to the current directory or
+absolute, depending on how reprepro got it).
+.TP
+.B REPREPRO_LOG_DIR
+This is not used, but only set in hook scripts called by reprepro
+to the value setable by \fB\-\-logdir\fP.
+.TP
+.B REPREPRO_CAUSING_COMMAND
+.TP
+.B REPREPRO_CAUSING_FILE
+Those two environment variable are set (or unset) in
+\fBLog:\fP and \fBByHandHooks:\fP scripts and hint what command
+and what file caused the hook to be called (if there is some).
+.TP
+.B REPREPRO_CAUSING_RULE
+This environment variable is set (or unset) in
+\fBLog:\fP scripts and hint what update or pull rule caused
+this change.
+.TP
+.B REPREPRO_FROM
+This environment variable is set (or unset) in
+\fBLog:\fP scripts and denotes what other distribution a
+package is copied from (with pull and copy commands).
+.TP
+.B REPREPRO_FILTER_ARCHITECTURE
+.TP
+.B REPREPRO_FILTER_CODENAME
+.TP
+.B REPREPRO_FILTER_COMPONENT
+.TP
+.B REPREPRO_FILTER_PACKAGETYPE
+.TP
+.B REPREPRO_FILTER_PATTERN
+Set in \fBFilterList:\fP and \fBFilterSrcList:\fP scripts.
+.TP
+.B GNUPGHOME
+Not used by reprepro directly.
+But reprepro uses libgpgme, which calls gpg for signing and verification
+of signatures.
+And your gpg will most likely use the content of this variable
+instead of "~/.gnupg".
+Take a look at
+.BR gpg (1)
+to be sure.
+You can also tell reprepro to set this with the \fB\-\-gnupghome\fP option.
+.TP
+.B GPG_TTY
+When there is a gpg\-agent running that does not have the passphrase
+cached yet, gpg will most likely try to start some pinentry program
+to get it.
+If that is pinentry\-curses, that is likely to fail without this
+variable, because it cannot find a terminal to ask on.
+In this cases you might set this variable to something like
+the value of
+.B $(tty)
+or
+.B $SSH_TTY
+or anything else denoting a usable terminal. (You might also
+want to make sure you actually have a terminal available.
+With ssh you might need the
+.B \-t
+option to get a terminal even when telling gpg to start a specific command).
+
+By default, reprepro will set this variable to what the symbolic link
+.B /proc/self/fd/0
+points to, if stdin is a terminal, unless you told with
+.B \-\-noguessgpgtty
+to not do so.
+.SH BUGS
+Increased verbosity always shows those things one does not want to know.
+(Though this might be inevitable and a corollary to Murphy)
+
+Reprepro uses berkeley db, which was a big mistake.
+The most annoying problem not yet worked around is database corruption
+when the disk runs out of space.
+(Luckily if it happens while downloading packages while updating,
+only the files database is affected, which is easy (though time consuming)
+to rebuild, see \fBrecovery\fP file in the documentation).
+Ideally put the database on another partition to avoid that.
+
+While the source part is mostly considered as the architecture
+.B source
+some parts may still not use this notation.
+.SH "WORK-AROUNDS TO COMMON PROBLEMS"
+.TP
+.B gpgme returned an impossible condition
+With the woody version this normally meant that there was no .gnupg
+directory in $HOME, but it created one and reprepro succeeds when called
+again with the same command.
+Since sarge the problem sometimes shows up, too. But it is no longer
+reproducible and it does not fix itself, neither. Try running
+\fBgpg \-\-verify \fP\fIfile-you-had-problems-with\fP manually as the
+user reprepro is running and with the same $HOME. This alone might
+fix the problem. It should not print any messages except perhaps
+.br
+gpg: no valid OpenPGP data found.
+.br
+gpg: the signature could not be verified.
+.br
+if it was an unsigned file.
+.TP
+.B not including .orig.tar.gz when a .changes file's version does not end in \-0 or \-1
+If dpkg\-buildpackage is run without the \fB\-sa\fP option to build a version with
+a Debian revision not being \-0 or \-1, it does not list the \fB.orig.tar.gz\fP file
+in the \fB.changes\fP file.
+If you want to \fBinclude\fP such a file with reprepro
+when the .orig.tar.gz file does not already exist in the pool, reprepro will report
+an error.
+This can be worked around by:
+.br
+call \fBdpkg\-buildpackage\fP with \fB\-sa\fP (recommended)
+.br
+copy the .orig.tar.gz file to the proper place in the pool before
+.br
+call reprepro with \-\-ignore=missingfile (discouraged)
+.TP
+.B leftover files in the pool directory.
+reprepro is sometimes a bit too timid of deleting stuff. When things
+go wrong and there have been errors it sometimes just leaves everything
+where it is.
+To see what files reprepro remembers to be in your pool directory but
+does not know anything needing them right know, you can use
+.br
+\fBreprepro dumpunreferenced\fP
+.br
+To delete them:
+.br
+\fBreprepro deleteunreferenced\fP
+.SH INTERRUPTING
+Interrupting reprepro has its problems.
+Some things (like speaking with apt methods, database stuff) can cause
+problems when interrupted at the wrong time.
+Then there are design problems of the code making it hard to distinguish
+if the current state is dangerous or non-dangerous to interrupt.
+Thus if reprepro receives a signal normally sent to tell a process to
+terminate itself softly,
+it continues its operation, but does not start any new operations.
+(I.e. it will not tell the apt\-methods any new file to download, it will
+not replace a package in a target, unless it already had started with it,
+it will not delete any files gotten dereferenced, and so on).
+
+\fBIt only catches the first signal of each type. The second signal of a
+given type will terminate reprepro. You will risk database corruption
+and have to remove the lockfile manually.\fP
+
+Also note that even normal interruption leads to code-paths mostly untested
+and thus expose a multitude of bugs including those leading to data corruption.
+Better think a second more before issuing a command than risking the need
+for interruption.
+.SH "REPORTING BUGS"
+Report bugs or wishlist requests to the Debian BTS
+.br
+(e.g. by using \fBreportbug reprepro\fP under Debian)
+.br
+or directly to
+.MTO brlink@debian.org
+.SH COPYRIGHT
+Copyright \(co 2004,2005,2006,2007,2008,2009,2010,2011,2012
+.URL http://www.brlink.eu "Bernhard R. Link"
+.br
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.