1REPREPRO(1) REPREPRO REPREPRO(1)
2
3
4
6 reprepro - produce, manage and sync a local repository of Debian pack‐
7 ages
8
10 reprepro --help
11
12 reprepro [ options ] command [ per-command-arguments ]
13
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)