1REPREPRO(1)                        REPREPRO                        REPREPRO(1)
2
3
4

NAME

6       reprepro  - produce, manage and sync a local repository of Debian pack‐
7       ages
8

SYNOPSIS

10       reprepro --help
11
12       reprepro [ options ] command [ per-command-arguments ]
13

DESCRIPTION

15       reprepro is a tool to manage a repository  of  Debian  packages  (.deb,
16       .udeb,  .dsc,  ...).  It stores files either being injected manually or
17       downloaded from some other repository (partially) mirrored into a pool/
18       hierarchy.   Managed  packages  and  checksums of files are stored in a
19       Berkeley DB database file, so no database server is  needed.   Checking
20       signatures of mirrored repositories and creating signatures of the gen‐
21       erated Package indices is supported.
22
23       Former working title of this program was mirrorer.
24

GLOBAL OPTIONS

26       Options can be specified before the command. Each affects  a  different
27       subset of commands and is ignored by other commands.
28
29       -h --help
30              Displays a short list of options and commands with description.
31
32       -v, -V, --verbose
33              Be more verbose. Can be applied multiple times. One uppercase -V
34              counts as five lowercase -v.
35
36       --silent
37              Be less verbose. Can be applied multiple times. One -v  and  one
38              -s cancel each other out.
39
40       -f, --force
41              This option is ignored, as it no longer exists.
42
43       -b, --basedir basedir
44              Sets the base-dir all other default directories are relative to.
45              If none is supplied and the REPREPRO_BASE_DIR environment  vari‐
46              able is not set either, the current directory will be used.
47
48       --outdir outdir
49              Sets  the  base-dir  of the repository to manage, i.e. where the
50              pool/ subdirectory resides. And in which the dists/ directory is
51              placed by default.  If this starts with '+b/', it is relative to
52              basedir.
53
54              The default for this is basedir.
55
56       --confdir confdir
57              Sets the directory where the configuration is searched in.
58
59              If this starts with '+b/', it is relative to basedir.
60
61              If none is given, +b/conf (i.e. basedir/conf) will be used.
62
63       --distdir distdir
64              Sets the directory to generate index files relatively to.  (i.e.
65              things like Packages.gz, Sources.gz and Release.gpg)
66
67              If  this starts with '+b/', it is relative to basedir, if start‐
68              ing with '+o/' relative to outdir.
69
70              If none is given, +o/dists (i.e. outdir/dists) is used.
71
72              Note: apt has dists hard-coded in it, so  this  is  mostly  only
73              useful  for  testing or when your webserver pretends another di‐
74              rectory structure than your physical layout.
75
76              Warning: Beware when changing this forth and  back  between  two
77              values not ending in the same directory.  Reprepro only looks if
78              files it wants are there. If nothing of the content changed  and
79              there  is a file it will not touch it, assuming it is the one it
80              wrote last time, assuming any different --distdir ended  in  the
81              same  directory.   So  either  clean  a directory before setting
82              --distdir to it or do an export with the new one first to have a
83              consistent state.
84
85       --logdir logdir
86              The  directory  where  files generated by the Log: directive are
87              stored if they have no absolute path.
88
89              If this starts with '+b/', it is relative to basedir, if  start‐
90              ing  with  '+o/'  relative  to  outdir,  with  '+c/' relative to
91              confdir.
92
93              If none is given, +b/logs (i.e. basedir/logs) is used.
94
95       --dbdir dbdir
96              Sets the directory where reprepro keeps its databases.
97
98              If this starts with '+b/', it is relative to basedir, if  start‐
99              ing  with  '+o/'  relative  to  outdir,  with  '+c/' relative to
100              confdir.
101
102              If none is given, +b/db (i.e. basedir/db) is used.
103
104              Note: This is permanent data, no cache. One has almost to regen‐
105              erate the whole repository when this is lost.
106
107       --listdir listdir
108              Sets  the directory where it downloads indices to when importing
109              from other repositories. This  is  temporary  data  and  can  be
110              safely deleted when not in an update run.
111
112              If  this starts with '+b/', it is relative to basedir, if start‐
113              ing with '+o/'  relative  to  outdir,  with  '+c/'  relative  to
114              confdir.
115
116              If none is given, +b/lists (i.e. basedir/lists) is used.
117
118       --morguedir morguedir
119              Files deleted from the pool are stored into morguedir.
120
121              If  this starts with '+b/', it is relative to basedir, if start‐
122              ing with '+o/'  relative  to  outdir,  with  '+c/'  relative  to
123              confdir.
124
125              If none is given, deleted files are just deleted.
126
127       --methoddir methoddir
128              Look in methoddir instead of /usr/lib/apt/methods for methods to
129              call when importing from other repositories.
130
131       -C, --component components
132              Limit the specified command to this components only.  This  will
133              force added packages to this components, limit removing packages
134              from this components, only list  packages  in  this  components,
135              and/or  otherwise  only look at packages in this components, de‐
136              pending on the command in question.
137
138              Multiple components are specified by separating them with |,  as
139              in -C 'main|contrib'.
140
141       -A, --architecture architectures
142              Limit  the  specified command to this architectures only.  (i.e.
143              only list such packages, only remove packages from the specified
144              architectures,  or  otherwise only look at/act on this architec‐
145              tures depending on the specific command).
146
147              Multiple architectures are specified by separating them with  |,
148              as in -A 'sparc|i386'.
149
150              Note  that architecture all packages can be included to each ar‐
151              chitecture but are then handled separately.  Thus by using -A in
152              a  specific  way one can have different versions of an architec‐
153              ture all package in different architectures of the same  distri‐
154              bution.
155
156       -T, --type dsc|deb|udeb
157              Limit  the  specified  command to this packagetypes only.  (i.e.
158              only list such packages, only remove such packages, only include
159              such packages, ...)
160
161       -S, --section section
162              Overrides  the  section  of  inclusions. (Also override possible
163              override files)
164
165       -P, --priority priority
166              Overrides the priority of inclusions.  (Also  override  possible
167              override files)
168
169       --export=(silent-never|never|changed|lookedat|force)
170              This option specify whether and how the high level actions (e.g.
171              install, update, pull, delete) should export the index files  of
172              the distributions they work with.
173
174       --export=lookedat
175              In  this  mode every distribution the action handled will be ex‐
176              ported, unless there was an error possibly corrupting it.
177              Note that only missing files and files  whose  intended  content
178              changed between before and after the action will be written.  To
179              get a guaranteed current export, use the export action.
180              For backwards compatibility, lookedat is  also  available  under
181              the  old name normal.  The name normal is deprecated and will be
182              removed in future versions.
183
184       --export=changed
185              In this mode every distribution actually  changed  will  be  ex‐
186              ported, unless there was an error possibly corrupting it.  (i.e.
187              if nothing changed, not even missing files will be created.)
188              Note that only missing files and files  whose  intended  content
189              changed between before and after the action will be written.  To
190              get a guaranteed current export, use the export action.
191
192       --export=force
193              Always export all distributions looked at,  even  if  there  was
194              some error possibly bringing it into a inconsistent state.
195
196       --export=never
197              No index files are exported. You will have to call export later.
198              Note  that  you most likely additionally need the --keepunrefer‐
199              encedfiles option, if you do not want some of the files  pointed
200              to by the untouched index files to vanish.
201
202       --export=silent-never
203              Like never, but suppress most output about that.
204
205       --ignore=what
206              Ignore  errors  of type what. See the section ERROR IGNORING for
207              possible values.
208
209       --nolistsdownload
210              When running update, checkupdate or predelete  do  not  download
211              any  Release  or index files.  This is hardly useful except when
212              you just run one of those command for  the  same  distributions.
213              And even then reprepro is usually good in not downloading except
214              Release and Release.gpg files again.
215
216       --nothingiserror
217              If nothing was done, return with exitcode 1 instead of the usual
218              0.
219
220              Note  that  "nothing  was done" means the primary purpose of the
221              action in question.  Auxiliary actions (opening and closing  the
222              database,  exporting  missing files with --export=lookedat, ...)
223              usually do not count.  Also note that  this  is  not  very  well
224              tested.   If  you  find an action that claims to have done some‐
225              thing in some cases where you think it should not, please let me
226              know.
227
228       --keeptemporaries
229              Do not delete temporary .new files when exporting a distribution
230              fails.  (reprepro first create .new files in the dists directory
231              and  only  if  everything  is  generated, all files are put into
232              their final place at once.  If this option is not specified  and
233              something fails, all are deleted to keep dists clean).
234
235       --keepunreferencedfiles
236              Do  not delete files that are no longer used because the package
237              they are from is deleted/replaced with a newer version from  the
238              last distribution it was in.
239
240       --keepunusednewfiles
241              The  include,  includedsc, includedeb and processincoming by de‐
242              fault delete any file they added to the pool that is not  marked
243              used  at  the  end  of the operation.  While this keeps the pool
244              clean and allows changing before trying to add again, this needs
245              copying  and  checksum calculation every time one tries to add a
246              file.
247
248       --keepdirectories
249              Do not try to rmdir parent directories after files  or  directo‐
250              ries  have been removed from them.  (Do this if your directories
251              have special permissions you  want  keep,  do  not  want  to  be
252              pestered  with  warnings  about errors to remove them, or have a
253              buggy rmdir call deleting non-empty directories.)
254
255       --ask-passphrase
256              Ask for passphrases when signing things and one is needed.  This
257              is  a  quick and dirty and unsafe implementation using the obso‐
258              lete getpass(3) function with the description gpgme  is  supply‐
259              ing.   So  the  prompt  will  look  quite  funny and support for
260              passphrases with more than 8 characters  depend  on  your  libc.
261              Use of this option is not recommended. Use gpg-agent with pinen‐
262              try instead.
263
264              (With current versions of gnupg you need  to  set  pinentry-mode
265              loopback  in  your .gnupg/gpg.conf file to use --ask-passphrase.
266              Without that option gnupg uses the much  safer  and  recommended
267              pinentry instead).
268
269       --noskipold
270              When  updating  do not skip targets where no new index files and
271              no files marked as already processed are available.
272
273              If you changed a script to preprocess downloaded index files  or
274              changed a Listfilter, you most likely want to call reprepro with
275              --noskipold.
276
277       --waitforlock count
278              If there is a lockfile indicating another instance  of  reprepro
279              is currently using the database, retry count times after waiting
280              for 10 seconds each time.  The default is 0 and means  to  error
281              out instantly.
282
283       --spacecheck full|none
284              The default is full:
285              In  the  update  commands, check for every to be downloaded file
286              which filesystem it is on and how much space is left.
287              To disable this behaviour, use none.
288
289       --dbsafetymargin bytes-count
290              If checking for free space,  reserve  byte-count  bytes  on  the
291              filesystem   containing  the  db/  directory.   The  default  is
292              104857600 (i.e. 100MB), which is quite large.  But as  there  is
293              no  way to know in advance how large the databases will grow and
294              libdb is extremely touchy in that regard, lower  only  when  you
295              know what you do.
296
297       --safetymargin bytes-count
298              If checking for free space, reserve byte-count bytes on filesys‐
299              tems not containing the db/ directory.  The default  is  1048576
300              (i.e. 1MB).
301
302       --noguessgpgtty
303              Don't  set the environment variable GPG_TTY, even when it is not
304              set, stdin is terminal and /proc/self/fd/0 is  a  readable  sym‐
305              bolic link.
306
307       --gnupghome
308              Set the GNUPGHOME evnironment variable to the given directory as
309              argument to this option.  And your gpg will most likely use  the
310              content  of this variable instead of "~/.gnupg".  Take a look at
311              gpg(1) to be sure.  This option in the command line  is  usually
312              not  very useful, as it is possible to set the environment vari‐
313              able directly.  Its main reason for existence is that it can  be
314              used in conf/options.
315
316       --gunzip gz-uncompressor
317              While  reprepro links against libz, it will look for the program
318              given with this option (or gunzip if not  given)  and  use  that
319              when  uncompressing  index  files  while downloading from remote
320              repositories.  (So that downloading and uncompression can happen
321              at the same time).  If the program is not found or is NONE (all-
322              uppercase) then uncompressing will  always  be  done  using  the
323              built  in  uncompression  method.  The program has to accept the
324              compressed file as stdin and write the  uncompressed  file  into
325              stdout.
326
327       --bunzip2 bz2-uncompressor
328              When  uncompressing  downloaded  index  files or when not linked
329              against libbz2 reprepro will use this program to uncompress .bz2
330              files.   The  default  value  is bunzip2.  If the program is not
331              found or is NONE (all-uppercase) then uncompressing will  always
332              be done using the built in uncompression method or not be possi‐
333              ble when not linked against libbz2.  The program has  to  accept
334              the  compressed  file  as  stdin and write the uncompressed file
335              into stdout.
336
337       --unlzma lzma-uncompressor
338              When trying to uncompress or read lzma  compressed  files,  this
339              program will be used.  The default value is unlzma.  If the pro‐
340              gram is not found or is NONE (all-uppercase) then  uncompressing
341              lzma  files will not be possible.  The program has to accept the
342              compressed file as stdin and write the  uncompressed  file  into
343              stdout.
344
345       --unxz xz-uncompressor
346              When trying to uncompress or read xz compressed files, this pro‐
347              gram will be used.  The default value is unxz.  If  the  program
348              is  not  found  or is NONE (all-uppercase) then uncompressing xz
349              files will not be possible.  The program has to accept the  com‐
350              pressed  file as stdin and write the uncompressed file into std‐
351              out.
352
353       --lunzip lzip-uncompressor
354              When trying to uncompress or read lzip  compressed  files,  this
355              program will be used.  The default value is lunzip.  If the pro‐
356              gram is not found or is NONE (all-uppercase) then  uncompressing
357              lz  files  will  not be possible.  The program has to accept the
358              compressed file as stdin and write the  uncompressed  file  into
359              stdout.  Note that .lz support is DEPRECATED and will be removed
360              in the future.
361
362       --list-max count
363              Limits the output of list, listmatched  and  listfilter  to  the
364              first count results.  The default is 0, which means unlimited.
365
366       --list-skip count
367              Omitts  the  first  count results from the output of list, list‐
368              matched and listfilter.
369
370       --list-format format
371              Set the output format of list, listmatched and  listfilter  com‐
372              mands.   The  format  is  similar  to dpkg-query's --showformat:
373              fields are specified  as  ${fieldname}  or  ${fieldname;length}.
374              Zero length or no length means unlimited.  Positive numbers mean
375              fill with spaces right, negative fill with spaces left.
376
377              \n, \r, \t, \0  are  new-line,  carriage-return,  tabulator  and
378              zero-byte.   Backslash  (\) can be used to escape every non-let‐
379              ter-or-digit.
380
381              The special field names $identifier, $architecture,  $component,
382              $type, $codename denote where the package was found.
383
384              The  special  field  names $source and $sourceversion denote the
385              source  and  source  version  a  package  belongs   to.    (i.e.
386              ${$source}  will either be the same as ${source} (without a pos‐
387              sible version in parentheses at the end) or the same as  ${pack‐
388              age}.
389
390              The  special  field  names $basename, $filekey and $fullfilename
391              denote the first package file part of this entry  (i.e.  usually
392              the  .deb, .udeb or .dsc file) as basename, as filekey (filename
393              relative to the  outdir)  and  the  full  filename  with  outdir
394              prepended  (i.e.  as  relative  or  absolute  as your outdir (or
395              basedir if you did not set outdir) is).
396
397              When --list-format is not given or NONE,  then  the  default  is
398              equivalent to
399              ${$identifier} ${package} ${version}\n.
400
401              Escaping  digits or letters not in above list, using dollars not
402              escaped outside specified constructs, or  any  field  names  not
403              listed  as  special  and not consisting entirely out of letters,
404              digits and minus signs have undefined behaviour and might change
405              meaning without any further notice.
406
407              If you give this option on the command line, don't forget that $
408              is also interpreted by your shell.  So you have to properly  es‐
409              cape   it.   For  example  by  putting  the  whole  argument  to
410              --list-format in single quotes.
411
412       --show-percent
413              When downloading packages, show each completed percent  of  com‐
414              pleted  package  downloads  together with the size of completely
415              downloaded packages.  (Repeating this option increases the  fre‐
416              quency of this output).
417
418       --onlysmalldeletes
419              The  pull  and  update  commands will skip every distribution in
420              which one target loses more than 20% of  its  packages  (and  at
421              least 10).
422
423              Using this option (or putting it in the options config file) can
424              avoid removing large quantities of data but means you might  of‐
425              ten give --noonlysmalldeletes to override it.
426
427       --restrict src[=version|:type]
428              Restrict  a  pull or update to only act on packages belonging to
429              source-package src.  Any other package will not be updated  (un‐
430              less  it  matches  a  --restrict-bin).  Only packages that would
431              otherwise be updated or are at least marked with hold in a  Fil‐
432              terList or FilerSrcList will be updated.
433
434              The  action  can be restricted to a source version using a equal
435              sign or changed to another type (see FilterList) using a colon.
436
437              This option can be given multiple times to list  multiple  pack‐
438              ages,  but  each package may only be named once (even when there
439              are different versions or types).
440
441       --restrict-binary name[=version|:type]
442              Like --restrict  but  restrict  to  binary  packages  (.deb  and
443              .udeb).   Source packages are not upgraded unless they appear in
444              a --restrict.
445
446       --restrict-file filename
447              Like --restrict but read a whole file in the FilterSrcList  for‐
448              mat.
449
450       --restrict-file-bin filename
451              Like --restrict-bin but read a whole file in the FilterList for‐
452              mat.
453
454       --endhook hookscript
455
456              Run the specified hookscript once reprepro exits.  It  will  get
457              the  usual  REPREPRO_*  environment variables set (or unset) and
458              additionally a variable REPREPRO_EXIT_CODE that is the exit code
459              with which reprepro would have exited (the hook is always called
460              once the initial parsing of global options and the command  name
461              is  done,  no matter if reprepro did anything or not).  Reprepro
462              will return to the calling process with  the  exitcode  of  this
463              script.   Reprepro  has closed all its databases and removed all
464              its locks, so you can run reprepro again in this script  (unless
465              someone else did so in the same repository before, of course).
466
467              The only advantage over running that command always directly af‐
468              ter reprepro is that you can some environment variables set  and
469              cannot so easily forget it if this option is in conf/options.
470
471              The script is supposed to be located relative to confdir, unless
472              its name starts with /, ./, +b/, +o/, or +c/ and  the  name  may
473              not start (except in the cases given before) with a +.
474
475              An example script looks like:
476               #!/bin/sh
477
478               if [ "$REPREPRO_EXIT_CODE" -ne 0 ] ; then
479                   exit "$REPREPRO_EXIT_CODE"
480               fi
481
482               echo "congratulations, reprepro with arguments: $*"
483               echo "seems to have run successfully. REPREPRO_ part of the en‐
484              vironment is:"
485               set | grep ^REPREPRO_
486
487               exit 0
488
489
490       --outhook hookscript
491              hookscript is called with a .outlog file as argument (located in
492              logdir) containing a description of all changes made to outdir.
493
494              The script is supposed to be located relative to confdir, unless
495              its name starts with /, ./, +b/, +o/, or +c/ and  the  name  may
496              not start (except in the cases given before) with a +.
497
498              For  a format of the .outlog files generated for this script see
499              the manual.html shiped with reprepro.
500

COMMANDS

502       export [ codenames ]
503              Generate all index files for the specified distributions.
504
505              This regenerates all files unconditionally.  It is  only  useful
506              if  you  want  to  be  sure dists is up to date, you called some
507              other actions with --export=never before or you want  to  create
508              an initial empty but fully equipped dists/codename directory.
509
510        [ --delete ] createsymlinks [ codenames ]
511              Creates suite symbolic links in the dists/-directory pointing to
512              the corresponding codename.
513
514              It will not create links, when multiple of the  given  codenames
515              would be linked from the same suite name, or if the link already
516              exists (though when --delete is given it will delete already ex‐
517              isting symlinks)
518
519       list codename [ packagename ]
520              List  all  packages  (source and binary, except when -T or -A is
521              given) with the given name in all components (except when -C  is
522              given) and architectures (except when -A is given) of the speci‐
523              fied distribution.  If no package name  is  given,  list  every‐
524              thing.  The format of the output can be changed with --list-for‐
525              mat.  To only get  parts  of  the  result,  use  --list-max  and
526              --list-skip.
527
528       listmatched codename glob
529              as  list,  but  does not list a single package, but all packages
530              matching the given shell-like glob.  (i.e. *, ? and [chars]  are
531              allowed).
532
533              Examples:
534
535              reprepro  -b  .  listmatched  test2 'linux-*' lists all packages
536              starting with linux-.
537
538
539       listfilter codename condition
540              as list, but does not list a single package,  but  all  packages
541              matching the given condition.
542
543              The  format  of the formulas is those of the dependency lines in
544              Debian packages' control files with some extras.  That  means  a
545              formula  consists  of  names of fields with a possible condition
546              for its content in parentheses.  These  atoms  can  be  combined
547              with  an  exclamation  mark '!' (meaning not), a pipe symbol '|'
548              (meaning or) and a comma ',' (meaning and).  Additionally paren‐
549              theses  can  be used to change binding (otherwise '!' binds more
550              than '|' than ',').
551
552              The values given in the search expression are directly alphabet‐
553              ically  compared  to  the  headers in the respective index file.
554              That means that each part Fieldname (cmp value) of  the  formula
555              will  be true for exactly those package that have in the Package
556              or Sources file a line starting with fieldname and  a  value  is
557              alphabetically cmp to value.
558
559              Additionally  since reprepro 3.11.0, '%' can be used as compari‐
560              son operator, denoting matching a name with shell like  wildcard
561              (with '*', '?' and '[..]').
562
563              The  special  field names starting with '$' have special meaning
564              (available since 3.11.1):
565
566              $Version
567
568              The version of the package, comparison  is  not  alphabetically,
569              but as Debian version strings.
570
571              $Source
572
573              The source name of the package.
574
575              $SourceVersion
576
577              The source version of the package.
578
579              $Architecture
580
581              The  architecture  the  package  is in (listfilter) or to be put
582              into.
583
584              $Component
585
586              The component the package is in (listfilter) or to be put into.
587
588              $Packagetype
589
590              The packagetype of the package.
591
592              Examples:
593
594              reprepro -b . listfilter test2 'Section (==  admin)'  will  list
595              all  packages in distribution test2 with a Section field and the
596              value of that field being admin.
597
598              reprepro -b . -T deb listfilter test2  'Source  (==  blub)  |  (
599              !Source  , Package (== blub) )' will find all .deb Packages with
600              either a Source field blub or no  Source  field  and  a  Package
601              field blub.  (That means all package generated by a source pack‐
602              age blub, except those also specifying a version number with its
603              Source).
604
605              reprepro  -b  . -T deb listfilter test2 '$Source (==blub) is the
606              better way to do this (but only available since 3.11.1).
607
608              reprepro -b . listfilter test2  '$PackageType  (==deb),  $Source
609              (==blub) is another (less efficient) way.
610
611              reprepro  -b . listfilter test2 'Package (% linux-*-2.6*)' lists
612              all packages with names starting with linux- and later having an
613              -2.6.
614
615       ls package-name
616              List the versions of the specified package in all distributions.
617
618       lsbycomponent package-name
619              Like ls, but group by component (and print component names).
620
621       remove codename package-names
622              Delete  all  packages  in  the specified distribution, that have
623              package name listed as argument.  (i.e. remove all packages list
624              with  the  same arguments and options would list, except that an
625              empty package list is not allowed.)
626
627              Note that like any other operation removing or replacing a pack‐
628              age,  the  old  package's files are unreferenced and thus may be
629              automatically deleted if this was their last  reference  and  no
630              --keepunreferencedfiles specified.
631
632       removematched codename glob
633              Delete  all  packages  listmatched with the same arguments would
634              list.
635
636       removefilter codename condition
637              Delete all packages listfilter with  the  same  arguments  would
638              list.
639
640       removesrc codename source-name [version]
641              Remove all packages in distribution codename belonging to source
642              package source-name.  (Limited to those with source version ver‐
643              sion if specified).
644
645              If  package  tracking is activated, it will use that information
646              to find the packages, otherwise it traverses all package indices
647              for the distribution.
648
649       removesrcs codename source-name[=version] ...
650              Like  removesrc,  but  can  be  given  multiple source names and
651              source versions must be specified by appending '=' and the  ver‐
652              sion to the name (without spaces).
653
654       update [ codenames ]
655              Sync  the  specified distributions (all if none given) as speci‐
656              fied in the config with their upstreams. See the description  of
657              conf/updates below.
658
659       checkupdate [ codenames ]
660              Same  like  update, but will show what it will change instead of
661              actually changing it.
662
663       dumpupdate [ codenames ]
664              Same like checkupdate, but less suiteable for  humans  and  more
665              suitable for computers.
666
667       predelete [ codenames ]
668              This  will determine which packages a update would delete or re‐
669              place and remove those packages.  This can be useful for  reduc‐
670              ing  space  needed  while upgrading, but there will be some time
671              where packages are vanished from the lists so clients will  mark
672              them as obsolete.  Plus if you cannot download a updated package
673              in the (hopefully) following update run, you will end up with no
674              package  at  all  instead of an old one.  This will also blow up
675              .diff files if you are using the pdiff example or something sim‐
676              ilar.   So  be careful when using this option or better get some
677              more space so that update works.
678
679       cleanlists
680              Delete all files in listdir (default basedir/lists) that do  not
681              belong  to any update rule for any distribution.  I.e. all files
682              are deleted in that directory that no update command in the cur‐
683              rent  configuration can use.  (The files are usually left there,
684              so if they are needed again they do not need  to  be  downloaded
685              again.  Though  in  many easy cases not even those files will be
686              needed.)
687
688       pull [ codenames ]
689              pull in newer packages into the specified distributions (all  if
690              none  given)  from  other  distributions in the same repository.
691              See the description of conf/pulls below.
692
693       checkpull [ codenames ]
694              Same like pull, but will show what it will change instead of ac‐
695              tually changing it.
696
697       dumppull [ codenames ]
698              Same  like  checkpull,  but  less  suiteable for humans and more
699              suitable for computers.
700
701       includedeb codename .deb-filename
702              Include the given binary Debian package (.deb) in the  specified
703              distribution,  applying  override  information  and guessing all
704              values not given and guessable.
705
706       includeudeb codename .udeb-filename
707              Same like includedeb, but for .udeb files.
708
709       includedsc codename .dsc-filename
710              Include the given Debian source package (.dsc,  including  other
711              files  like .orig.tar.gz, .tar.gz and/or .diff.gz) in the speci‐
712              fied distribution, applying override  information  and  guessing
713              all values not given and guessable.
714
715              Note that .dsc files do not contain section or priority, but the
716              Sources.gz file needs them.  reprepro tries to parse  .diff  and
717              .tar  files  for it, but is only able to resolve easy cases.  If
718              reprepro fails to extract those automatically, you have  to  ei‐
719              ther specify a DscOverride or give them via -S and -P
720
721       include codename .changes-filename
722              Include  in  the  specified  distribution all packages found and
723              suitable in the .changes  file,  applying  override  information
724              guessing all values not given and guessable.
725
726       processincoming rulesetname [.changes-file]
727              Scan  an incoming directory and process the .changes files found
728              there.  If a filename is supplied, processing is limited to that
729              file.   rulesetname  identifies  which rule-set in conf/incoming
730              determines which incoming directory to use and in what distribu‐
731              tions  to  allow packages into.  See the section about this file
732              for more information.
733
734       check [ codenames ]
735              Check if all packages in the specified  distributions  have  all
736              files needed properly registered.
737
738       checkpool [ fast ]
739              Check if all files believed to be in the pool are actually still
740              there and have the known md5sum. When fast is  specified  md5sum
741              is not checked.
742
743       collectnewchecksums
744              Calculate  all  supported  checksums  for all files in the pool.
745              (Versions prior to 3.3 did only store md5sums, 3.3  added  sha1,
746              3.5 added sha256).
747
748       translatelegacychecksums
749              Remove  the  legacy files.db file after making sure all informa‐
750              tion is also found in the new checksums.db file.  (Alternatively
751              you  can  call  collecnewchecksums  and  remove the file on your
752              own.)
753
754       rereference
755              Forget which files are needed and recollect this information.
756
757       dumpreferences
758              Print out which files are marked to be needed by whom.
759
760       dumpunreferenced
761              Print a list of all filed believed to be in the pool,  that  are
762              not known to be needed.
763
764       deleteunreferenced
765              Remove  all known files (and forget them) in the pool not marked
766              to be needed by anything.
767
768       deleteifunreferenced [ filekeys ]
769              Remove the given files (and forget them) in the pool if they are
770              not marked to be used by anything.  If no command line arguments
771              are given, stdin is read and every line treated as one  filekey.
772              This  is  mostly  useful  together  with  --keepunreferenced  in
773              conf/options or in situations where one does  not  want  to  run
774              deleteunreferenced,  which  removes  all  files  eligible  to be
775              deleted with this command.
776
777       reoverride [ codenames ]
778              Reapply the override files to the given distributions  (Or  only
779              parts thereof given by -A,-C or -T).
780
781              Note:  only  the control information is changed. Changing a sec‐
782              tion to a value,  that  would  cause  another  component  to  be
783              guessed, will not cause any warning.
784
785       redochecksums [ codenames ]
786              Readd  the  information  about file checksums to the package in‐
787              dices.
788
789              Usually the package's control information is created  at  inclu‐
790              sion  time  or  imported from some remote source and not changed
791              later.  This command  modifies  it  to  readd  missing  checksum
792              types.
793
794              Only checksums already known are used.  To update known checkums
795              about files run collectnewchecksums first.
796
797
798       dumptracks [ codenames ]
799              Print out all information about tracked source packages  in  the
800              given distributions.
801
802       retrack [ codenames ]
803              Recreate  a  tracking  database for the specified distributions.
804              This contains ouf of three steps.  First  all  files  marked  as
805              part  of a source package are set to unused.  Then all files ac‐
806              tually used are marked as thus.  Finally  tidytracks  is  called
807              remove  everything  no  longer  needed  with the new information
808              about used files.
809
810              (This behaviour, though a bit longsome, keeps  even  files  only
811              kept  because of tracking mode keep and files not otherwise used
812              but kept due to includechanges or its relatives.  Before version
813              3.0.0 such files were lost by running retrack).
814
815       removealltracks [ codenames ]
816              Removes  all  source  package tracking information for the given
817              distributions.
818
819       removetrack   codename   sourcename   version
820              Remove the trackingdata of the given version of  a  given  sour‐
821              cepackage  from a given distribution. This also removes the ref‐
822              erences for all used files.
823
824       tidytracks [ codenames ]
825              Check all source package tracking information for the given dis‐
826              tributions for files no longer to keep.
827
828       copy destination-codename source-codename packages...
829              Copy  the  given packages from one distribution to another.  The
830              packages are copied verbatim, no override files  are  consulted.
831              Only  components and architectures present in the source distri‐
832              bution are copied.
833
834       copysrc destination-codename source-codename source-package [versions]
835              look at each package (where package means, as usual, every pack‐
836              age  be  it  dsc,  deb or udeb) in the distribution specified by
837              source-codename and identifies the relevant source  package  for
838              each.   All  packages matching the specified source-package name
839              (and any version if specified) are copied to the destination-co‐
840              dename distribution.  The packages are copied verbatim, no over‐
841              ride files are consulted.   Only  components  and  architectures
842              present in the source distribution are copied.
843
844       copymatched destination-codename source-codename glob
845              Copy packages matching the given glob (see listmatched).
846
847              The  packages  are  copied  verbatim, no override files are con‐
848              sulted.  Only components and architectures present in the source
849              distribution are copied.
850
851       copyfilter destination-codename source-codename formula
852              Copy packages matching the given formula (see listfilter).  (all
853              versions if no version is specified).  The packages  are  copied
854              verbatim,  no override files are consulted.  Only components and
855              architectures present in the source distribution are copied.
856
857       restore codename snapshot packages...
858
859       restoresrc codename snapshot source-epackage [versions]
860
861       restorefilter destination-codename snapshot formula
862
863       restorematched destination-codename snapshot glob
864              Like the copy commands, but do not copy from  another  distribu‐
865              tion, but from a snapshot generated with gensnapshot.  Note that
866              this blindly trusts the contents of the files in your dists/ di‐
867              rectory and does no checking.
868
869       clearvanished
870              Remove  all package databases that no longer appear in conf/dis‐
871              tributions.  If --delete is specified, it will not stop if there
872              are still packages left.  Even without --delete it will unrefer‐
873              ence files still marked as needed by this target.  (Use  --keep‐
874              unreferenced to not delete them if that was the last reference.)
875
876              Do not forget to remove all exported package indices manually.
877
878       gensnapshot   codename   directoryname
879              Generate a snapshot of the distribution specified by codename in
880              the directory dists/codename/snapshots/directoryname/ and refer‐
881              ence all needed files in the pool as needed by that.  No Content
882              files are generated and no export hooks are run.
883
884              Note that there is currently no automated  way  to  remove  that
885              snapshot  again  (not  even clearvanished will unlock the refer‐
886              enced files after the distribution itself vanished).   You  will
887              have  to  remove the directory yourself and tell reprepro to un‐
888              referencesnapshot codename directoryname  before  deleteunrefer‐
889              enced will delete the files from the pool locked by this.
890
891              To  access such a snapshot with apt, add something like the fol‐
892              lowing to your sources.list file:
893              deb method://as/without/snapshot codename/snapshots/name main
894
895       unreferencesnapshot   codename   directoryname
896              Remove all references generated by an genshapshot with the  same
897              arguments.  This allows the next deleteunferenced call to delete
898              those files.  (The indicies in dists/ for the snapshot  are  not
899              removed.)
900
901       rerunnotifiers [ codenames ]
902              Run  all  external  scripts specified in the Log: options of the
903              specified distributions.
904
905       build-needing codename architecture [ glob ]
906              List source packages (matching glob) that likely need a build on
907              the given architecture.
908
909              List  all source package in the given distribution without a bi‐
910              nary package of the given architecture built from  that  version
911              of the source, without a .changes or .log file for the given ar‐
912              chitecture, with an Architecture  field  including  any,  os-any
913              (with os being the part before the hyphen in the architecture or
914              linux if there is no hyphen) or the architecture  and  at  least
915              one package in the Binary field not yet available.
916
917              If  instead  of architecture the term any is used, all architec‐
918              tures are iterated and the architecture  is  printed  as  fourth
919              field in every line.
920
921              If  the  architecture  is all, then only source packages with an
922              Architecture field including all are considered (i.e.  as  above
923              with  real  architectures  but any does not suffice).  Note that
924              dpkg-dev << 1.16.1 does not both set any and all so source pack‐
925              ages  building both architecture dependent and independent pack‐
926              ages  will  never  show  up  unless  built  with  a  new  enough
927              dpkg-source).
928
929
930       translatefilelists
931              Translate  the  file list cache within db/contents.cache.db into
932              the new format used since reprepro 3.0.0.
933
934              Make sure you have at least half of the  space  of  the  current
935              db/contents.cache.db file size available in that partition.
936
937       flood distribution [architecture]
938              For each architecture of distribution (or for the one specified)
939              add architecture all packages from other architectures (but  the
940              same component or packagetype) under the following conditions:
941
942               Packages are only upgraded, never downgraded.
943               If  there  is a package not being architecture all, then archi‐
944              tecture all packages of the same source  from  the  same  source
945              version  are  preferred over those that have no such binary sib‐
946              ling.
947               Otherwise the package with the highest version wins.
948
949              You can restrict with architectures are looked for  architecture
950              all  packages  using  -A  and  which components/packagetypes are
951              flooded by -C/-T as usual.
952
953              There are mostly two use cases for this command: If you added an
954              new  architecture to an distribution and want to copy all archi‐
955              tecture all packages to it.  Or if you included  some  architec‐
956              ture  all  packages only to some architectures using -A to avoid
957              breaking the other architectures for which the  binary  packages
958              were  still  missing  and now want to copy it to those architec‐
959              tures were they are unlikely to break something (because a  new‐
960              binary is already available).
961
962       unusedsources [distributions]
963              List  all source packages for which no binary package build from
964              them is found.
965
966       sourcemissing [distributions]
967              List all binary packages for which no source  package  is  found
968              (the source package must be in the same distribution, but source
969              packages only kept by package tracking is enough).
970
971       reportcruft [distributions]
972              List all source package versions that either have a source pack‐
973              age and no longer a binary package or binary packages left with‐
974              out source package in the index. (Unless sourcemissing also list
975              packages where the source package in only in the pool due to en‐
976              abled tracking but no longer in the index).
977
978       sizes [ codenames ]
979              List the size of all packages in the distributions specified  or
980              in all distributions.
981
982              Each  row  contains 4 numbers, each being a number of bytes in a
983              set of packages, which are: The packages  in  this  distribution
984              (including anything only kept because of tracking), the packages
985              only in this distribution (anything in this distribution  and  a
986              snapshot  of  this distribution counts as only in this distribu‐
987              tion), the packages in this distribution and its snapshots,  the
988              packages only in this distribution or its snapshots.
989
990              If  more  than  one distribution is selected, also list a sum of
991              those (in which 'Only' means only in selected ones, and not only
992              only in one of the selected ones).
993
994
995       repairdescriptions [ codenames ]
996              Look for binary packages only having a short description and try
997              to get the long description from the .deb file (and also  remove
998              a possible Description-md5 in this case).
999
1000   internal commands
1001       These are hopefully never needed, but allow manual intervention.  WARN‐
1002       ING: Is is quite easy to get  into  an  inconsistent  and/or  unfixable
1003       state.
1004
1005       _detect [ filekeys ]
1006              Look  for  the files, which filekey is given as argument or as a
1007              line of the input (when run without  arguments),  and  calculate
1008              their md5sum and add them to the list of known files.  (Warning:
1009              this is a low level operation, no input validation or normaliza‐
1010              tion is done.)
1011
1012       _forget [ filekeys ]
1013              Like _detect but remove the given filekey from the list of known
1014              files.  (Warning: this is a low level operation, no input  vali‐
1015              dation or normalization is done.)
1016
1017       _listmd5sums
1018              Print a list of all known files and their md5sums.
1019
1020       _listchecksums
1021              Print a list of all known files and their recorded checksums.
1022
1023       _addmd5sums
1024              alias for the newer
1025
1026       _addchecksums
1027              Add  information  of known files (without any check done) in the
1028              strict format of _listchecksums output (i.e. don't dare to use a
1029              single space anywhere more than needed).
1030
1031       _dumpcontents identifier
1032              Printout all the stored information of the specified part of the
1033              repository. (Or in other words, the  content  the  corresponding
1034              Packages or Sources file would get)
1035
1036       _addreference filekey identifier
1037              Manually mark filekey to be needed by identifier
1038
1039       _addreferences identifier [ filekeys ]
1040              Manually  mark  one or more filekeys to be needed by identifier.
1041              If no command line arguments are given, stdin is read and  every
1042              line treated as one filekey.
1043
1044       _removereference identifier filekey
1045              Manually  remove  the given mark that the file is needed by this
1046              identifier.
1047
1048       _removereferences identifier
1049              Remove all references what is needed by identifier.
1050
1051       __extractcontrol .deb-filename
1052              Look what reprepro believes to be the  content  of  the  control
1053              file of the specified .deb-file.
1054
1055       __extractfilelist .deb-filename
1056              Look what reprepro believes to be the list of files of the spec‐
1057              ified .deb-file.
1058
1059       _fakeemptyfilelist filekey
1060              Insert an empty filelist for filekey. This is a evil hack around
1061              broken .deb files that cannot be read by reprepro.
1062
1063       _addpackage codenam filename packages...
1064              Add packages from the specified filename to part specified by -C
1065              -A and -T of the specified distribution.   Very  strange  things
1066              can happen if you use it improperly.
1067
1068       __dumpuncompressors
1069              List what compressions format can be uncompressed and how.
1070
1071       __uncompress format compressed-file uncompressed-file
1072              Use  builtin  or external uncompression to uncompress the speci‐
1073              fied file of the specified format into the specified target.
1074
1075       _listcodenames
1076              Print - on per line - the codenames of all configured  distribu‐
1077              tions.
1078
1079       _listconfidentifiers identifier [ distributions... ]
1080              Print  -  one  per line - all identifiers of subdatabases as de‐
1081              rived from the configuration.  If a  list  of  distributions  is
1082              given, only identifiers of those are printed.
1083
1084
1085       _listdbidentifiers identifier [ distributions... ]
1086              Print  -  one  per line - all identifiers of subdatabases in the
1087              current database.  This will be a subset of the ones printed  by
1088              _listconfidentifiers  or  most  commands  but clearvanished will
1089              refuse to run, and depending on the database compatibility  ver‐
1090              sion,  will include all those if reprepro was run since the con‐
1091              fig was last changed.
1092
1093

CONFIG FILES

1095       reprepo uses three config files, which are searched  in  the  directory
1096       specified with --confdir or in the conf/ subdirectory of the basedir.
1097
1098       If  a file options exists, it is parsed line by line.  Each line can be
1099       the long name of a command line option (without the --) plus  an  argu‐
1100       ment,  where  possible.  Those are handled as if they were command line
1101       options given before (and thus lower priority than) any  other  command
1102       line option.  (and also lower priority than any environment variable).
1103
1104       To  allow  command  line options to override options file options, most
1105       boolean options also have a corresponding form starting with --no.
1106
1107       (The only exception is when the path to look for config files  changes,
1108       the options file will only opened once and of course before any options
1109       within the options file are parsed.)
1110
1111       The file distributions is always needed and  describes  what  distribu‐
1112       tions  to manage, while updates is only needed when syncing with exter‐
1113       nal repositories and pulls is only needed when syncing  with  reposito‐
1114       ries in the same reprepro database.
1115
1116       The  last  three are in the format control files in Debian are in, i.e.
1117       paragraphs separated by empty lines consisting of  fields.  Each  field
1118       consists  of  a fieldname, followed by a colon, possible whitespace and
1119       the data. A field ends with a newline not followed by a space or tab.
1120
1121       Lines starting with # as first character are ignored,  while  in  other
1122       lines  the # character and everything after it till the newline charac‐
1123       ter are ignored.
1124
1125       A paragraph can also consist of only a single field  "!include:"  which
1126       causes  the  named  file  (relative to confdir unless starting with ~/,
1127       +b/, +c/ or / ) to be read as if it was found at this place.
1128
1129       Each of the three files or a file included as described above can  also
1130       be  a  directory,  in  which case all files it contains with a filename
1131       ending in .conf and not starting with .  are read.
1132
1133   conf/distributions
1134       Codename
1135              This required field is the unique identifier of  a  distribution
1136              and  used as directory name within dists/ It is also copied into
1137              the Release files.
1138
1139              Note that this name is not supposed to change.  You most  likely
1140              never  ever  want  a name like testing or stable here (those are
1141              suite names  and  supposed  to  point  to  another  distribution
1142              later).
1143
1144       Suite  This  optional field is simply copied into the Release files. In
1145              Debian it contains names like stable, testing  or  unstable.  To
1146              create  symlinks  from  the  Suite to the Codename, use the cre‐
1147              atesymlinks command of reprepro.
1148
1149       FakeComponentPrefix
1150              If this field is present, its argument is added - separated by a
1151              slash -  before every Component written to the main Release file
1152              (unless the component already starts with it), and removed  from
1153              the  end of the Codename and Suite fields in that file.  Also if
1154              a component starts with it, its directory in the  dists  dir  is
1155              shortened by this.
1156              So
1157
1158               Codename: bla/updates
1159               Suite: foo/updates
1160               FakeComponentPrefix: updates
1161               Components: main bad
1162
1163              will create a Release file with
1164
1165               Codename: bla
1166               Suite: foo
1167               Components: updates/main updates/bad
1168
1169              in it, but otherwise nothing is changed, while
1170
1171               Codename: bla/updates
1172               Suite: foo/updates
1173               FakeComponentPrefix: updates
1174               Components: updates/main updates/bad
1175
1176              will also create a Release file with
1177
1178               Codename: bla
1179               Suite: foo
1180               Components: updates/main updates/bad
1181
1182              but the packages will actually be in the components updates/main
1183              and updates/bad, most likely causing the same file using  dupli‐
1184              cate storage space.
1185
1186              This makes the distribution look more like Debian's security ar‐
1187              chive, thus work around  problems  with  apt's  workarounds  for
1188              that.
1189
1190       AlsoAcceptFor
1191              A  list  of distribution names.  When a .changes file is told to
1192              be included into this distribution with the include command  and
1193              the  distribution  header  of that file is neither the codename,
1194              nor the suite name, nor any name from the list, a wrongdistribu‐
1195              tion error is generated.  The process_incoming command will also
1196              use this field, see the description of Allow  and  Default  from
1197              the conf/incoming file for more information.
1198
1199       Version
1200              This optional field is simply copied into the Release files.
1201
1202       Origin This optional field is simply copied into the Release files.
1203
1204       Label  This optional field is simply copied into the Release files.
1205
1206       NotAutomatic
1207              This  optional  field  is  simply copied into the Release files.
1208              (The value is handled as an arbitrary  string,  though  anything
1209              but yes does not make much sense right now.)
1210
1211       ButAutomaticUpgrades
1212              This  optional  field  is  simply copied into the Release files.
1213              (The value is handled as an arbitrary  string,  though  anything
1214              but yes does not make much sense right now.)
1215
1216       Description
1217              This optional field is simply copied into the Release files.
1218
1219       Architectures
1220              This  required  field lists the binary architectures within this
1221              distribution and if it contains source (i.e. if there is an item
1222              source  in  this  line  this  Distribution has source. All other
1223              items specify things to be put after "binary-" to form directory
1224              names and be checked against "Architecture:" fields.)
1225
1226              This will also be copied into the Release files. (With exception
1227              of the source item, which will not occur in the topmost  Release
1228              file whether it is present here or not)
1229
1230       Components
1231              This  required  field lists the component of a distribution. See
1232              GUESSING for rules which component packages are included into by
1233              default. This will also be copied into the Release files.
1234
1235       UDebComponents
1236              Components   with  a  debian-installer  subhierarchy  containing
1237              .udebs.  (E.g. simply "main")
1238
1239       Update When this field is present, it describes which update rules  are
1240              used for this distribution. There also can be a magic rule minus
1241              ("-"), see below.
1242
1243       Pull   When this field is present, it describes which  pull  rules  are
1244              used  for  this distribution.  Pull rules are like Update rules,
1245              but get their stuff from other distributions and not from exter‐
1246              nal sources.  See the description for conf/pulls.
1247
1248       SignWith
1249              When  this  field  is present, a Release.gpg file will be gener‐
1250              ated.  If the value is "yes" or "default", the  default  key  of
1251              gpg is used.  If the field starts with an exlamation mark ("!"),
1252              the given script is executed to do the signing.   Otherwise  the
1253              value will be given to libgpgme to determine to key to use.
1254
1255              If there are problems with signing, you can try
1256              gpg --list-secret-keys value
1257              to see how gpg could interprete the value.  If that command does
1258              not list any keys or multiple ones, try to find some other value
1259              (like  the  keyid),  that  gpg  can more easily associate with a
1260              unique key.
1261
1262              If this key has a passphrase, you need to use gpg-agent  or  the
1263              insecure option --ask-passphrase.
1264
1265              A '!' hook script is looked for in the confdir, unless it starts
1266              with ~/, ./, +b/, +o/, +c/ or / .  Is gets  three  command  line
1267              arguments:  The filename to sign, an empty argument or the file‐
1268              name to create with an inline signature (i.e. InRelease) and  an
1269              empty  argument  or the filename to create an detached signature
1270              (i.e. Release.gpg).  The script may generate no Release.gpg file
1271              if it choses to (then the repository will look like unsigned for
1272              older clients), but  generating  empty  files  is  not  allowed.
1273              Reprepro  waits  for the script to finish and will abort the ex‐
1274              porting of the distribution this signing is part of  unless  the
1275              scripts  returns normally with exit code 0.  Using a space after
1276              ! is recommended to avoid incompatibilities with possible future
1277              extensions.
1278
1279       DebOverride
1280              When  this field is present, it describes the override file used
1281              when including .deb files.
1282
1283       UDebOverride
1284              When this field is present, it describes the override file  used
1285              when including .udeb files.
1286
1287       DscOverride
1288              When  this field is present, it describes the override file used
1289              when including .dsc files.
1290
1291       DebIndices, UDebIndices, DscIndices
1292              Choose what kind of Index files to export. The  first  part  de‐
1293              scribes  what  the Index file shall be called.  The second argu‐
1294              ment determines the name of a Release file to generate or not to
1295              generate  if missing.  Then at least one of ".", ".gz", ".xz" or
1296              ".bz2"  specifying  whether  to  generate  uncompressed  output,
1297              gzipped  output,  bzip2ed  output or any combination.  (bzip2 is
1298              only available when compiled with bzip2 support, so it might not
1299              be  available  when you compiled it on your own, same for xz and
1300              liblzma).  If an argument not starting with dot follows, it will
1301              be executed after all index files are generated.  (See the exam‐
1302              ples for what argument this gets).  The default is:
1303              DebIndices: Packages Release . .gz
1304              UDebIndices: Packages . .gz
1305              DscIndices: Sources Release .gz
1306
1307       ExportOptions
1308              Options to modify how and if exporting is done:
1309              noexport Never export this distribution.  That means there  will
1310              be  no  directory below dists/ generated and the distribution is
1311              only useful to copy packages to other distributions.
1312              keepunknown Ignore unknown files and directories in the exported
1313              directory.   This is currently the only available option and the
1314              default, but might change in the future, so it  can  already  be
1315              requested explicitly.
1316
1317       Contents
1318              Enable  the  creation  of  Contents  files listing all the files
1319              within the binary packages of a distribution.  (Which  is  quite
1320              slow, you have been warned).
1321
1322              In  earlier  versions, the first argument was a rate at which to
1323              extract file lists.  As this did not work and was no longer eas‐
1324              ily  possible  after  some factorisation, this is no longer sup‐
1325              ported.
1326
1327              The arguments of this field is a space  separated  list  of  op‐
1328              tions.   If there is a udebs keyword, .udebs are also listed (in
1329              a file called uContents-architecture.)  If  there  is  a  nodebs
1330              keyword,  .debs  are  not  listed.   (Only  useful together with
1331              udebs) If there is at least one of  the  keywords  .,  .gz,  .xz
1332              and/or  .bz2,  the  Contents  files  are  written  uncompressed,
1333              gzipped and/or bzip2ed instead of only gzipped.
1334
1335              If there is a percomponent then one Contents-arch file per  com‐
1336              ponent  is created.  If there is a allcomponents then one global
1337              Contents-arch file is generated.  If both are  given,  both  are
1338              created.   If  none  of  both  is specified then percomponent is
1339              taken as default (earlier versions had other defaults).
1340
1341              The switches compatsymlink or nocompatsymlink (only possible  if
1342              allcomponents  was  not  specified explicitly) control whether a
1343              compatibility symlink is created so  old  versions  of  apt-file
1344              looking for the component independent filenames at least see the
1345              contents of the first component.
1346
1347              Unless allcomponents is given, compatsymlinks currently  is  the
1348              default,  but that will change in some future (current estimate:
1349              after wheezy was released)
1350
1351
1352       ContentsArchitectures
1353              Limit generation of Contents files to the  architectures  given.
1354              If this field is not there, all architectures are processed.  An
1355              empty field means no architectures are processed, thus not  very
1356              useful.
1357
1358       ContentsComponents
1359              Limit  what components are processed for the Contents-arch files
1360              to the components given.  If this field is not there, all compo‐
1361              nents  are  processed.   An empty field is equivalent to specify
1362              nodebs in the Contents field, while a non-empty field  overrides
1363              a nodebs there.
1364
1365       ContentsUComponents
1366              Limit  what  components are processed for the uContents files to
1367              the components given.  If this field is not there and  there  is
1368              the  udebs keyword in the Contents field, all .udebs of all com‐
1369              ponents are put in the uContents.arch files.  If this  field  is
1370              not  there  and there is no udebs keyword in the Contents field,
1371              no uContents-arch files  are  generated  at  all.   A  non-empty
1372              fields implies generation of uContents-arch files (just like the
1373              udebs keyword in the Contents field), while an empty one  causes
1374              no uContents-arch files to be generated.
1375
1376       Uploaders
1377              Specifies  a  file (relative to confdir if not starting with ~/,
1378              +b/, +c/ or / ) to specify who is allowed  to  upload  packages.
1379              Without  this  there are no limits, and this file can be ignored
1380              via --ignore=uploaders.  See the section UPLOADERS FILES below.
1381
1382       Tracking
1383              Enable the (experimental) tracking of source packages.  The  ar‐
1384              gument list needs to contain exactly one of the following:
1385              keep  Keeps  all  files of a given source package, until that is
1386              deleted explicitly via removetrack. This is currently  the  only
1387              possibility  to keep older packages around when all indices con‐
1388              tain newer files.
1389              all Keep all files belonging to a given source package until the
1390              last file of it is no longer used within that distribution.
1391              minimal Remove files no longer included in the tracked distribu‐
1392              tion.  (Remove changes, logs and  includebyhand  files  once  no
1393              file is in any part of the distribution).
1394              And any number of the following (or none):
1395              includechanges  Add  the .changes file to the tracked files of a
1396              source package.  Thus it is also put into the pool.
1397              includebyhand Add byhand and raw-* files to  the  tracked  files
1398              and thus in the pool.
1399              includebuildinfos  Add  buildinfo files to the tracked files and
1400              thus in the pool.
1401              includelogs Add log files to the tracked files and thus  in  the
1402              pool.   (Not that putting log files in changes files is a repre‐
1403              pro extension not found in normal changes files)
1404              embargoalls Not yet implemented.
1405              keepsources Even when using minimal mode, do not  remove  source
1406              files until no file is needed any more.
1407              needsources Not yet implemented.
1408
1409       Log    Specify  a  file to log additions and removals of this distribu‐
1410              tion into and/or external scripts  to  call  when  something  is
1411              added  or  removed.   The rest of the Log: line is the filename,
1412              every following line (as usual, have  to  begin  with  a  single
1413              space) the name of a script to call.  The name of the script may
1414              be preceded with  options  of  the  form  --type=(dsc|deb|udeb),
1415              --architecture=name  or --component=name to only call the script
1416              for some parts of the distribution.   An  script  with  argument
1417              --changes is called when a .changes file was accepted by include
1418              or processincoming (and with other  arguments).   Both  type  of
1419              scripts  can have a --via=command specified, in which case it is
1420              only called when caused by reprepro command command.
1421
1422              For information how it is called and some examples take  a  look
1423              at manual.html in reprepro's source or /usr/share/doc/reprepro/
1424
1425              If  the  filename for the log files does not start with a slash,
1426              it is relative to the directory  specified  with  --logdir,  the
1427              scripts  are relative to --confdir unless starting with ~/, +b/,
1428              +c/ or /.
1429
1430       ValidFor
1431              If this field exists, an Valid-Until field is put into generated
1432              Release  files for this distribution with an date as much in the
1433              future as the argument specifies.
1434
1435              The argument has to be an number followed by one of the units d,
1436              m  or  y,  where  d  means days, m means 31 days and y means 365
1437              days.  So ValidFor: 1m 11 d causes the generation of a Valid-Un‐
1438              til:  header  in  Release files that points 42 days into the fu‐
1439              ture.
1440
1441       ReadOnly
1442              Disallow all modifications of this distribution or its directory
1443              in  dists/codename  (with  the exception of snapshot subdirecto‐
1444              ries).
1445
1446       ByHandHooks
1447              This species hooks to call for handling byhand/raw files by pro‐
1448              cessincoming (and in future versions perhaps by include).
1449
1450              Each  line  consists  out of 4 arguments: A glob pattern for the
1451              section (clasically byhand, though Ubuntu uses  raw-*),  a  glob
1452              pattern  for the priority (not usually used), and a glob pattern
1453              for the filename.
1454
1455              The 4th argument is the script to be  called  when  all  of  the
1456              above match.  It gets 5 arguments: the codename of the distribu‐
1457              tion, the section (usually byhand), the priority  (usually  only
1458              -), the filename in the changes file and the full filename (with
1459              processincoming in the secure TempDir).
1460
1461       Signed-By
1462              This optional field is simply copied into the Release files.  It
1463              is  used to tell apt which keys to trust for this Release in the
1464              future.  (see SignWith for how to tell reprepro whether and  how
1465              to sign).
1466
1467   conf/updates
1468       Name   The name of this update-upstream as it can be used in the Update
1469              field in conf/distributions.
1470
1471       Method An URI as one could  also  give  it  apt,  e.g.   http://ftp.de
1472              bian.de/debian  which  is  simply  given  to  the  corresponding
1473              apt-get method. (So either apt-get has to be installed,  or  you
1474              have to point with --methoddir to a place where such methods are
1475              found.
1476
1477       Fallback
1478              (Still experimental:) A fallback URI, where all files are  tried
1479              that  failed the first one. They are given to the same method as
1480              the previous URI (e.g. both http://),  and  the  fallback-server
1481              must  have  everything  at  the same place.  No recalculation is
1482              done, but single files are just retried from this location.
1483
1484       Config This can contain any number of lines, each in the format apt-get
1485              --option would expect. (Multiple lines ‐ as always ‐ marked with
1486              leading spaces).
1487
1488       For example: Config: Acquire::Http::Proxy=http://proxy.yours.org:8080
1489
1490       From   The name of another update rule this rules  derives  from.   The
1491              rule  containing  the  From  may not contain Method, Fallback or
1492              Config.  All other fields are used from the rule  referenced  in
1493              From, unless found in this containing the From.  The rule refer‐
1494              enced in From may itself contain a From.  Reprepro will only as‐
1495              sume  two  remote  index  files  are the same, if both get their
1496              Method information from the same rule.
1497
1498       Suite  The suite to update from. If this is not present,  the  codename
1499              of the distribution using this one is used. Also "*/whatever" is
1500              replaced by "<codename>/whatever"
1501
1502       Components
1503              The components to update. Each item can be either the name of  a
1504              component  or  a pair of a upstream component and a local compo‐
1505              nent   separated   with   ">".   (e.g.   "main>all   contrib>all
1506              non-free>notall")
1507
1508              If this field is not there, all components from the distribution
1509              to update are tried.
1510
1511              An empty field means no source or .deb packages are  updated  by
1512              this rule, but only .udeb packages, if there are any.
1513
1514              A  rule might list components not available in all distributions
1515              using this rule. In this case unknown  components  are  silently
1516              ignored.   (Unless you start reprepro with the --fast option, it
1517              will warn about components unusable in all  distributions  using
1518              that  rule.  As  exceptions, unusable components called none are
1519              never warned about, for compatibility  with  versions  prior  to
1520              3.0.0 where and empty field had a different meaning.)
1521
1522       Architectures
1523              The  architectures  to update. If omitted all from the distribu‐
1524              tion to update from. (As with components, you  can  use  ">"  to
1525              download  from  one architecture and add into another one. (This
1526              only determine in which Package list they land, it neither over‐
1527              writes  the Architecture line in its description, nor the one in
1528              the filename determined from this one. In other words, it is  no
1529              really useful without additional filtering))
1530
1531       UDebComponents
1532              Like Components but for the udebs.
1533
1534       VerifyRelease
1535              Download  the Release.gpg file and check if it is a signature of
1536              the Releasefile with the key given here. (In the Format as  "gpg
1537              --with-colons --list-key" prints it, i.e. the last 16 hex digits
1538              of the fingerprint) Multiple keys can be specified by separating
1539              them  with  a "|" sign. Then finding a signature from one of the
1540              will suffice.  To allow revoked or expired keys, add a  "!"  be‐
1541              hind  a  key.   (but  to accept such signatures, the appropriate
1542              --ignore is also needed).  To also allow subkeys of a  specified
1543              key, add a "+" behind a key.
1544
1545       IgnoreRelease: yes
1546              If  this  is present, no InRelease or Release file will be down‐
1547              loaded and thus the md5sums of the other index files will not be
1548              checked.
1549
1550       GetInRelease: no
1551              IF this is present, no InRelease file is downloaded but only Re‐
1552              lease (and Release.gpg ) are tried.
1553
1554       Flat   If this field is in an update rule, it is supposed to be a  flat
1555              repository,  i.e. a repository without a dists dir and no subdi‐
1556              rectories  for  the  index   files.    (If   the   corresponding
1557              sources.list line has the suite end with a slash, then you might
1558              need this one.)  The argument for the Flat: field is the  Compo‐
1559              nent  to  put  those packages into.  No Components or UDebCompo‐
1560              nents fields are allowed in a flat update rule.  If  the  Archi‐
1561              tecture  field  has any > items, the part left of the ">" is ig‐
1562              nored.
1563              For example the sources.list line
1564               deb http://cran.r-project.org/bin/linux/debian etch-cran/
1565              would translate to
1566               Name: R
1567               Method: http://cran.r-project.org/bin/linux/debian
1568               Suite: etch-cran
1569               Flat: whatevercomponentyoudlikethepackagesin
1570
1571       IgnoreHashes
1572              This directive tells reprepro to not check the listed hashes  in
1573              the  downloaded  Release  file  (and  only in the Release file).
1574              Possible values are currently md5, sha1 and sha256.
1575
1576              Note that this does not speed anything up in any measurable way.
1577              The  only reason to specify this if the Release file of the dis‐
1578              tribution you want to mirror from uses a faulty algorithm imple‐
1579              mentation.   Otherwise you will gain nothing and only lose secu‐
1580              rity.
1581
1582       FilterFormula
1583              This can be a formula to specify which packages to  accept  from
1584              this  source. The format is misusing the parser intended for De‐
1585              pendency lines. To get only architecture all packages  use  "ar‐
1586              chitecture  (==  all)",  to get only at least important packages
1587              use "priority (==required) | priority (==important)".
1588
1589              See the description of the listfilter command for the  semantics
1590              of formulas.
1591
1592       FilterList, FilterSrcList
1593              These  two  options  each take at least two arguments: The first
1594              argument is the fallback (default) action.  All following  argu‐
1595              ments are treated as file names of lists.
1596
1597              The filenames are considered to be relative to --confdir, if not
1598              starting with ~/, +b/, +c/ or /.
1599
1600              Each list file consists of lines with a package name followed by
1601              whitespaced followed by an action.
1602
1603              Each  list  may  only  contain a single line for a given package
1604              name.  The action to be taken is the  action  specified  by  the
1605              first  file mentioning that package.  If no list file mentions a
1606              package, the fallback action is used instead.
1607
1608              This format is inspired by dpkg --get-selections  before  multi‐
1609              arch  and the names of the actions likely only make sense if you
1610              imagine the file to be the output of this command of an existing
1611              system.
1612
1613              For  each  package  available  in the distribution to be updated
1614              from/pulled from this action is determined and affects the  cur‐
1615              rent  decision what to do to the target distribution.  (Only af‐
1616              ter all update/pull rules for a given target  distribution  have
1617              been processed something is actually done).
1618
1619              The possible action keywords are:
1620
1621              install
1622                     mark the available package to be added to the target dis‐
1623                     tribution unless the same version or a higher version  is
1624                     already marked as to be added/kept.  (Note that without a
1625                     prior delete rule (-) or supersede action, this will will
1626                     never downgrade a package as the already existing version
1627                     is marked to be kept).
1628
1629              upgradeonly
1630                     like install but will not add new packages to a distribu‐
1631                     tion.
1632
1633              supersede
1634                     unless  the  current  package  version is higher than the
1635                     available package version, mark the package to be deleted
1636                     in  the  target distribution.  (Useful to remove packages
1637                     in add-on distributions once they reached the  base  dis‐
1638                     tribution).
1639
1640              deinstall or purge
1641                     ignore the newly available package.
1642
1643              warning
1644                     print  a warning message to stderr if a new package/newer
1645                     version is available.  Otherwise ignore the  new  package
1646                     (like with deinstall or purge).
1647
1648              hold   the  new  package is ignored, but every previous decision
1649                     to downgrade or delete the package in the target  distri‐
1650                     bution is reset.
1651
1652              error  abort  the whole upgrade/pull if a new package/newer ver‐
1653                     sion is available
1654
1655              = version
1656                     If the candidate package has the  given  version,  behave
1657                     like  install.   Otherwise  continue as if this list file
1658                     did not mention this package (i.e. look in the  remaining
1659                     list  files  or  use the fallback action).  Only one such
1660                     entry per package is currently supported and the  version
1661                     is currently compared as string.
1662
1663              If  there is both FilterList and FilterSrcList then the first is
1664              used for .deb and .udeb and the second for .dsc packages.
1665
1666              If there is only FilterList that is applied to everything.
1667
1668              If there is only FilterSrcList that is  applied  to  everything,
1669              too, but the source package name (and source version) is used to
1670              do the lookup.
1671
1672       OmitExtraSourceOnly
1673              This field controls whether source packages  with  Extra-Source-
1674              Only set are ignore when getting source packages.  Withouth this
1675              option or if it is true,  those  source  packages  are  ignored,
1676              while if set to no or false, those source packages are also con‐
1677              didates if no other filter excludes them.  (The default of  true
1678              will likely change once reprepro supports multiple versions of a
1679              package or has other means to keep the source packages around).
1680
1681       ListHook
1682              If this is given, it is executed for all downloaded index  files
1683              with  the  downloaded  list as first and a filename that will be
1684              used instead of this. (e.g. "ListHook: /bin/cp" works  but  does
1685              nothing.)
1686
1687              If  a file will be read multiple times, it is processed multiple
1688              times, with the environment variables  REPREPRO_FILTER_CODENAME,
1689              REPREPRO_FILTER_PACKAGETYPE,    REPREPRO_FILTER_COMPONENT    and
1690              REPREPRO_FILTER_ARCHITECTURE set to the where this file will  be
1691              added and REPREPRO_FILTER_PATTERN to the name of the update rule
1692              causing it.
1693
1694
1695       ListShellHook
1696              This is like ListHook, but the whole argument is  given  to  the
1697              shell  as  argument, and the input and output file are stdin and
1698              stdout.
1699
1700              i.e.:
1701              ListShellHook: cat
1702              works but does nothing but useless use of a shell and cat, while
1703              ListShellHook: grep-dctrl -X -S apt -o -X -S dpkg || [ $? -eq  1
1704              ]
1705              will limit the update rule to packages from the specified source
1706              packages.
1707
1708       DownloadListsAs
1709              The arguments of this field specify which index  files  reprepro
1710              will download.
1711
1712              Allowed  values  are  ., .gz, .bz2, .lzma, .xz, .diff, force.gz,
1713              force.bz2, force.lzma, force.xz, and force.diff.
1714
1715              Reprepro will try the first supported variant in the list given:
1716              Only  compressions  compiled in or for which an uncompressor was
1717              found are used.  Unless the value starts with force., it is only
1718              tried if is found in the Release or InRelease file.
1719
1720              The  default value is .diff .xz .lzma .bz2 .gz ., i.e.  download
1721              Packages.diff if listed in the Release file, otherwise or if not
1722              usable download .xz if listed in the Release file and there is a
1723              way to uncompress it, then .lzma if usable, then .bz2 if usable,
1724              then .gz and then uncompressed).
1725
1726              Note  there  is  no way to see if an uncompressed variant of the
1727              file is available (as the Release file always lists their check‐
1728              sums,  even  if  not  there), so putting '.' anywhere but as the
1729              last argument can mean trying to download a file that  does  not
1730              exist.
1731
1732              Together  with IgnoreRelease reprepro will download the first in
1733              this list that could be unpacked (i.e. force is always  assumed)
1734              and the default value is .gz .bzip2 . .lzma .xz.
1735
1736   conf/pulls
1737       This file contains the rules for pulling packages from one distribution
1738       to another.  While this can also be done with update  rules  using  the
1739       file  or  copy method and using the exported indices of that other dis‐
1740       tribution, this way is faster.  It also ensures the current  files  are
1741       used  and  no copies are made.  (This also leads to the limitation that
1742       pulling from one component to another is not possible.)
1743
1744       Each rule consists out of the following fields:
1745
1746       Name   The name of this pull rule as it can be used in the  Pull  field
1747              in conf/distributions.
1748
1749       From   The codename of the distribution to pull packages from.
1750
1751       Components
1752              The components of the distribution to get from.
1753
1754              If this field is not there, all components from the distribution
1755              to  update are tried.
1756
1757              A rule might list components not available in all  distributions
1758              using  this  rule.  In this case unknown components are silently
1759              ignored.  (Unless you start reprepro with the --fast option,  it
1760              will  warn  about components unusable in all distributions using
1761              that rule.  As exception, unusable components  called  none  are
1762              never  warned  about,  for  compatibility with versions prior to
1763              3.0.0 where and empty field had a different meaning.)
1764
1765       Architectures
1766              The architectures to update.  If omitted all from the  distribu‐
1767              tion to pull from.  As in conf/updates, you can use ">" to down‐
1768              load from one architecture and add into another one. (And again,
1769              only  useful  with  filtering to avoid packages not architecture
1770              all to migrate).
1771
1772       UDebComponents
1773              Like Components but for the udebs.
1774
1775       FilterFormula
1776
1777       FilterList
1778
1779       FilterSrcList
1780              The same as with update rules.
1781

OVERRIDE FILES

1783       The format of override files used by reprepro should resemble  the  ex‐
1784       tended ftp-archive format, to be specific it is:
1785
1786       packagename field name new value
1787
1788       For example:
1789       kernel-image-2.4.31-yourorga Section protected/base
1790       kernel-image-2.4.31-yourorga Priority standard
1791       kernel-image-2.4.31-yourorga Maintainer That's me <me@localhost>
1792       reprepro Priority required
1793
1794       All  fields of a given package will be replaced by the new value speci‐
1795       fied in the override file with the exception of special fields starting
1796       with a dollar sign ($).  While the field name is compared case-insensi‐
1797       tive, it is copied in exactly the form  in  the  override  file  there.
1798       (Thus I suggest to keep to the exact case it is normally found in index
1799       files in case some other tool confuses them.)  More than copied is  the
1800       Section header (unless -S is supplied), which is also used to guess the
1801       component (unless -C is there).
1802
1803       Some values like Package, Filename, Size or MD5sum  are  forbidden,  as
1804       their usage would severly confuse reprepro.
1805
1806       As  an  extension  reprepro  also supports patterns instead of package‐
1807       names.  If the package name contains '*', '[' or '?', it is  considered
1808       a  pattern  and applied to each package that is not matched by any non-
1809       pattern override nor by any previous pattern.
1810
1811       Fieldnames starting with a dollar ($) are not be placed in the exported
1812       control  data  but  have  special meaning.  Unknown ones are loudly ig‐
1813       nored.  Special fields are:
1814
1815        $Component: includedeb, includedsc, include and  processincoming  will
1816       put the package in the component given as value (unless itself overrid‐
1817       den with -C).  Note that the proper way to specify the component is  by
1818       setting  the  section  field  and using this extension will most likely
1819       confuse people and/or tools.
1820
1821        $Delete: the value is treated a fieldname and fields of that name  are
1822       removed.   (This way one can remove fields previously added without re‐
1823       moving and readding the package.  And fields already  included  in  the
1824       package can be removed, too).
1825
1826
1827   conf/incoming
1828       Every  chunk  is a rule set for the process_incoming command.  Possible
1829       fields are:
1830
1831       Name   The name of the rule-set, used as argument to the  scan  command
1832              to specify to use this rule.
1833
1834       IncomingDir
1835              The Name of the directory to scan for .changes files.
1836
1837       TempDir
1838              A  directory  where  the  files listed in the processed .changes
1839              files are copied into before they are read.  You can avoid  some
1840              copy  operations by placing this directory within the same moint
1841              point the pool hierarchy is (at least partially) in.
1842
1843       LogDir A directory where .changes files, .log files,  .buildinfo  files
1844              and otherwise unused .byhand files are stored upon procession.
1845
1846       Allow  Each  argument is either a pair name1>name2 or simply name which
1847              is short for name>name.  Each name2 must  identify  a  distribu‐
1848              tion,  either by being Codename, a unique Suite, or a unique Al‐
1849              soAcceptFor from conf/distributions.  Each upload has each  item
1850              in  its  Distribution:  header  compared first to last with each
1851              name1 in the rules and is put in the first  one  accepting  this
1852              package.  e.g.:
1853              Allow: local unstable>sid
1854              or
1855              Allow: stable>security-updates stable>proposed-updates
1856              (Note  that  this makes only sense if Multiple is set to true or
1857              if there are people only allowed to upload  to  proposed-updates
1858              but not to security-updates).
1859
1860       Default distribution
1861              Every  upload  not put into any other distribution because of an
1862              Allow argument is put into distribution if that accepts it.
1863
1864       Multiple
1865              Old form of Options: multiple_distributions.
1866
1867       Options
1868              A list of options
1869              multiple_distributions
1870              Allow including a upload in multiple distributions.
1871
1872              If a .changes file lists multiple distributions,  then  reprepro
1873              will  start  with the first name given, check all Accept and De‐
1874              fault options till it finds a distribution this  upload  can  go
1875              into.
1876
1877              If  this  found  no  distribution  or  if this option was given,
1878              reprepro will then do the same with the second distribution name
1879              given in the .changes file and so on.
1880              limit_arch_all
1881              If an upload contains binaries from some architecture and archi‐
1882              tecture all packages, the architecture all packages are only put
1883              into  the  architectures  within this upload.  Useful to combine
1884              with the flood command.
1885
1886       Permit A list of options to allow things otherwise causing errors:
1887              unused_files
1888              Do not stop with error if there are files listed in the .changes
1889              file if it lists files not belonging to any package in it.
1890              older_version
1891              Ignore  a  package not added because there already is a strictly
1892              newer version available instead of treating this as an error.
1893              unlisted_binaries
1894              Do not abort with an error if  a  .changes  file  contains  .deb
1895              files that are not listed in the Binaries header.
1896
1897       Cleanup options
1898              A  list of options to cause more files in the incoming directory
1899              to be deleted:
1900              unused_files
1901              If there is unused_files in Permit then also delete those  files
1902              when the package is deleted after successful processing.
1903              unused_buildinfo_files
1904              If  .buildinfo  files  of  processed .changes files are not used
1905              (neither stored by LogDir nor with Tracking:  includebuildinfos)
1906              then delete them from the incoming dir.  (This option has no ad‐
1907              ditional effect if unused_files is already used.)
1908              on_deny
1909              If a .changes file is denied processing because of missing  sig‐
1910              natures or allowed distributions to be put in, delete it and all
1911              the files it references.
1912              on_error
1913              If a .changes file causes errors while processing, delete it and
1914              the files it references.
1915
1916              Note  that  allowing  cleanup  in publically accessible incoming
1917              queues allows a denial of service by sending in  .changes  files
1918              deleting  other  peoples files before they are completed.  Espe‐
1919              cially when .changes files are handled directly (e.g. by  inoti‐
1920              coming).
1921
1922
1923       MorgueDir
1924              If files are to be deleted by Cleanup, they are instead moved to
1925              a subdirectory of the directory given as value  to  this  field.
1926              This  directory  has to be on the same partition as the incoming
1927              directory and files are moved (i.e. owner  and  permission  stay
1928              the same) and never copied.
1929
1930

UPLOADERS FILES

1932       These files specified by the Uploaders header in the distribution defi‐
1933       nition as explained above describe what key a .changes file  as  to  be
1934       signed with to be included in that distribution.
1935
1936       Empty  lines  and  lines  starting with a hash are ignored, every other
1937       line must be of one of the following nine forms or  an  include  direc‐
1938       tive:
1939
1940       allow condition by anybody
1941              which allows everyone to upload packages matching condition,
1942
1943       allow condition by unsigned
1944              which allows everything matching that has no pgp/gpg header,
1945
1946       allow condition by any key
1947              which allows everything matching with any valid signature in or
1948
1949       allow condition by key key-id
1950              which  allows  everything  matching signed by this key-id (to be
1951              specified without any spaces).  If the  key-id  ends  with  a  +
1952              (plus),  a signature with a subkey of this primary key also suf‐
1953              fices.
1954
1955              key-id must be a suffix of the id libgpgme uses to identify this
1956              key,  i.e. a number of hexdigits from the end of the fingerprint
1957              of the key, but no more than what libgpgme uses.   (The  maximal
1958              number should be what gpg --list-key --with-colons prints, as of
1959              the time of this writing that is at most 16 hex-digits).
1960
1961       allow condition by group groupname
1962              which allows every member of group groupname.  Groups can be ma‐
1963              nipulated by
1964
1965       group groupname add key-id
1966              to add a key-id (see above for details) to this group, or
1967
1968       group groupname contains groupname
1969              to add a whole group to a group.
1970
1971              To avoid warnings in incomplete config files there is also
1972
1973       group groupname empty
1974              to  declare  a  group has no members (avoids warnings that it is
1975              used without those) and
1976
1977       group groupname unused
1978              to declare that a group is not yet used (avoid warnings that  it
1979              is not used).
1980
1981       A  line  starting with include causes the rest of the line to be inter‐
1982       preted as filename, which is opened and processed before  the  rest  of
1983       the file is processed.
1984
1985       The only conditions currently supported are:
1986
1987       *      which means any package,
1988
1989       source 'name'
1990              which  means any package with source name.  ('*', '?' and '[..]'
1991              are treated as in shell wildcards).
1992
1993       sections 'name'(|'name')*
1994              matches an upload in which each section matches one of the names
1995              given.  As upload conditions are checked very early, this is the
1996              section listed in the .changes file, not the one from the  over‐
1997              ride  file.   (But  this might change in the future, if you have
1998              the need for the one or the other behavior, let me know).
1999
2000       sections contain 'name'(|'name')*
2001              The same, but not all sections must be from the given  set,  but
2002              at least one source or binary package needs to have one of those
2003              given.
2004
2005       binaries 'name'(|'name')*
2006              matches an upload in  which  each  binary  (type  deb  or  udeb)
2007              matches one of the names given.
2008
2009       binaries contain 'name'(|'name')*
2010              again only at least one instead of all is required.
2011
2012       architectures 'architecture'(|'name')*
2013              matches  an  upload in which each package has only architectures
2014              from the given set.  source and all are treated as unique archi‐
2015              tectures.  Wildcards are not allowed.
2016
2017       architectures contain 'architecture'(|'architecture')*
2018              again only at least one instead of all is required.
2019
2020       byhand matches  an  upload  with  at least one byhand file (i.e. a file
2021              with section byhand or raw-something).
2022
2023       byhand 'section'(|'section')*
2024              matches an upload with at least one byhand file and  all  byhand
2025              files  having  a  section  listed  in the list of given section.
2026              (i.e. byhand 'byhand'|'raw-*' is currently is the  same  as  by‐
2027              hand).
2028
2029       distribution 'codename'
2030              which  means  any package when it is to be included in codename.
2031              As the uploaders file is given by  distribution,  this  is  only
2032              useful  to reuse a complex uploaders file for multiple distribu‐
2033              tions.
2034
2035       Putting not in front of a condition, inverses it's meaning.  For  exam‐
2036       ple
2037       allow not source 'r*' by anybody
2038       means anybody may upload packages which source name does not start with
2039       an 'r'.
2040
2041       Multiple conditions can be connected with and and or, with  or  binding
2042       stronger (but both weaker than not).  That means
2043       allow source 'r*' and source '*xxx' or source '*o' by anybody
2044       is equivalent to
2045       allow source 'r*xxx' by anybody
2046       allow source 'r*o' by anybody
2047
2048       (Other  conditions will follow once somebody tells me what restrictions
2049       are useful.  Currently planned is only something for architectures).
2050

ERROR IGNORING

2052       With --ignore on the command line or an  ignore  line  in  the  options
2053       file, the following type of errors can be ignored:
2054
2055       brokenold (hopefully never seen)
2056              If  there are errors parsing an installed version of package, do
2057              not error out, but assume it is older than  anything  else,  has
2058              not files or no source name.
2059
2060       brokensignatures
2061              If  a .changes or .dsc file contains at least one invalid signa‐
2062              ture and no valid signature (not even expired or from an expired
2063              or revoked key), reprepro assumes the file got corrupted and re‐
2064              fuses to use it unless this ignore directive is given.
2065
2066       brokenversioncmp (hopefully never seen)
2067              If comparing old and new version fails, assume the  new  one  is
2068              newer.
2069
2070       dscinbinnmu
2071              If  a  .changes file has an explicit Source version that is dif‐
2072              ferent the to the version header of the file, than reprepro  as‐
2073              sumes  it  is binary non maintainer upload (NMU).  In that case,
2074              source files are not permitted in .changes  files  processed  by
2075              include  or processincoming.  Adding --ignore=dscinbinnmu allows
2076              it for the include command.
2077
2078       emptyfilenamepart (insecure)
2079              Allow strings to be empty that are used to construct  filenames.
2080              (like versions, architectures, ...)
2081
2082       extension
2083              Allow  one to includedeb files that do not end with .deb, to in‐
2084              cludedsc files not ending in .dsc and to include files not  end‐
2085              ing in .changes.
2086
2087       forbiddenchar (insecure)
2088              Do  not insist on Debian policy for package and source names and
2089              versions.  Thus allowing all 7-bit characters  but  slashes  (as
2090              they  would break the file storage) and things syntactically ac‐
2091              tive (spaces, underscores in filenames in .changes files,  open‐
2092              ing  parentheses  in source names of binary packages).  To allow
2093              some 8-bit chars additionally, use 8bit additionally.
2094
2095       8bit (more insecure)
2096              Allow 8-bit characters not looking like overlong UTF-8 sequences
2097              in  filenames  and things used as parts of filenames.  Though it
2098              hopefully rejects overlong UTF-8 sequences, there might be other
2099              characters  your  filesystem  confuses  with special characters,
2100              thus   creating   filenames   possibly   equivalent   to   /mir‐
2101              ror/pool/main/../../../etc/shadow  (Which should be safe, as you
2102              do not run reprepro as root, do  you?)   or  simply  overwriting
2103              your  conf/distributions  file adding some commands in there. So
2104              do not use this if you are paranoid,  unless  you  are  paranoid
2105              enough  to  have  checked  the  code  of  your  libs, kernel and
2106              filesystems.
2107
2108       ignore (for forward compatibility)
2109              Ignore unknown ignore types given to --ignore.
2110
2111       flatandnonflat (only suppresses a warning)
2112              Do not warn about a flat and a non-flat  distribution  from  the
2113              same  source with the same name when updating.  (Hopefully never
2114              ever needed.)
2115
2116       malformedchunk (I hope you know what you do)
2117              Do not stop when finding a line not starting with a space but no
2118              colon(:) in it. These are otherwise rejected as they have no de‐
2119              fined meaning.
2120
2121       missingfield (safe to ignore)
2122              Ignore missing fields in a .changes file that are  only  checked
2123              but  not processed.  Those include: Format, Date, Urgency, Main‐
2124              tainer, Description, Changes
2125
2126       missingfile (might be insecure)
2127              When including a .dsc file from a  .changes  file,  try  to  get
2128              files  needed  but  not  listed  in the .changes file (e.g. when
2129              someone forgot to specify -sa to dpkg-buildpackage) from the di‐
2130              rectory  the  .changes  file  is  in  instead  of  erroring out.
2131              (--delete will not work with those files, though.)
2132
2133       spaceonlyline (I hope you know what you do)
2134              Allow lines containing only (but non-zero) spaces. As  these  do
2135              not  separate chunks as thus will cause reprepro to behave unex‐
2136              pected, they cause error messages by default.
2137
2138       surprisingarch
2139              Do not reject a .changes file containing files for  a  architec‐
2140              ture not listed in the Architecture-header within it.
2141
2142       surprisingbinary
2143              Do  not  reject a .changes file containing .deb files containing
2144              packages whose name is not listed in  the  "Binary:"  header  of
2145              that changes file.
2146
2147       undefinedtarget (hope you are not using the wrong db directory)
2148              Do not stop when the packages.db file contains databases for co‐
2149              dename/packagetype/component/architectures combinations that are
2150              not listed in your distributions file.
2151
2152              This allows you to temporarily remove some distribution from the
2153              config files, without having to remove the packages in  it  with
2154              the  clearvanished  command.   You might even temporarily remove
2155              single architectures or components, though that might cause  in‐
2156              consistencies in some situations.
2157
2158       undefinedtracking (hope you are not using the wrong db directory)
2159              Do  not  stop when the tracking file contains databases for dis‐
2160              tributions that are not listed in your distributions file.
2161
2162              This allows you to temporarily remove some distribution from the
2163              config  files,  without having to remove the packages in it with
2164              the clearvanished command.  You might even  temporarily  disable
2165              tracking  in  some distribution, but that is likely to cause in‐
2166              consistencies in there, if you do not know, what you are doing.
2167
2168       unknownfield (for forward compatibility)
2169              Ignore unknown fields in the config files, instead  of  refusing
2170              to run then.
2171
2172       unusedarch (safe to ignore)
2173              No  longer reject a .changes file containing no files for any of
2174              the architectures listed in the Architecture-header within it.
2175
2176       unusedoption
2177              Do not complain about command line options not used by the spec‐
2178              ified action (like --architecture).
2179
2180       uploaders
2181              The  include  command  will accept packages that would otherwise
2182              been rejected by the uploaders file.
2183
2184       wrongarchitecture (safe to ignore)
2185              Do not warn about  wrong  "Architecture:"  lines  in  downloaded
2186              Packages  files.   (Note that wrong Architectures are always ig‐
2187              nored when getting stuff  from  flat  repostories  or  importing
2188              stuff from one architecture to another).
2189
2190       wrongdistribution (safe to ignore)
2191              Do not error out if a .changes file is to be placed in a distri‐
2192              bution not listed in that files' Distributions: header.
2193
2194       wrongsourceversion
2195              Do not reject a .changes file containing .deb files with a  dif‐
2196              ferent opinion on what the version of the source package is.
2197              (Note: reprepro only compares literally here, not by meaning.)
2198
2199       wrongversion
2200              Do  not reject a .changes file containing .dsc files with a dif‐
2201              ferent version.
2202              (Note: reprepro only compares literally here, not by meaning.)
2203
2204       expiredkey (I hope you know what you do)
2205              Accept signatures with expired keys.  (Only if the  expired  key
2206              is explicitly requested).
2207
2208       expiredsignature (I hope you know what you do)
2209              Accept  expired  signatures with expired keys.  (Only if the key
2210              is explicitly requested).
2211
2212       revokedkey (I hope you know what you do)
2213              Accept signatures with revoked keys.  (Only if the  revoked  key
2214              is explicitly requested).
2215

GUESSING

2217       When  including a binary or source package without explicitly declaring
2218       a component with -C it will take the first component with the  name  of
2219       the  section,  being prefix to the section, being suffix to the section
2220       or having the section as prefix or any. (In this order)
2221
2222       Thus  having  specified  the   components:   "main   non-free   contrib
2223       non-US/main  non-US/non-free  non-US/contrib" should map e.g.  "non-US"
2224       to "non-US/main" and "contrib/editors" to "contrib", while having  only
2225       "main  non-free  and contrib" as components should map "non-US/contrib"
2226       to "contrib" and "non-US" to "main".
2227
2228       NOTE: Always specify main as the first component, if you want things to
2229       end up there.
2230
2231       NOTE: unlike in dak, non-US and non-us are different things...
2232

NOMENCLATURE

2234       Codename  the primary identifier of a given distribution. This are nor‐
2235       mally things like sarge, etch or sid.
2236
2237       basename
2238              the name of a file without any directory information.
2239
2240       byhand Changes files can have files with section 'byhand'  (Debian)  or
2241              'raw-'  (Ubuntu).   Those  files are not packages but other data
2242              generated (usually together with packages) and then uploaded to‐
2243              gether with this changes files.
2244
2245              With  reprepro  those  can  be  stored in the pool next to their
2246              packages with tracking, put in some  log  directory  when  using
2247              processincoming, or given to an hook script (currently only pos‐
2248              sible with processincoming).
2249
2250       filekey
2251              the position relative to the outdir.  (as found  in  "Filename:"
2252              in Packages.gz)
2253
2254       full filename
2255              the position relative to /
2256
2257       architecture
2258              The  term  like sparc, i386, mips, ... .  To refer to the source
2259              packages, source is sometimes also treated as architecture.
2260
2261       component
2262              Things like main, non-free and contrib (by policy and some other
2263              programs also called section, reprepro follows the naming scheme
2264              of apt here.)
2265
2266       section
2267              Things like base, interpreters, oldlibs  and  non-free/math  (by
2268              policy and some other programs also called subsections).
2269
2270       md5sum The  checksum  of a file in the format "<md5sum of file> <length
2271              of file>"
2272

Some note on updates

2274   A version is not overwritten with the same version.
2275       reprepro will never update a package with a  version  it  already  has.
2276       This  would  be  equivalent to rebuilding the whole database with every
2277       single upgrade.  To force the new same version in, remove it  and  then
2278       update.  (If files of the packages changed without changing their name,
2279       make sure the file  is  no  longer  remembered  by  reprepro.   Without
2280       --keepunreferencedfiled and without errors while deleting it should al‐
2281       ready be forgotten, otherwise a deleteunreferenced or even some  __for‐
2282       get might help.)
2283
2284   The magic delete rule ("-").
2285       A  minus  as  a single word in the Update: line of a distribution marks
2286       everything to be deleted. The mark causes later rules to  get  packages
2287       even if they have (strict) lower versions. The mark will get removed if
2288       a later rule sets the package on hold (hold is not yet implemented,  in
2289       case  you  might  wonder)  or would get a package with the same version
2290       (Which it will not, see above). If the mark is still there at  the  end
2291       of the processing, the package will get removed.
2292
2293       Thus  the line "Update: - rules " will cause all packages to be exactly
2294       the highest Version found in rules.  The line "Update: near -  rules  "
2295       will  do  the  same,  except if it needs to download packages, it might
2296       download it from near except when too confused. (It will get  too  con‐
2297       fused e.g. when near or rules have multiple versions of the package and
2298       the highest in near is not the first one in rules, as it never remember
2299       more than one possible spring for a package.
2300
2301       Warning:  This rule applies to all type/component/architecture triplets
2302       of a distribution, not only those some other update  rule  applies  to.
2303       (That means it will delete everything in those!)
2304

ENVIRONMENT VARIABLES

2306       Environment  variables  are always overwritten by command line options,
2307       but overwrite options set in the options file. (Even when  the  options
2308       file  is  obviously parsed after the environment variables as the envi‐
2309       ronment may determine the place of the options file).
2310
2311       REPREPRO_BASE_DIR
2312              The directory in this variable is used instead  of  the  current
2313              directory, if no -b or --basedir options are supplied.
2314              It  is also set in all hook scripts called by reprepro (relative
2315              to the current directory or absolute, depending on how  reprepro
2316              got it).
2317
2318       REPREPRO_CONFIG_DIR
2319              The directory in this variable is used when no --confdir is sup‐
2320              plied.
2321              It is also set in all hook scripts called by reprepro  (relative
2322              to  the current directory or absolute, depending on how reprepro
2323              got it).
2324
2325       REPREPRO_OUT_DIR
2326              This is not used, but only set in hook scripts called by  repre‐
2327              pro  to  the  directory  in  which the pool subdirectory resides
2328              (relative to the current directory or absolute, depending on how
2329              reprepro got it).
2330
2331       REPREPRO_DIST_DIR
2332              This  is not used, but only set in hook scripts called by repre‐
2333              pro to the dists directory (relative to the current directory or
2334              absolute, depending on how reprepro got it).
2335
2336       REPREPRO_LOG_DIR
2337              This  is not used, but only set in hook scripts called by repre‐
2338              pro to the value setable by --logdir.
2339
2340       REPREPRO_CAUSING_COMMAND
2341
2342       REPREPRO_CAUSING_FILE
2343              Those two environment variable are set (or unset)  in  Log:  and
2344              ByHandHooks:  scripts and hint what command and what file caused
2345              the hook to be called (if there is some).
2346
2347       REPREPRO_CAUSING_RULE
2348              This environment variable is set (or unset) in Log: scripts  and
2349              hint what update or pull rule caused this change.
2350
2351       REPREPRO_FROM
2352              This  environment variable is set (or unset) in Log: scripts and
2353              denotes what other distribution a package is copied  from  (with
2354              pull and copy commands).
2355
2356       REPREPRO_FILTER_ARCHITECTURE
2357
2358       REPREPRO_FILTER_CODENAME
2359
2360       REPREPRO_FILTER_COMPONENT
2361
2362       REPREPRO_FILTER_PACKAGETYPE
2363
2364       REPREPRO_FILTER_PATTERN
2365              Set in FilterList: and FilterSrcList:  scripts.
2366
2367       GNUPGHOME
2368              Not  used  by  reprepro  directly.   But reprepro uses libgpgme,
2369              which calls gpg for signing and verification of signatures.  And
2370              your  gpg  will most likely use the content of this variable in‐
2371              stead of "~/.gnupg".  Take a look at gpg(1) to be sure.  You can
2372              also tell reprepro to set this with the --gnupghome option.
2373
2374       GPG_TTY
2375              When  there  is  a  gpg-agent  running  that  does  not have the
2376              passphrase cached yet, gpg will most likely try  to  start  some
2377              pinentry program to get it.  If that is pinentry-curses, that is
2378              likely to fail without this variable, because it cannot  find  a
2379              terminal  to  ask on.  In this cases you might set this variable
2380              to something like the value of $(tty) or  $SSH_TTY  or  anything
2381              else  denoting  a  usable terminal. (You might also want to make
2382              sure you actually have a terminal available.  With ssh you might
2383              need  the  -t  option to get a terminal even when telling gpg to
2384              start a specific command).
2385
2386              By default, reprepro will set this variable to what the symbolic
2387              link  /proc/self/fd/0  points to, if stdin is a terminal, unless
2388              you told with --noguessgpgtty to not do so.
2389

BUGS

2391       Increased verbosity always shows those things  one  does  not  want  to
2392       know.  (Though this might be inevitable and a corollary to Murphy)
2393
2394       Reprepro  uses berkeley db, which was a big mistake.  The most annoying
2395       problem not yet worked around is database corruption when the disk runs
2396       out  of space.  (Luckily if it happens while downloading packages while
2397       updating, only the files database is affected, which  is  easy  (though
2398       time  consuming)  to  rebuild, see recovery file in the documentation).
2399       Ideally put the database on another partition to avoid that.
2400
2401       While the source part is mostly considered as the  architecture  source
2402       some parts may still not use this notation.
2403

WORK-AROUNDS TO COMMON PROBLEMS

2405       gpgme returned an impossible condition
2406              With  the  woody  version  this normally meant that there was no
2407              .gnupg directory in $HOME, but it created one and reprepro  suc‐
2408              ceeds  when called again with the same command.  Since sarge the
2409              problem sometimes shows up, too. But  it  is  no  longer  repro‐
2410              ducible  and  it  does  not fix itself, neither. Try running gpg
2411              --verify file-you-had-problems-with manually as the user  repre‐
2412              pro is running and with the same $HOME. This alone might fix the
2413              problem. It should not print any messages except perhaps
2414              gpg: no valid OpenPGP data found.
2415              gpg: the signature could not be verified.
2416              if it was an unsigned file.
2417
2418       not including .orig.tar.gz when a .changes file's version does not  end
2419       in -0 or -1
2420              If  dpkg-buildpackage  is  run without the -sa option to build a
2421              version with a Debian revision not being -0 or -1, it  does  not
2422              list the .orig.tar.gz file in the .changes file.  If you want to
2423              include such a file with reprepro  when  the  .orig.tar.gz  file
2424              does  not already exist in the pool, reprepro will report an er‐
2425              ror.  This can be worked around by:
2426              call dpkg-buildpackage with -sa (recommended)
2427              copy the .orig.tar.gz file to the proper place in the  pool  be‐
2428              fore
2429              call reprepro with --ignore=missingfile (discouraged)
2430
2431       leftover files in the pool directory.
2432              reprepro  is  sometimes  a bit too timid of deleting stuff. When
2433              things go wrong and there have been  errors  it  sometimes  just
2434              leaves  everything  where it is.  To see what files reprepro re‐
2435              members to be in your pool directory but does not know  anything
2436              needing them right know, you can use
2437              reprepro dumpunreferenced
2438              To delete them:
2439              reprepro deleteunreferenced
2440

INTERRUPTING

2442       Interrupting  reprepro  has  its  problems.  Some things (like speaking
2443       with apt methods, database stuff) can cause problems  when  interrupted
2444       at  the  wrong time.  Then there are design problems of the code making
2445       it hard to distinguish if the current state is dangerous or non-danger‐
2446       ous  to interrupt.  Thus if reprepro receives a signal normally sent to
2447       tell a process to terminate itself softly, it continues its  operation,
2448       but  does  not  start  any  new operations.  (I.e. it will not tell the
2449       apt-methods any new file to download, it will not replace a package  in
2450       a target, unless it already had started with it, it will not delete any
2451       files gotten dereferenced, and so on).
2452
2453       It only catches the first signal of each type. The second signal  of  a
2454       given  type  will terminate reprepro. You will risk database corruption
2455       and have to remove the lockfile manually.
2456
2457       Also note that even normal  interruption  leads  to  code-paths  mostly
2458       untested and thus expose a multitude of bugs including those leading to
2459       data corruption.  Better think a second more before issuing  a  command
2460       than risking the need for interruption.
2461

REPORTING BUGS

2463       Report bugs or wishlist requests to the Debian BTS
2464       (e.g. by using reportbug reprepro under Debian)
2465       or directly to brlink@debian.org
2466
2468       Copyright © 2004,2005,2006,2007,2008,2009,2010,2011,2012 Bernhard R.
2469       Link ⟨http://www.brlink.eu
2470       This is free software; see the source for copying conditions. There  is
2471       NO  warranty;  not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
2472       PURPOSE.
2473
2474
2475
2476reprepro                          2013-05-04                       REPREPRO(1)
Impressum