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 if 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 if not linked against libbz2. The program has to accept the
334 compressed file as stdin and write the uncompressed file into
335 stdout.
336
337 --unlzma lzma-uncompressor
338 When uncompressing downloaded index files or if not linked
339 against liblzma reprepro will use this program to uncompress
340 .lzma files. The default value is unlzma. If the program is
341 not found or is NONE (all-uppercase) then uncompressing lzma
342 files will always be done using the built in uncompression
343 method or not be possible if not linked against liblzma. The
344 program has to accept the compressed file as stdin and write the
345 uncompressed file into stdout.
346
347 --unxz xz-uncompressor
348 When uncompressing downloaded index files or if not linked
349 against liblzma reprepro will use this program to uncompress .xz
350 files. The default value is unxz. If the program is not found
351 or is NONE (all-uppercase) then uncompressing xz files will al‐
352 ways be done using the built in uncompression method or not be
353 possible if not linked against liblzma. The program has to ac‐
354 cept the compressed file as stdin and write the uncompressed
355 file into stdout.
356
357 --lunzip lzip-uncompressor
358 When trying to uncompress or read lzip compressed files, this
359 program will be used. The default value is lunzip. If the pro‐
360 gram is not found or is NONE (all-uppercase) then uncompressing
361 lz files will not be possible. The program has to accept the
362 compressed file as stdin and write the uncompressed file into
363 stdout. Note that .lz support is DEPRECATED and will be removed
364 in the future.
365
366 --list-max count
367 Limits the output of list, listmatched and listfilter to the
368 first count results. The default is 0, which means unlimited.
369
370 --list-skip count
371 Omitts the first count results from the output of list, list‐
372 matched and listfilter.
373
374 --list-format format
375 Set the output format of list, listmatched and listfilter com‐
376 mands. The format is similar to dpkg-query's --showformat:
377 fields are specified as ${fieldname} or ${fieldname;length}.
378 Zero length or no length means unlimited. Positive numbers mean
379 fill with spaces right, negative fill with spaces left.
380
381 \n, \r, \t, \0 are new-line, carriage-return, tabulator and
382 zero-byte. Backslash (\) can be used to escape every non-let‐
383 ter-or-digit.
384
385 The special field names $identifier, $architecture, $component,
386 $type, $codename denote where the package was found.
387
388 The special field names $source and $sourceversion denote the
389 source and source version a package belongs to. (i.e.
390 ${$source} will either be the same as ${source} (without a pos‐
391 sible version in parentheses at the end) or the same as ${pack‐
392 age}.
393
394 The special field names $basename, $filekey and $fullfilename
395 denote the first package file part of this entry (i.e. usually
396 the .deb, .udeb or .dsc file) as basename, as filekey (filename
397 relative to the outdir) and the full filename with outdir
398 prepended (i.e. as relative or absolute as your outdir (or
399 basedir if you did not set outdir) is).
400
401 When --list-format is not given or NONE, then the default is
402 equivalent to
403 ${$identifier} ${package} ${version}\n.
404
405 Escaping digits or letters not in above list, using dollars not
406 escaped outside specified constructs, or any field names not
407 listed as special and not consisting entirely out of letters,
408 digits and minus signs have undefined behaviour and might change
409 meaning without any further notice.
410
411 If you give this option on the command line, don't forget that $
412 is also interpreted by your shell. So you have to properly es‐
413 cape it. For example by putting the whole argument to
414 --list-format in single quotes.
415
416 --show-percent
417 When downloading packages, show each completed percent of com‐
418 pleted package downloads together with the size of completely
419 downloaded packages. (Repeating this option increases the fre‐
420 quency of this output).
421
422 --onlysmalldeletes
423 The pull and update commands will skip every distribution in
424 which one target loses more than 20% of its packages (and at
425 least 10).
426
427 Using this option (or putting it in the options config file) can
428 avoid removing large quantities of data but means you might of‐
429 ten give --noonlysmalldeletes to override it.
430
431 --restrict src[=version|:type]
432 Restrict a pull or update to only act on packages belonging to
433 source-package src. Any other package will not be updated (un‐
434 less it matches a --restrict-bin). Only packages that would
435 otherwise be updated or are at least marked with hold in a Fil‐
436 terList or FilerSrcList will be updated.
437
438 The action can be restricted to a source version using a equal
439 sign or changed to another type (see FilterList) using a colon.
440
441 This option can be given multiple times to list multiple pack‐
442 ages, but each package may only be named once (even when there
443 are different versions or types).
444
445 --restrict-binary name[=version|:type]
446 Like --restrict but restrict to binary packages (.deb and
447 .udeb). Source packages are not upgraded unless they appear in
448 a --restrict.
449
450 --restrict-file filename
451 Like --restrict but read a whole file in the FilterSrcList for‐
452 mat.
453
454 --restrict-file-bin filename
455 Like --restrict-bin but read a whole file in the FilterList for‐
456 mat.
457
458 --endhook hookscript
459
460 Run the specified hookscript once reprepro exits. It will get
461 the usual REPREPRO_* environment variables set (or unset) and
462 additionally a variable REPREPRO_EXIT_CODE that is the exit code
463 with which reprepro would have exited (the hook is always called
464 once the initial parsing of global options and the command name
465 is done, no matter if reprepro did anything or not). Reprepro
466 will return to the calling process with the exitcode of this
467 script. Reprepro has closed all its databases and removed all
468 its locks, so you can run reprepro again in this script (unless
469 someone else did so in the same repository before, of course).
470
471 The only advantage over running that command always directly af‐
472 ter reprepro is that you can some environment variables set and
473 cannot so easily forget it if this option is in conf/options.
474
475 The script is supposed to be located relative to confdir, unless
476 its name starts with /, ./, +b/, +o/, or +c/ and the name may
477 not start (except in the cases given before) with a +.
478
479 An example script looks like:
480 #!/bin/sh
481
482 if [ "$REPREPRO_EXIT_CODE" -ne 0 ] ; then
483 exit "$REPREPRO_EXIT_CODE"
484 fi
485
486 echo "congratulations, reprepro with arguments: $*"
487 echo "seems to have run successfully. REPREPRO_ part of the en‐
488 vironment is:"
489 set | grep ^REPREPRO_
490
491 exit 0
492
493
494 --outhook hookscript
495 hookscript is called with a .outlog file as argument (located in
496 logdir) containing a description of all changes made to outdir.
497
498 The script is supposed to be located relative to confdir, unless
499 its name starts with /, ./, +b/, +o/, or +c/ and the name may
500 not start (except in the cases given before) with a +.
501
502 For a format of the .outlog files generated for this script see
503 the manual.html shipped with reprepro.
504
506 export [ codenames ]
507 Generate all index files for the specified distributions.
508
509 This regenerates all files unconditionally. It is only useful
510 if you want to be sure dists is up to date, you called some
511 other actions with --export=never before or you want to create
512 an initial empty but fully equipped dists/codename directory.
513
514 [ --delete ] createsymlinks [ codenames ]
515 Creates suite symbolic links in the dists/-directory pointing to
516 the corresponding codename.
517
518 It will not create links, when multiple of the given codenames
519 would be linked from the same suite name, or if the link already
520 exists (though when --delete is given it will delete already ex‐
521 isting symlinks)
522
523 list codename [ packagename ]
524 List all packages (source and binary, except when -T or -A is
525 given) with the given name in all components (except when -C is
526 given) and architectures (except when -A is given) of the speci‐
527 fied distribution. If no package name is given, list every‐
528 thing. The format of the output can be changed with --list-for‐
529 mat. To only get parts of the result, use --list-max and
530 --list-skip.
531
532 listmatched codename glob
533 as list, but does not list a single package, but all packages
534 matching the given shell-like glob. (i.e. *, ? and [chars] are
535 allowed).
536
537 Examples:
538
539 reprepro -b . listmatched test2 'linux-*' lists all packages
540 starting with linux-.
541
542
543 listfilter codename condition
544 as list, but does not list a single package, but all packages
545 matching the given condition.
546
547 The format of the formulas is those of the dependency lines in
548 Debian packages' control files with some extras. That means a
549 formula consists of names of fields with a possible condition
550 for its content in parentheses. These atoms can be combined
551 with an exclamation mark '!' (meaning not), a pipe symbol '|'
552 (meaning or) and a comma ',' (meaning and). Additionally paren‐
553 theses can be used to change binding (otherwise '!' binds more
554 than '|' than ',').
555
556 The values given in the search expression are directly alphabet‐
557 ically compared to the headers in the respective index file.
558 That means that each part Fieldname (cmp value) of the formula
559 will be true for exactly those package that have in the Package
560 or Sources file a line starting with fieldname and a value is
561 alphabetically cmp to value.
562
563 Additionally since reprepro 3.11.0, '%' can be used as compari‐
564 son operator, denoting matching a name with shell like wildcard
565 (with '*', '?' and '[..]').
566
567 The special field names starting with '$' have special meaning
568 (available since 3.11.1):
569
570 $Version
571
572 The version of the package, comparison is not alphabetically,
573 but as Debian version strings.
574
575 $Source
576
577 The source name of the package.
578
579 $SourceVersion
580
581 The source version of the package.
582
583 $Architecture
584
585 The architecture the package is in (listfilter) or to be put
586 into.
587
588 $Component
589
590 The component the package is in (listfilter) or to be put into.
591
592 $Packagetype
593
594 The packagetype of the package.
595
596 Examples:
597
598 reprepro -b . listfilter test2 'Section (== admin)' will list
599 all packages in distribution test2 with a Section field and the
600 value of that field being admin.
601
602 reprepro -b . -T deb listfilter test2 'Source (== blub) | (
603 !Source , Package (== blub) )' will find all .deb Packages with
604 either a Source field blub or no Source field and a Package
605 field blub. (That means all package generated by a source pack‐
606 age blub, except those also specifying a version number with its
607 Source).
608
609 reprepro -b . -T deb listfilter test2 '$Source (==blub) is the
610 better way to do this (but only available since 3.11.1).
611
612 reprepro -b . listfilter test2 '$PackageType (==deb), $Source
613 (==blub) is another (less efficient) way.
614
615 reprepro -b . listfilter test2 'Package (% linux-*-2.6*)' lists
616 all packages with names starting with linux- and later having an
617 -2.6.
618
619 ls package-name
620 List the versions of the specified package in all distributions.
621
622 lsbycomponent package-name
623 Like ls, but group by component (and print component names).
624
625 remove codename package-names[=version] ...
626 Delete packages in the specified distribution, that have package
627 name listed as argument. Package versions must be specified by
628 appending '=' and the version to the name (without spaces). When
629 no version is specified, the latest package version is removed.
630
631 Note that like any other operation removing or replacing a pack‐
632 age, the old package's files are unreferenced and thus may be
633 automatically deleted if this was their last reference and no
634 --keepunreferencedfiles specified.
635
636 removematched codename glob
637 Delete all packages listmatched with the same arguments would
638 list.
639
640 removefilter codename condition
641 Delete all packages listfilter with the same arguments would
642 list.
643
644 removesrc codename source-name [version]
645 Remove all packages in distribution codename belonging to source
646 package source-name. (Limited to those with source version ver‐
647 sion if specified).
648
649 If package tracking is activated, it will use that information
650 to find the packages, otherwise it traverses all package indices
651 for the distribution.
652
653 removesrcs codename source-name[=version] ...
654 Like removesrc, but can be given multiple source names and
655 source versions must be specified by appending '=' and the ver‐
656 sion to the name (without spaces).
657
658 update [ codenames ]
659 Sync the specified distributions (all if none given) as speci‐
660 fied in the config with their upstreams. See the description of
661 conf/updates below.
662
663 checkupdate [ codenames ]
664 Same like update, but will show what it will change instead of
665 actually changing it.
666
667 dumpupdate [ codenames ]
668 Same like checkupdate, but less suiteable for humans and more
669 suitable for computers.
670
671 predelete [ codenames ]
672 This will determine which packages a update would delete or re‐
673 place and remove those packages. This can be useful for reduc‐
674 ing space needed while upgrading, but there will be some time
675 where packages are vanished from the lists so clients will mark
676 them as obsolete. Plus if you cannot download a updated package
677 in the (hopefully) following update run, you will end up with no
678 package at all instead of an old one. This will also blow up
679 .diff files if you are using the pdiff example or something sim‐
680 ilar. So be careful when using this option or better get some
681 more space so that update works.
682
683 cleanlists
684 Delete all files in listdir (default basedir/lists) that do not
685 belong to any update rule for any distribution. I.e. all files
686 are deleted in that directory that no update command in the cur‐
687 rent configuration can use. (The files are usually left there,
688 so if they are needed again they do not need to be downloaded
689 again. Though in many easy cases not even those files will be
690 needed.)
691
692 pull [ codenames ]
693 pull in newer packages into the specified distributions (all if
694 none given) from other distributions in the same repository.
695 See the description of conf/pulls below.
696
697 checkpull [ codenames ]
698 Same like pull, but will show what it will change instead of ac‐
699 tually changing it.
700
701 dumppull [ codenames ]
702 Same like checkpull, but less suiteable for humans and more
703 suitable for computers.
704
705 includedeb codename .deb-filename
706 Include the given binary Debian package (.deb) in the specified
707 distribution, applying override information and guessing all
708 values not given and guessable.
709
710 includeudeb codename .udeb-filename
711 Same like includedeb, but for .udeb files.
712
713 includedsc codename .dsc-filename
714 Include the given Debian source package (.dsc, including other
715 files like .orig.tar.gz, .tar.gz and/or .diff.gz) in the speci‐
716 fied distribution, applying override information and guessing
717 all values not given and guessable.
718
719 Note that .dsc files do not contain section or priority, but the
720 Sources.gz file needs them. reprepro tries to parse .diff and
721 .tar files for it, but is only able to resolve easy cases. If
722 reprepro fails to extract those automatically, you have to ei‐
723 ther specify a DscOverride or give them via -S and -P
724
725 include codename .changes-filename
726 Include in the specified distribution all packages found and
727 suitable in the .changes file, applying override information
728 guessing all values not given and guessable.
729
730 processincoming rulesetname [.changes-file]
731 Scan an incoming directory and process the .changes files found
732 there. If a filename is supplied, processing is limited to that
733 file. rulesetname identifies which rule-set in conf/incoming
734 determines which incoming directory to use and in what distribu‐
735 tions to allow packages into. See the section about this file
736 for more information.
737
738 check [ codenames ]
739 Check if all packages in the specified distributions have all
740 files needed properly registered.
741
742 checkpool [ fast ]
743 Check if all files believed to be in the pool are actually still
744 there and have the known md5sum. When fast is specified md5sum
745 is not checked.
746
747 collectnewchecksums
748 Calculate all supported checksums for all files in the pool.
749 (Versions prior to 3.3 did only store md5sums, 3.3 added sha1,
750 3.5 added sha256).
751
752 translatelegacychecksums
753 Remove the legacy files.db file after making sure all informa‐
754 tion is also found in the new checksums.db file. (Alternatively
755 you can call collecnewchecksums and remove the file on your
756 own.)
757
758 rereference
759 Forget which files are needed and recollect this information.
760
761 dumpreferences
762 Print out which files are marked to be needed by whom.
763
764 dumpunreferenced
765 Print a list of all filed believed to be in the pool, that are
766 not known to be needed.
767
768 deleteunreferenced
769 Remove all known files (and forget them) in the pool not marked
770 to be needed by anything.
771
772 deleteifunreferenced [ filekeys ]
773 Remove the given files (and forget them) in the pool if they are
774 not marked to be used by anything. If no command line arguments
775 are given, stdin is read and every line treated as one filekey.
776 This is mostly useful together with --keepunreferenced in
777 conf/options or in situations where one does not want to run
778 deleteunreferenced, which removes all files eligible to be
779 deleted with this command.
780
781 reoverride [ codenames ]
782 Reapply the override files to the given distributions (Or only
783 parts thereof given by -A,-C or -T).
784
785 Note: only the control information is changed. Changing a sec‐
786 tion to a value, that would cause another component to be
787 guessed, will not cause any warning.
788
789 redochecksums [ codenames ]
790 Readd the information about file checksums to the package in‐
791 dices.
792
793 Usually the package's control information is created at inclu‐
794 sion time or imported from some remote source and not changed
795 later. This command modifies it to readd missing checksum
796 types.
797
798 Only checksums already known are used. To update known check‐
799 sums about files run collectnewchecksums first.
800
801
802 dumptracks [ codenames ]
803 Print out all information about tracked source packages in the
804 given distributions.
805
806 retrack [ codenames ]
807 Recreate a tracking database for the specified distributions.
808 This contains ouf of three steps. First all files marked as
809 part of a source package are set to unused. Then all files ac‐
810 tually used are marked as thus. Finally tidytracks is called
811 remove everything no longer needed with the new information
812 about used files.
813
814 (This behaviour, though a bit longsome, keeps even files only
815 kept because of tracking mode keep and files not otherwise used
816 but kept due to includechanges or its relatives. Before version
817 3.0.0 such files were lost by running retrack).
818
819 removealltracks [ codenames ]
820 Removes all source package tracking information for the given
821 distributions.
822
823 removetrack codename sourcename version
824 Remove the trackingdata of the given version of a given sour‐
825 cepackage from a given distribution. This also removes the ref‐
826 erences for all used files.
827
828 tidytracks [ codenames ]
829 Check all source package tracking information for the given dis‐
830 tributions for files no longer to keep.
831
832 copy destination-codename source-codename package[=version] ...
833 Copy the given packages from one distribution to another. The
834 packages are copied verbatim, no override files are consulted.
835 Only components and architectures present in the source distri‐
836 bution are copied. Package versions must be specified by append‐
837 ing '=' and the version to the name (without spaces). When no
838 version is specified, the latest package version is copied.
839
840 copysrc destination-codename source-codename source-package [versions]
841 look at each package (where package means, as usual, every pack‐
842 age be it dsc, deb or udeb) in the distribution specified by
843 source-codename and identifies the relevant source package for
844 each. All packages matching the specified source-package name
845 (and any version if specified) are copied to the destination-co‐
846 dename distribution. The packages are copied verbatim, no over‐
847 ride files are consulted. Only components and architectures
848 present in the source distribution are copied.
849
850 copymatched destination-codename source-codename glob
851 Copy packages matching the given glob (see listmatched).
852
853 The packages are copied verbatim, no override files are con‐
854 sulted. Only components and architectures present in the source
855 distribution are copied.
856
857 copyfilter destination-codename source-codename formula
858 Copy packages matching the given formula (see listfilter). (all
859 versions if no version is specified). The packages are copied
860 verbatim, no override files are consulted. Only components and
861 architectures present in the source distribution are copied.
862
863 move destination-codename source-codename package[=version] ...
864 Move the given packages from one distribution to another. The
865 packages are moved verbatim, no override files are consulted.
866 Only components and architectures present in the source distri‐
867 bution are moved. Package versions must be specified by append‐
868 ing '=' and the version to the name (without spaces). When no
869 version is specified, the latest package version is moved.
870
871 movesrc destination-codename source-codename source-package [versions]
872 look at each package (where package means, as usual, every pack‐
873 age be it dsc, deb or udeb) in the distribution specified by
874 source-codename and identifies the relevant source package for
875 each. All packages matching the specified source-package name
876 (and any version if specified) are moved to the destination-co‐
877 dename distribution. The packages are moved verbatim, no over‐
878 ride files are consulted. Only components and architectures
879 present in the source distribution are moved.
880
881 movematched destination-codename source-codename glob
882 Move packages matching the given glob (see listmatched).
883
884 The packages are moved verbatim, no override files are con‐
885 sulted. Only components and architectures present in the source
886 distribution are moved.
887
888 movefilter destination-codename source-codename formula
889 Move packages matching the given formula (see listfilter). (all
890 versions if no version is specified). The packages are moved
891 verbatim, no override files are consulted. Only components and
892 architectures present in the source distribution are moved.
893
894 restore codename snapshot packages...
895
896 restoresrc codename snapshot source-epackage [versions]
897
898 restorefilter destination-codename snapshot formula
899
900 restorematched destination-codename snapshot glob
901 Like the copy commands, but do not copy from another distribu‐
902 tion, but from a snapshot generated with gensnapshot. Note that
903 this blindly trusts the contents of the files in your dists/ di‐
904 rectory and does no checking.
905
906 clearvanished
907 Remove all package databases that no longer appear in conf/dis‐
908 tributions. If --delete is specified, it will not stop if there
909 are still packages left. Even without --delete it will unrefer‐
910 ence files still marked as needed by this target. (Use --keep‐
911 unreferenced to not delete them if that was the last reference.)
912
913 Do not forget to remove all exported package indices manually.
914
915 gensnapshot codename directoryname
916 Generate a snapshot of the distribution specified by codename in
917 the directory dists/codename/snapshots/directoryname/ and refer‐
918 ence all needed files in the pool as needed by that. No Content
919 files are generated and no export hooks are run.
920
921 Note that there is currently no automated way to remove that
922 snapshot again (not even clearvanished will unlock the refer‐
923 enced files after the distribution itself vanished). You will
924 have to remove the directory yourself and tell reprepro to un‐
925 referencesnapshot codename directoryname before deleteunrefer‐
926 enced will delete the files from the pool locked by this.
927
928 To access such a snapshot with apt, add something like the fol‐
929 lowing to your sources.list file:
930 deb method://as/without/snapshot codename/snapshots/name main
931
932 unreferencesnapshot codename directoryname
933 Remove all references generated by an genshapshot with the same
934 arguments. This allows the next deleteunferenced call to delete
935 those files. (The indicies in dists/ for the snapshot are not
936 removed.)
937
938 rerunnotifiers [ codenames ]
939 Run all external scripts specified in the Log: options of the
940 specified distributions.
941
942 build-needing codename architecture [ glob ]
943 List source packages (matching glob) that likely need a build on
944 the given architecture.
945
946 List all source package in the given distribution without a bi‐
947 nary package of the given architecture built from that version
948 of the source, without a .changes or .log file for the given ar‐
949 chitecture, with an Architecture field including any, os-any
950 (with os being the part before the hyphen in the architecture or
951 linux if there is no hyphen) or the architecture and at least
952 one package in the Binary field not yet available.
953
954 If instead of architecture the term any is used, all architec‐
955 tures are iterated and the architecture is printed as fourth
956 field in every line.
957
958 If the architecture is all, then only source packages with an
959 Architecture field including all are considered (i.e. as above
960 with real architectures but any does not suffice). Note that
961 dpkg-dev << 1.16.1 does not both set any and all so source pack‐
962 ages building both architecture dependent and independent pack‐
963 ages will never show up unless built with a new enough
964 dpkg-source).
965
966
967 translatefilelists
968 Translate the file list cache within db/contents.cache.db into
969 the new format used since reprepro 3.0.0.
970
971 Make sure you have at least half of the space of the current
972 db/contents.cache.db file size available in that partition.
973
974 flood distribution [architecture]
975 For each architecture of distribution (or for the one specified)
976 add architecture all packages from other architectures (but the
977 same component or packagetype) under the following conditions:
978
979 Packages are only upgraded, never downgraded.
980 If there is a package not being architecture all, then archi‐
981 tecture all packages of the same source from the same source
982 version are preferred over those that have no such binary sib‐
983 ling.
984 Otherwise the package with the highest version wins.
985
986 You can restrict with architectures are looked for architecture
987 all packages using -A and which components/packagetypes are
988 flooded by -C/-T as usual.
989
990 There are mostly two use cases for this command: If you added an
991 new architecture to an distribution and want to copy all archi‐
992 tecture all packages to it. Or if you included some architec‐
993 ture all packages only to some architectures using -A to avoid
994 breaking the other architectures for which the binary packages
995 were still missing and now want to copy it to those architec‐
996 tures were they are unlikely to break something (because a new‐
997 binary is already available).
998
999 unusedsources [distributions]
1000 List all source packages for which no binary package build from
1001 them is found.
1002
1003 sourcemissing [distributions]
1004 List all binary packages for which no source package is found
1005 (the source package must be in the same distribution, but source
1006 packages only kept by package tracking is enough).
1007
1008 reportcruft [distributions]
1009 List all source package versions that either have a source pack‐
1010 age and no longer a binary package or binary packages left with‐
1011 out source package in the index. (Unless sourcemissing also list
1012 packages where the source package in only in the pool due to en‐
1013 abled tracking but no longer in the index).
1014
1015 sizes [ codenames ]
1016 List the size of all packages in the distributions specified or
1017 in all distributions.
1018
1019 Each row contains 4 numbers, each being a number of bytes in a
1020 set of packages, which are: The packages in this distribution
1021 (including anything only kept because of tracking), the packages
1022 only in this distribution (anything in this distribution and a
1023 snapshot of this distribution counts as only in this distribu‐
1024 tion), the packages in this distribution and its snapshots, the
1025 packages only in this distribution or its snapshots.
1026
1027 If more than one distribution is selected, also list a sum of
1028 those (in which 'Only' means only in selected ones, and not only
1029 only in one of the selected ones).
1030
1031
1032 repairdescriptions [ codenames ]
1033 Look for binary packages only having a short description and try
1034 to get the long description from the .deb file (and also remove
1035 a possible Description-md5 in this case).
1036
1037 internal commands
1038 These are hopefully never needed, but allow manual intervention. WARN‐
1039 ING: Is is quite easy to get into an inconsistent and/or unfixable
1040 state.
1041
1042 _detect [ filekeys ]
1043 Look for the files, which filekey is given as argument or as a
1044 line of the input (when run without arguments), and calculate
1045 their md5sum and add them to the list of known files. (Warning:
1046 this is a low level operation, no input validation or normaliza‐
1047 tion is done.)
1048
1049 _forget [ filekeys ]
1050 Like _detect but remove the given filekey from the list of known
1051 files. (Warning: this is a low level operation, no input vali‐
1052 dation or normalization is done.)
1053
1054 _listmd5sums
1055 Print a list of all known files and their md5sums.
1056
1057 _listchecksums
1058 Print a list of all known files and their recorded checksums.
1059
1060 _addmd5sums
1061 alias for the newer
1062
1063 _addchecksums
1064 Add information of known files (without any check done) in the
1065 strict format of _listchecksums output (i.e. don't dare to use a
1066 single space anywhere more than needed).
1067
1068 _dumpcontents identifier
1069 Printout all the stored information of the specified part of the
1070 repository. (Or in other words, the content the corresponding
1071 Packages or Sources file would get)
1072
1073 This command is deprecated and will be removed in a future ver‐
1074 sion.
1075
1076 _addreference filekey identifier
1077 Manually mark filekey to be needed by identifier
1078
1079 _addreferences identifier [ filekeys ]
1080 Manually mark one or more filekeys to be needed by identifier.
1081 If no command line arguments are given, stdin is read and every
1082 line treated as one filekey.
1083
1084 _removereference identifier filekey
1085 Manually remove the given mark that the file is needed by this
1086 identifier.
1087
1088 _removereferences identifier
1089 Remove all references what is needed by identifier.
1090
1091 __extractcontrol .deb-filename
1092 Look what reprepro believes to be the content of the control
1093 file of the specified .deb-file.
1094
1095 __extractfilelist .deb-filename
1096 Look what reprepro believes to be the list of files of the spec‐
1097 ified .deb-file.
1098
1099 _fakeemptyfilelist filekey
1100 Insert an empty filelist for filekey. This is a evil hack around
1101 broken .deb files that cannot be read by reprepro.
1102
1103 _addpackage codenam filename packages...
1104 Add packages from the specified filename to part specified by -C
1105 -A and -T of the specified distribution. Very strange things
1106 can happen if you use it improperly.
1107
1108 __dumpuncompressors
1109 List what compressions format can be uncompressed and how.
1110
1111 __uncompress format compressed-file uncompressed-file
1112 Use builtin or external uncompression to uncompress the speci‐
1113 fied file of the specified format into the specified target.
1114
1115 _listcodenames
1116 Print - on per line - the codenames of all configured distribu‐
1117 tions.
1118
1119 _listconfidentifiers identifier [ distributions... ]
1120 Print - one per line - all identifiers of subdatabases as de‐
1121 rived from the configuration. If a list of distributions is
1122 given, only identifiers of those are printed.
1123
1124
1125 _listdbidentifiers identifier [ distributions... ]
1126 Print - one per line - all identifiers of subdatabases in the
1127 current database. This will be a subset of the ones printed by
1128 _listconfidentifiers or most commands but clearvanished will
1129 refuse to run, and depending on the database compatibility ver‐
1130 sion, will include all those if reprepro was run since the con‐
1131 fig was last changed.
1132
1133
1135 reprepo uses three config files, which are searched in the directory
1136 specified with --confdir or in the conf/ subdirectory of the basedir.
1137
1138 If a file options exists, it is parsed line by line. Each line can be
1139 the long name of a command line option (without the --) plus an argu‐
1140 ment, where possible. Those are handled as if they were command line
1141 options given before (and thus lower priority than) any other command
1142 line option. (and also lower priority than any environment variable).
1143
1144 To allow command line options to override options file options, most
1145 boolean options also have a corresponding form starting with --no.
1146
1147 (The only exception is when the path to look for config files changes,
1148 the options file will only opened once and of course before any options
1149 within the options file are parsed.)
1150
1151 The file distributions is always needed and describes what distribu‐
1152 tions to manage, while updates is only needed when syncing with exter‐
1153 nal repositories and pulls is only needed when syncing with reposito‐
1154 ries in the same reprepro database.
1155
1156 The last three are in the format control files in Debian are in, i.e.
1157 paragraphs separated by empty lines consisting of fields. Each field
1158 consists of a fieldname, followed by a colon, possible whitespace and
1159 the data. A field ends with a newline not followed by a space or tab.
1160
1161 Lines starting with # as first character are ignored, while in other
1162 lines the # character and everything after it till the newline charac‐
1163 ter are ignored.
1164
1165 A paragraph can also consist of only a single field "!include:" which
1166 causes the named file (relative to confdir unless starting with ~/,
1167 +b/, +c/ or / ) to be read as if it was found at this place.
1168
1169 Each of the three files or a file included as described above can also
1170 be a directory, in which case all files it contains with a filename
1171 ending in .conf and not starting with . are read.
1172
1173 conf/distributions
1174 Codename
1175 This required field is the unique identifier of a distribution
1176 and used as directory name within dists/ It is also copied into
1177 the Release files.
1178
1179 Note that this name is not supposed to change. You most likely
1180 never ever want a name like testing or stable here (those are
1181 suite names and supposed to point to another distribution
1182 later).
1183
1184 Suite This optional field is simply copied into the Release files. In
1185 Debian it contains names like stable, testing or unstable. To
1186 create symlinks from the Suite to the Codename, use the cre‐
1187 atesymlinks command of reprepro.
1188
1189 FakeComponentPrefix
1190 If this field is present, its argument is added - separated by a
1191 slash - before every Component written to the main Release file
1192 (unless the component already starts with it), and removed from
1193 the end of the Codename and Suite fields in that file. Also if
1194 a component starts with it, its directory in the dists dir is
1195 shortened by this.
1196 So
1197
1198 Codename: bla/updates
1199 Suite: foo/updates
1200 FakeComponentPrefix: updates
1201 Components: main bad
1202
1203 will create a Release file with
1204
1205 Codename: bla
1206 Suite: foo
1207 Components: updates/main updates/bad
1208
1209 in it, but otherwise nothing is changed, while
1210
1211 Codename: bla/updates
1212 Suite: foo/updates
1213 FakeComponentPrefix: updates
1214 Components: updates/main updates/bad
1215
1216 will also create a Release file with
1217
1218 Codename: bla
1219 Suite: foo
1220 Components: updates/main updates/bad
1221
1222 but the packages will actually be in the components updates/main
1223 and updates/bad, most likely causing the same file using dupli‐
1224 cate storage space.
1225
1226 This makes the distribution look more like Debian's security ar‐
1227 chive, thus work around problems with apt's workarounds for
1228 that.
1229
1230 AlsoAcceptFor
1231 A list of distribution names. When a .changes file is told to
1232 be included into this distribution with the include command and
1233 the distribution header of that file is neither the codename,
1234 nor the suite name, nor any name from the list, a wrongdistribu‐
1235 tion error is generated. The process_incoming command will also
1236 use this field, see the description of Allow and Default from
1237 the conf/incoming file for more information.
1238
1239 Version
1240 This optional field is simply copied into the Release files.
1241
1242 Origin This optional field is simply copied into the Release files.
1243
1244 Label This optional field is simply copied into the Release files.
1245
1246 NotAutomatic
1247 This optional field is simply copied into the Release files.
1248 (The value is handled as an arbitrary string, though anything
1249 but yes does not make much sense right now.)
1250
1251 ButAutomaticUpgrades
1252 This optional field is simply copied into the Release files.
1253 (The value is handled as an arbitrary string, though anything
1254 but yes does not make much sense right now.)
1255
1256 Description
1257 This optional field is simply copied into the Release files.
1258
1259 Architectures
1260 This required field lists the binary architectures within this
1261 distribution and if it contains source (i.e. if there is an item
1262 source in this line this Distribution has source. All other
1263 items specify things to be put after "binary-" to form directory
1264 names and be checked against "Architecture:" fields.)
1265
1266 This will also be copied into the Release files. (With exception
1267 of the source item, which will not occur in the topmost Release
1268 file whether it is present here or not)
1269
1270 Components
1271 This required field lists the component of a distribution. See
1272 GUESSING for rules which component packages are included into by
1273 default. This will also be copied into the Release files.
1274
1275 DDebComponents
1276 List of components containing .ddebs.
1277
1278 UDebComponents
1279 Components with a debian-installer subhierarchy containing
1280 .udebs. (E.g. simply "main")
1281
1282 Update When this field is present, it describes which update rules are
1283 used for this distribution. There also can be a magic rule minus
1284 ("-"), see below.
1285
1286 Pull When this field is present, it describes which pull rules are
1287 used for this distribution. Pull rules are like Update rules,
1288 but get their stuff from other distributions and not from exter‐
1289 nal sources. See the description for conf/pulls.
1290
1291 SignWith
1292 When this field is present, a Release.gpg file will be gener‐
1293 ated. If the value is "yes" or "default", the default key of
1294 gpg is used. If the field starts with an exlamation mark ("!"),
1295 the given script is executed to do the signing. Otherwise the
1296 value will be given to libgpgme to determine to key to use.
1297
1298 If there are problems with signing, you can try
1299 gpg --list-secret-keys value
1300 to see how gpg could interprete the value. If that command does
1301 not list any keys or multiple ones, try to find some other value
1302 (like the keyid), that gpg can more easily associate with a
1303 unique key.
1304
1305 If this key has a passphrase, you need to use gpg-agent or the
1306 insecure option --ask-passphrase.
1307
1308 A '!' hook script is looked for in the confdir, unless it starts
1309 with ~/, ./, +b/, +o/, +c/ or / . Is gets three command line
1310 arguments: The filename to sign, an empty argument or the file‐
1311 name to create with an inline signature (i.e. InRelease) and an
1312 empty argument or the filename to create an detached signature
1313 (i.e. Release.gpg). The script may generate no Release.gpg file
1314 if it choses to (then the repository will look like unsigned for
1315 older clients), but generating empty files is not allowed.
1316 Reprepro waits for the script to finish and will abort the ex‐
1317 porting of the distribution this signing is part of unless the
1318 scripts returns normally with exit code 0. Using a space after
1319 ! is recommended to avoid incompatibilities with possible future
1320 extensions.
1321
1322 DebOverride
1323 When this field is present, it describes the override file used
1324 when including .deb files.
1325
1326 UDebOverride
1327 When this field is present, it describes the override file used
1328 when including .udeb files.
1329
1330 DscOverride
1331 When this field is present, it describes the override file used
1332 when including .dsc files.
1333
1334 DebIndices, UDebIndices, DscIndices
1335 Choose what kind of Index files to export. The first part de‐
1336 scribes what the Index file shall be called. The second argu‐
1337 ment determines the name of a Release file to generate or not to
1338 generate if missing. Then at least one of ".", ".gz", ".xz" or
1339 ".bz2" specifying whether to generate uncompressed output,
1340 gzipped output, bzip2ed output or any combination. (bzip2 is
1341 only available when compiled with bzip2 support, so it might not
1342 be available when you compiled it on your own, same for xz and
1343 liblzma). If an argument not starting with dot follows, it will
1344 be executed after all index files are generated. (See the exam‐
1345 ples for what argument this gets). The default is:
1346 DebIndices: Packages Release . .gz
1347 UDebIndices: Packages . .gz
1348 DscIndices: Sources Release .gz
1349
1350 ExportOptions
1351 Options to modify how and if exporting is done:
1352 noexport Never export this distribution. That means there will
1353 be no directory below dists/ generated and the distribution is
1354 only useful to copy packages to other distributions.
1355 keepunknown Ignore unknown files and directories in the exported
1356 directory. This is currently the only available option and the
1357 default, but might change in the future, so it can already be
1358 requested explicitly.
1359
1360 Contents
1361 Enable the creation of Contents files listing all the files
1362 within the binary packages of a distribution. (Which is quite
1363 slow, you have been warned).
1364
1365 In earlier versions, the first argument was a rate at which to
1366 extract file lists. As this did not work and was no longer eas‐
1367 ily possible after some factorisation, this is no longer sup‐
1368 ported.
1369
1370 The arguments of this field is a space separated list of op‐
1371 tions. If there is a udebs keyword, .udebs are also listed (in
1372 a file called uContents-architecture.) If there is a nodebs
1373 keyword, .debs are not listed. (Only useful together with
1374 udebs) If there is at least one of the keywords ., .gz, .xz
1375 and/or .bz2, the Contents files are written uncompressed,
1376 gzipped and/or bzip2ed instead of only gzipped.
1377
1378 If there is a percomponent then one Contents-arch file per com‐
1379 ponent is created. If there is a allcomponents then one global
1380 Contents-arch file is generated. If both are given, both are
1381 created. If none of both is specified then percomponent is
1382 taken as default (earlier versions had other defaults).
1383
1384 The switches compatsymlink or nocompatsymlink (only possible if
1385 allcomponents was not specified explicitly) control whether a
1386 compatibility symlink is created so old versions of apt-file
1387 looking for the component independent filenames at least see the
1388 contents of the first component.
1389
1390 Unless allcomponents is given, compatsymlinks currently is the
1391 default, but that will change in some future (current estimate:
1392 after wheezy was released)
1393
1394
1395 ContentsArchitectures
1396 Limit generation of Contents files to the architectures given.
1397 If this field is not there, all architectures are processed. An
1398 empty field means no architectures are processed, thus not very
1399 useful.
1400
1401 ContentsComponents
1402 Limit what components are processed for the Contents-arch files
1403 to the components given. If this field is not there, all compo‐
1404 nents are processed. An empty field is equivalent to specify
1405 nodebs in the Contents field, while a non-empty field overrides
1406 a nodebs there.
1407
1408 ContentsUComponents
1409 Limit what components are processed for the uContents files to
1410 the components given. If this field is not there and there is
1411 the udebs keyword in the Contents field, all .udebs of all com‐
1412 ponents are put in the uContents.arch files. If this field is
1413 not there and there is no udebs keyword in the Contents field,
1414 no uContents-arch files are generated at all. A non-empty
1415 fields implies generation of uContents-arch files (just like the
1416 udebs keyword in the Contents field), while an empty one causes
1417 no uContents-arch files to be generated.
1418
1419 Uploaders
1420 Specifies a file (relative to confdir if not starting with ~/,
1421 +b/, +c/ or / ) to specify who is allowed to upload packages.
1422 Without this there are no limits, and this file can be ignored
1423 via --ignore=uploaders. See the section UPLOADERS FILES below.
1424
1425 Tracking
1426 Enable the (experimental) tracking of source packages. The ar‐
1427 gument list needs to contain exactly one of the following:
1428 keep Keeps all files of a given source package, until that is
1429 deleted explicitly via removetrack. This is currently the only
1430 possibility to keep older packages around when all indices con‐
1431 tain newer files.
1432 all Keep all files belonging to a given source package until the
1433 last file of it is no longer used within that distribution.
1434 minimal Remove files no longer included in the tracked distribu‐
1435 tion. (Remove changes, logs and includebyhand files once no
1436 file is in any part of the distribution).
1437 And any number of the following (or none):
1438 includechanges Add the .changes file to the tracked files of a
1439 source package. Thus it is also put into the pool.
1440 includebyhand Add byhand and raw-* files to the tracked files
1441 and thus in the pool.
1442 includebuildinfos Add buildinfo files to the tracked files and
1443 thus in the pool.
1444 includelogs Add log files to the tracked files and thus in the
1445 pool. (Not that putting log files in changes files is a repre‐
1446 pro extension not found in normal changes files)
1447 embargoalls Not yet implemented.
1448 keepsources Even when using minimal mode, do not remove source
1449 files until no file is needed any more.
1450 needsources Not yet implemented.
1451
1452 Limit Limit the number of versions of a package per distribution, ar‐
1453 chitecture, component, and type. The limit must be a number. If
1454 the number is positive, all old package version that exceed
1455 these limit will be removed or archived (see Archive option),
1456 when a new package version is added. If the number is zero or
1457 negative, all package version will be kept. By default only one
1458 package version will be kept.
1459
1460 Archive
1461 Specify a codename which must be declared before (to avoid
1462 loops). When packages exceed the version count limit (specified
1463 in Limit), these packages will be moved to the specified distri‐
1464 bution instead of being removed.
1465
1466 Log Specify a file to log additions and removals of this distribu‐
1467 tion into and/or external scripts to call when something is
1468 added or removed. The rest of the Log: line is the filename,
1469 every following line (as usual, have to begin with a single
1470 space) the name of a script to call. The name of the script may
1471 be preceded with options of the form --type=(dsc|deb|udeb),
1472 --architecture=name or --component=name to only call the script
1473 for some parts of the distribution. An script with argument
1474 --changes is called when a .changes file was accepted by include
1475 or processincoming (and with other arguments). Both type of
1476 scripts can have a --via=command specified, in which case it is
1477 only called when caused by reprepro command command.
1478
1479 For information how it is called and some examples take a look
1480 at manual.html in reprepro's source or /usr/share/doc/reprepro/
1481
1482 If the filename for the log files does not start with a slash,
1483 it is relative to the directory specified with --logdir, the
1484 scripts are relative to --confdir unless starting with ~/, +b/,
1485 +c/ or /.
1486
1487 ValidFor
1488 If this field exists, an Valid-Until field is put into generated
1489 Release files for this distribution with an date as much in the
1490 future as the argument specifies.
1491
1492 The argument has to be an number followed by one of the units d,
1493 m or y, where d means days, m means 31 days and y means 365
1494 days. So ValidFor: 1m 11 d causes the generation of a Valid-Un‐
1495 til: header in Release files that points 42 days into the fu‐
1496 ture.
1497
1498 ReadOnly
1499 Disallow all modifications of this distribution or its directory
1500 in dists/codename (with the exception of snapshot subdirecto‐
1501 ries).
1502
1503 ByHandHooks
1504 This species hooks to call for handling byhand/raw files by pro‐
1505 cessincoming (and in future versions perhaps by include).
1506
1507 Each line consists out of 4 arguments: A glob pattern for the
1508 section (clasically byhand, though Ubuntu uses raw-*), a glob
1509 pattern for the priority (not usually used), and a glob pattern
1510 for the filename.
1511
1512 The 4th argument is the script to be called when all of the
1513 above match. It gets 5 arguments: the codename of the distribu‐
1514 tion, the section (usually byhand), the priority (usually only
1515 -), the filename in the changes file and the full filename (with
1516 processincoming in the secure TempDir).
1517
1518 Signed-By
1519 This optional field is simply copied into the Release files. It
1520 is used to tell apt which keys to trust for this Release in the
1521 future. (see SignWith for how to tell reprepro whether and how
1522 to sign).
1523
1524 conf/updates
1525 Name The name of this update-upstream as it can be used in the Update
1526 field in conf/distributions.
1527
1528 Method An URI as one could also give it apt, e.g. http://ftp.de‐
1529 bian.de/debian which is simply given to the corresponding
1530 apt-get method. (So either apt-get has to be installed, or you
1531 have to point with --methoddir to a place where such methods are
1532 found.
1533
1534 Fallback
1535 (Still experimental:) A fallback URI, where all files are tried
1536 that failed the first one. They are given to the same method as
1537 the previous URI (e.g. both http://), and the fallback-server
1538 must have everything at the same place. No recalculation is
1539 done, but single files are just retried from this location.
1540
1541 Config This can contain any number of lines, each in the format apt-get
1542 --option would expect. (Multiple lines ‐ as always ‐ marked with
1543 leading spaces).
1544
1545 For example: Config: Acquire::Http::Proxy=http://proxy.yours.org:8080
1546
1547 From The name of another update rule this rules derives from. The
1548 rule containing the From may not contain Method, Fallback or
1549 Config. All other fields are used from the rule referenced in
1550 From, unless found in this containing the From. The rule refer‐
1551 enced in From may itself contain a From. Reprepro will only as‐
1552 sume two remote index files are the same, if both get their
1553 Method information from the same rule.
1554
1555 Suite The suite to update from. If this is not present, the codename
1556 of the distribution using this one is used. Also "*/whatever" is
1557 replaced by "<codename>/whatever"
1558
1559 Components
1560 The components to update. Each item can be either the name of a
1561 component or a pair of a upstream component and a local compo‐
1562 nent separated with ">". (e.g. "main>all contrib>all
1563 non-free>notall")
1564
1565 If this field is not there, all components from the distribution
1566 to update are tried.
1567
1568 An empty field means no source or .deb packages are updated by
1569 this rule, but only .udeb packages, if there are any.
1570
1571 A rule might list components not available in all distributions
1572 using this rule. In this case unknown components are silently
1573 ignored. (Unless you start reprepro with the --fast option, it
1574 will warn about components unusable in all distributions using
1575 that rule. As exceptions, unusable components called none are
1576 never warned about, for compatibility with versions prior to
1577 3.0.0 where and empty field had a different meaning.)
1578
1579 Architectures
1580 The architectures to update. If omitted all from the distribu‐
1581 tion to update from. (As with components, you can use ">" to
1582 download from one architecture and add into another one. (This
1583 only determine in which Package list they land, it neither over‐
1584 writes the Architecture line in its description, nor the one in
1585 the filename determined from this one. In other words, it is no
1586 really useful without additional filtering))
1587
1588 UDebComponents
1589 Like Components but for the udebs.
1590
1591 VerifyRelease
1592 Download the Release.gpg file and check if it is a signature of
1593 the Releasefile with the key given here. (In the Format as "gpg
1594 --with-colons --list-key" prints it, i.e. the last 16 hex digits
1595 of the fingerprint) Multiple keys can be specified by separating
1596 them with a "|" sign. Then finding a signature from one of the
1597 will suffice. To allow revoked or expired keys, add a "!" be‐
1598 hind a key. (but to accept such signatures, the appropriate
1599 --ignore is also needed). To also allow subkeys of a specified
1600 key, add a "+" behind a key.
1601
1602 IgnoreRelease: yes
1603 If this is present, no InRelease or Release file will be down‐
1604 loaded and thus the md5sums of the other index files will not be
1605 checked.
1606
1607 GetInRelease: no
1608 IF this is present, no InRelease file is downloaded but only Re‐
1609 lease (and Release.gpg ) are tried.
1610
1611 Flat If this field is in an update rule, it is supposed to be a flat
1612 repository, i.e. a repository without a dists dir and no subdi‐
1613 rectories for the index files. (If the corresponding
1614 sources.list line has the suite end with a slash, then you might
1615 need this one.) The argument for the Flat: field is the Compo‐
1616 nent to put those packages into. No Components or UDebCompo‐
1617 nents fields are allowed in a flat update rule. If the Archi‐
1618 tecture field has any > items, the part left of the ">" is ig‐
1619 nored.
1620 For example the sources.list line
1621 deb http://cran.r-project.org/bin/linux/debian etch-cran/
1622 would translate to
1623 Name: R
1624 Method: http://cran.r-project.org/bin/linux/debian
1625 Suite: etch-cran
1626 Flat: whatevercomponentyoudlikethepackagesin
1627
1628 IgnoreHashes
1629 This directive tells reprepro to not check the listed hashes in
1630 the downloaded Release file (and only in the Release file).
1631 Possible values are currently md5, sha1 and sha256.
1632
1633 Note that this does not speed anything up in any measurable way.
1634 The only reason to specify this if the Release file of the dis‐
1635 tribution you want to mirror from uses a faulty algorithm imple‐
1636 mentation. Otherwise you will gain nothing and only lose secu‐
1637 rity.
1638
1639 FilterFormula
1640 This can be a formula to specify which packages to accept from
1641 this source. The format is misusing the parser intended for De‐
1642 pendency lines. To get only architecture all packages use "ar‐
1643 chitecture (== all)", to get only at least important packages
1644 use "priority (==required) | priority (==important)".
1645
1646 See the description of the listfilter command for the semantics
1647 of formulas.
1648
1649 FilterList, FilterSrcList
1650 These two options each take at least two arguments: The first
1651 argument is the fallback (default) action. All following argu‐
1652 ments are treated as file names of lists.
1653
1654 The filenames are considered to be relative to --confdir, if not
1655 starting with ~/, +b/, +c/ or /.
1656
1657 Each list file consists of lines with a package name followed by
1658 whitespaced followed by an action.
1659
1660 Each list may only contain a single line for a given package
1661 name. The action to be taken is the action specified by the
1662 first file mentioning that package. If no list file mentions a
1663 package, the fallback action is used instead.
1664
1665 This format is inspired by dpkg --get-selections before multi‐
1666 arch and the names of the actions likely only make sense if you
1667 imagine the file to be the output of this command of an existing
1668 system.
1669
1670 For each package available in the distribution to be updated
1671 from/pulled from this action is determined and affects the cur‐
1672 rent decision what to do to the target distribution. (Only af‐
1673 ter all update/pull rules for a given target distribution have
1674 been processed something is actually done).
1675
1676 The possible action keywords are:
1677
1678 install
1679 mark the available package to be added to the target dis‐
1680 tribution unless the same version or a higher version is
1681 already marked as to be added/kept. (Note that without a
1682 prior delete rule (-) or supersede action, this will
1683 never downgrade a package as the already existing version
1684 is marked to be kept).
1685
1686 upgradeonly
1687 like install but will not add new packages to a distribu‐
1688 tion.
1689
1690 supersede
1691 unless the current package version is higher than the
1692 available package version, mark the package to be deleted
1693 in the target distribution. (Useful to remove packages
1694 in add-on distributions once they reached the base dis‐
1695 tribution).
1696
1697 deinstall or purge
1698 ignore the newly available package.
1699
1700 warning
1701 print a warning message to stderr if a new package/newer
1702 version is available. Otherwise ignore the new package
1703 (like with deinstall or purge).
1704
1705 hold the new package is ignored, but every previous decision
1706 to downgrade or delete the package in the target distri‐
1707 bution is reset.
1708
1709 error abort the whole upgrade/pull if a new package/newer ver‐
1710 sion is available
1711
1712 = version
1713 If the candidate package has the given version, behave
1714 like install. Otherwise continue as if this list file
1715 did not mention this package (i.e. look in the remaining
1716 list files or use the fallback action). Only one such
1717 entry per package is currently supported and the version
1718 is currently compared as string.
1719
1720 If there is both FilterList and FilterSrcList then the first is
1721 used for .deb and .udeb and the second for .dsc packages.
1722
1723 If there is only FilterList that is applied to everything.
1724
1725 If there is only FilterSrcList that is applied to everything,
1726 too, but the source package name (and source version) is used to
1727 do the lookup.
1728
1729 OmitExtraSourceOnly
1730 This field controls whether source packages with Extra-Source-
1731 Only set are ignore when getting source packages. Without this
1732 option or if it is true, those source packages are ignored,
1733 while if set to no or false, those source packages are also con‐
1734 didates if no other filter excludes them. (The default of true
1735 will likely change once reprepro supports multiple versions of a
1736 package or has other means to keep the source packages around).
1737
1738 ListHook
1739 If this is given, it is executed for all downloaded index files
1740 with the downloaded list as first and a filename that will be
1741 used instead of this. (e.g. "ListHook: /bin/cp" works but does
1742 nothing.)
1743
1744 If a file will be read multiple times, it is processed multiple
1745 times, with the environment variables REPREPRO_FILTER_CODENAME,
1746 REPREPRO_FILTER_PACKAGETYPE, REPREPRO_FILTER_COMPONENT and
1747 REPREPRO_FILTER_ARCHITECTURE set to the where this file will be
1748 added and REPREPRO_FILTER_PATTERN to the name of the update rule
1749 causing it.
1750
1751
1752 ListShellHook
1753 This is like ListHook, but the whole argument is given to the
1754 shell as argument, and the input and output file are stdin and
1755 stdout.
1756
1757 i.e.:
1758 ListShellHook: cat
1759 works but does nothing but useless use of a shell and cat, while
1760 ListShellHook: grep-dctrl -X -S apt -o -X -S dpkg || [ $? -eq 1
1761 ]
1762 will limit the update rule to packages from the specified source
1763 packages.
1764
1765 DownloadListsAs
1766 The arguments of this field specify which index files reprepro
1767 will download.
1768
1769 Allowed values are ., .gz, .bz2, .lzma, .xz, .diff, force.gz,
1770 force.bz2, force.lzma, force.xz, and force.diff.
1771
1772 Reprepro will try the first supported variant in the list given:
1773 Only compressions compiled in or for which an uncompressor was
1774 found are used. Unless the value starts with force., it is only
1775 tried if is found in the Release or InRelease file.
1776
1777 The default value is .diff .xz .lzma .bz2 .gz ., i.e. download
1778 Packages.diff if listed in the Release file, otherwise or if not
1779 usable download .xz if listed in the Release file and there is a
1780 way to uncompress it, then .lzma if usable, then .bz2 if usable,
1781 then .gz and then uncompressed).
1782
1783 Note there is no way to see if an uncompressed variant of the
1784 file is available (as the Release file always lists their check‐
1785 sums, even if not there), so putting '.' anywhere but as the
1786 last argument can mean trying to download a file that does not
1787 exist.
1788
1789 Together with IgnoreRelease reprepro will download the first in
1790 this list that could be unpacked (i.e. force is always assumed)
1791 and the default value is .gz .bzip2 . .lzma .xz.
1792
1793 conf/pulls
1794 This file contains the rules for pulling packages from one distribution
1795 to another. While this can also be done with update rules using the
1796 file or copy method and using the exported indices of that other dis‐
1797 tribution, this way is faster. It also ensures the current files are
1798 used and no copies are made. (This also leads to the limitation that
1799 pulling from one component to another is not possible.)
1800
1801 Each rule consists out of the following fields:
1802
1803 Name The name of this pull rule as it can be used in the Pull field
1804 in conf/distributions.
1805
1806 From The codename of the distribution to pull packages from.
1807
1808 Components
1809 The components of the distribution to get from.
1810
1811 If this field is not there, all components from the distribution
1812 to update are tried.
1813
1814 A rule might list components not available in all distributions
1815 using this rule. In this case unknown components are silently
1816 ignored. (Unless you start reprepro with the --fast option, it
1817 will warn about components unusable in all distributions using
1818 that rule. As exception, unusable components called none are
1819 never warned about, for compatibility with versions prior to
1820 3.0.0 where and empty field had a different meaning.)
1821
1822 Architectures
1823 The architectures to update. If omitted all from the distribu‐
1824 tion to pull from. As in conf/updates, you can use ">" to down‐
1825 load from one architecture and add into another one. (And again,
1826 only useful with filtering to avoid packages not architecture
1827 all to migrate).
1828
1829 UDebComponents
1830 Like Components but for the udebs.
1831
1832 FilterFormula
1833
1834 FilterList
1835
1836 FilterSrcList
1837 The same as with update rules.
1838
1840 The format of override files used by reprepro should resemble the ex‐
1841 tended ftp-archive format, to be specific it is:
1842
1843 packagename field name new value
1844
1845 For example:
1846 kernel-image-2.4.31-yourorga Section protected/base
1847 kernel-image-2.4.31-yourorga Priority standard
1848 kernel-image-2.4.31-yourorga Maintainer That's me <me@localhost>
1849 reprepro Priority required
1850
1851 All fields of a given package will be replaced by the new value speci‐
1852 fied in the override file with the exception of special fields starting
1853 with a dollar sign ($). While the field name is compared case-insensi‐
1854 tive, it is copied in exactly the form in the override file there.
1855 (Thus I suggest to keep to the exact case it is normally found in index
1856 files in case some other tool confuses them.) More than copied is the
1857 Section header (unless -S is supplied), which is also used to guess the
1858 component (unless -C is there).
1859
1860 Some values like Package, Filename, Size or MD5sum are forbidden, as
1861 their usage would severely confuse reprepro.
1862
1863 As an extension reprepro also supports patterns instead of package‐
1864 names. If the package name contains '*', '[' or '?', it is considered
1865 a pattern and applied to each package that is not matched by any non-
1866 pattern override nor by any previous pattern.
1867
1868 Fieldnames starting with a dollar ($) are not be placed in the exported
1869 control data but have special meaning. Unknown ones are loudly ig‐
1870 nored. Special fields are:
1871
1872 $Component: includedeb, includedsc, include and processincoming will
1873 put the package in the component given as value (unless itself overrid‐
1874 den with -C). Note that the proper way to specify the component is by
1875 setting the section field and using this extension will most likely
1876 confuse people and/or tools.
1877
1878 $Delete: the value is treated a fieldname and fields of that name are
1879 removed. (This way one can remove fields previously added without re‐
1880 moving and readding the package. And fields already included in the
1881 package can be removed, too).
1882
1883
1884 conf/incoming
1885 Every chunk is a rule set for the process_incoming command. Possible
1886 fields are:
1887
1888 Name The name of the rule-set, used as argument to the scan command
1889 to specify to use this rule.
1890
1891 IncomingDir
1892 The Name of the directory to scan for .changes files.
1893
1894 TempDir
1895 A directory where the files listed in the processed .changes
1896 files are copied into before they are read. You can avoid some
1897 copy operations by placing this directory within the same moint
1898 point the pool hierarchy is (at least partially) in.
1899
1900 LogDir A directory where .changes files, .log files, .buildinfo files
1901 and otherwise unused .byhand files are stored upon procession.
1902
1903 Allow Each argument is either a pair name1>name2 or simply name which
1904 is short for name>name. Each name2 must identify a distribu‐
1905 tion, either by being Codename, a unique Suite, or a unique Al‐
1906 soAcceptFor from conf/distributions. Each upload has each item
1907 in its Distribution: header compared first to last with each
1908 name1 in the rules and is put in the first one accepting this
1909 package. e.g.:
1910 Allow: local unstable>sid
1911 or
1912 Allow: stable>security-updates stable>proposed-updates
1913 (Note that this makes only sense if Multiple is set to true or
1914 if there are people only allowed to upload to proposed-updates
1915 but not to security-updates).
1916
1917 Default distribution
1918 Every upload not put into any other distribution because of an
1919 Allow argument is put into distribution if that accepts it.
1920
1921 Multiple
1922 Old form of Options: multiple_distributions.
1923
1924 Options
1925 A list of options
1926 multiple_distributions
1927 Allow including a upload in multiple distributions.
1928
1929 If a .changes file lists multiple distributions, then reprepro
1930 will start with the first name given, check all Accept and De‐
1931 fault options till it finds a distribution this upload can go
1932 into.
1933
1934 If this found no distribution or if this option was given,
1935 reprepro will then do the same with the second distribution name
1936 given in the .changes file and so on.
1937 limit_arch_all
1938 If an upload contains binaries from some architecture and archi‐
1939 tecture all packages, the architecture all packages are only put
1940 into the architectures within this upload. Useful to combine
1941 with the flood command.
1942
1943 Permit A list of options to allow things otherwise causing errors:
1944 unused_files
1945 Do not stop with error if there are files listed in the .changes
1946 file if it lists files not belonging to any package in it.
1947 older_version
1948 Ignore a package not added because there already is a strictly
1949 newer version available instead of treating this as an error.
1950 unlisted_binaries
1951 Do not abort with an error if a .changes file contains .deb
1952 files that are not listed in the Binaries header.
1953
1954 Cleanup options
1955 A list of options to cause more files in the incoming directory
1956 to be deleted:
1957 unused_files
1958 If there is unused_files in Permit then also delete those files
1959 when the package is deleted after successful processing.
1960 unused_buildinfo_files
1961 If .buildinfo files of processed .changes files are not used
1962 (neither stored by LogDir nor with Tracking: includebuildinfos)
1963 then delete them from the incoming dir. (This option has no ad‐
1964 ditional effect if unused_files is already used.)
1965 on_deny
1966 If a .changes file is denied processing because of missing sig‐
1967 natures or allowed distributions to be put in, delete it and all
1968 the files it references.
1969 on_error
1970 If a .changes file causes errors while processing, delete it and
1971 the files it references.
1972
1973 Note that allowing cleanup in publically accessible incoming
1974 queues allows a denial of service by sending in .changes files
1975 deleting other peoples files before they are completed. Espe‐
1976 cially when .changes files are handled directly (e.g. by inoti‐
1977 coming).
1978
1979
1980 MorgueDir
1981 If files are to be deleted by Cleanup, they are instead moved to
1982 a subdirectory of the directory given as value to this field.
1983 This directory has to be on the same partition as the incoming
1984 directory and files are moved (i.e. owner and permission stay
1985 the same) and never copied.
1986
1987
1989 These files specified by the Uploaders header in the distribution defi‐
1990 nition as explained above describe what key a .changes file as to be
1991 signed with to be included in that distribution.
1992
1993 Empty lines and lines starting with a hash are ignored, every other
1994 line must be of one of the following nine forms or an include direc‐
1995 tive:
1996
1997 allow condition by anybody
1998 which allows everyone to upload packages matching condition,
1999
2000 allow condition by unsigned
2001 which allows everything matching that has no pgp/gpg header,
2002
2003 allow condition by any key
2004 which allows everything matching with any valid signature in or
2005
2006 allow condition by key key-id
2007 which allows everything matching signed by this key-id (to be
2008 specified without any spaces). If the key-id ends with a +
2009 (plus), a signature with a subkey of this primary key also suf‐
2010 fices.
2011
2012 key-id must be a suffix of the id libgpgme uses to identify this
2013 key, i.e. a number of hexdigits from the end of the fingerprint
2014 of the key, but no more than what libgpgme uses. (The maximal
2015 number should be what gpg --list-key --with-colons prints, as of
2016 the time of this writing that is at most 16 hex-digits).
2017
2018 allow condition by group groupname
2019 which allows every member of group groupname. Groups can be ma‐
2020 nipulated by
2021
2022 group groupname add key-id
2023 to add a key-id (see above for details) to this group, or
2024
2025 group groupname contains groupname
2026 to add a whole group to a group.
2027
2028 To avoid warnings in incomplete config files there is also
2029
2030 group groupname empty
2031 to declare a group has no members (avoids warnings that it is
2032 used without those) and
2033
2034 group groupname unused
2035 to declare that a group is not yet used (avoid warnings that it
2036 is not used).
2037
2038 A line starting with include causes the rest of the line to be inter‐
2039 preted as filename, which is opened and processed before the rest of
2040 the file is processed.
2041
2042 The only conditions currently supported are:
2043
2044 * which means any package,
2045
2046 source 'name'
2047 which means any package with source name. ('*', '?' and '[..]'
2048 are treated as in shell wildcards).
2049
2050 sections 'name'(|'name')*
2051 matches an upload in which each section matches one of the names
2052 given. As upload conditions are checked very early, this is the
2053 section listed in the .changes file, not the one from the over‐
2054 ride file. (But this might change in the future, if you have
2055 the need for the one or the other behavior, let me know).
2056
2057 sections contain 'name'(|'name')*
2058 The same, but not all sections must be from the given set, but
2059 at least one source or binary package needs to have one of those
2060 given.
2061
2062 binaries 'name'(|'name')*
2063 matches an upload in which each binary (type deb or udeb)
2064 matches one of the names given.
2065
2066 binaries contain 'name'(|'name')*
2067 again only at least one instead of all is required.
2068
2069 architectures 'architecture'(|'name')*
2070 matches an upload in which each package has only architectures
2071 from the given set. source and all are treated as unique archi‐
2072 tectures. Wildcards are not allowed.
2073
2074 architectures contain 'architecture'(|'architecture')*
2075 again only at least one instead of all is required.
2076
2077 byhand matches an upload with at least one byhand file (i.e. a file
2078 with section byhand or raw-something).
2079
2080 byhand 'section'(|'section')*
2081 matches an upload with at least one byhand file and all byhand
2082 files having a section listed in the list of given section.
2083 (i.e. byhand 'byhand'|'raw-*' is currently is the same as by‐
2084 hand).
2085
2086 distribution 'codename'
2087 which means any package when it is to be included in codename.
2088 As the uploaders file is given by distribution, this is only
2089 useful to reuse a complex uploaders file for multiple distribu‐
2090 tions.
2091
2092 Putting not in front of a condition, inverses it's meaning. For exam‐
2093 ple
2094 allow not source 'r*' by anybody
2095 means anybody may upload packages which source name does not start with
2096 an 'r'.
2097
2098 Multiple conditions can be connected with and and or, with or binding
2099 stronger (but both weaker than not). That means
2100 allow source 'r*' and source '*xxx' or source '*o' by anybody
2101 is equivalent to
2102 allow source 'r*xxx' by anybody
2103 allow source 'r*o' by anybody
2104
2105 (Other conditions will follow once somebody tells me what restrictions
2106 are useful. Currently planned is only something for architectures).
2107
2109 With --ignore on the command line or an ignore line in the options
2110 file, the following type of errors can be ignored:
2111
2112 brokenold (hopefully never seen)
2113 If there are errors parsing an installed version of package, do
2114 not error out, but assume it is older than anything else, has
2115 not files or no source name.
2116
2117 brokensignatures
2118 If a .changes or .dsc file contains at least one invalid signa‐
2119 ture and no valid signature (not even expired or from an expired
2120 or revoked key), reprepro assumes the file got corrupted and re‐
2121 fuses to use it unless this ignore directive is given.
2122
2123 brokenversioncmp (hopefully never seen)
2124 If comparing old and new version fails, assume the new one is
2125 newer.
2126
2127 dscinbinnmu
2128 If a .changes file has an explicit Source version that is dif‐
2129 ferent the to the version header of the file, than reprepro as‐
2130 sumes it is binary non maintainer upload (NMU). In that case,
2131 source files are not permitted in .changes files processed by
2132 include or processincoming. Adding --ignore=dscinbinnmu allows
2133 it for the include command.
2134
2135 emptyfilenamepart (insecure)
2136 Allow strings to be empty that are used to construct filenames.
2137 (like versions, architectures, ...)
2138
2139 extension
2140 Allow one to includedeb files that do not end with .deb, to in‐
2141 cludedsc files not ending in .dsc and to include files not end‐
2142 ing in .changes.
2143
2144 forbiddenchar (insecure)
2145 Do not insist on Debian policy for package and source names and
2146 versions. Thus allowing all 7-bit characters but slashes (as
2147 they would break the file storage) and things syntactically ac‐
2148 tive (spaces, underscores in filenames in .changes files, open‐
2149 ing parentheses in source names of binary packages). To allow
2150 some 8-bit chars additionally, use 8bit additionally.
2151
2152 8bit (more insecure)
2153 Allow 8-bit characters not looking like overlong UTF-8 sequences
2154 in filenames and things used as parts of filenames. Though it
2155 hopefully rejects overlong UTF-8 sequences, there might be other
2156 characters your filesystem confuses with special characters,
2157 thus creating filenames possibly equivalent to /mir‐
2158 ror/pool/main/../../../etc/shadow (Which should be safe, as you
2159 do not run reprepro as root, do you?) or simply overwriting
2160 your conf/distributions file adding some commands in there. So
2161 do not use this if you are paranoid, unless you are paranoid
2162 enough to have checked the code of your libs, kernel and
2163 filesystems.
2164
2165 ignore (for forward compatibility)
2166 Ignore unknown ignore types given to --ignore.
2167
2168 flatandnonflat (only suppresses a warning)
2169 Do not warn about a flat and a non-flat distribution from the
2170 same source with the same name when updating. (Hopefully never
2171 ever needed.)
2172
2173 malformedchunk (I hope you know what you do)
2174 Do not stop when finding a line not starting with a space but no
2175 colon(:) in it. These are otherwise rejected as they have no de‐
2176 fined meaning.
2177
2178 missingfield (safe to ignore)
2179 Ignore missing fields in a .changes file that are only checked
2180 but not processed. Those include: Format, Date, Urgency, Main‐
2181 tainer, Description, Changes
2182
2183 missingfile (might be insecure)
2184 When including a .dsc file from a .changes file, try to get
2185 files needed but not listed in the .changes file (e.g. when
2186 someone forgot to specify -sa to dpkg-buildpackage) from the di‐
2187 rectory the .changes file is in instead of erroring out.
2188 (--delete will not work with those files, though.)
2189
2190 spaceonlyline (I hope you know what you do)
2191 Allow lines containing only (but non-zero) spaces. As these do
2192 not separate chunks as thus will cause reprepro to behave unex‐
2193 pected, they cause error messages by default.
2194
2195 surprisingarch
2196 Do not reject a .changes file containing files for a architec‐
2197 ture not listed in the Architecture-header within it.
2198
2199 surprisingbinary
2200 Do not reject a .changes file containing .deb files containing
2201 packages whose name is not listed in the "Binary:" header of
2202 that changes file.
2203
2204 undefinedtarget (hope you are not using the wrong db directory)
2205 Do not stop when the packages.db file contains databases for co‐
2206 dename/packagetype/component/architectures combinations that are
2207 not listed in your distributions file.
2208
2209 This allows you to temporarily remove some distribution from the
2210 config files, without having to remove the packages in it with
2211 the clearvanished command. You might even temporarily remove
2212 single architectures or components, though that might cause in‐
2213 consistencies in some situations.
2214
2215 undefinedtracking (hope you are not using the wrong db directory)
2216 Do not stop when the tracking file contains databases for dis‐
2217 tributions that are not listed in your distributions file.
2218
2219 This allows you to temporarily remove some distribution from the
2220 config files, without having to remove the packages in it with
2221 the clearvanished command. You might even temporarily disable
2222 tracking in some distribution, but that is likely to cause in‐
2223 consistencies in there, if you do not know, what you are doing.
2224
2225 unknownfield (for forward compatibility)
2226 Ignore unknown fields in the config files, instead of refusing
2227 to run then.
2228
2229 unusedarch (safe to ignore)
2230 No longer reject a .changes file containing no files for any of
2231 the architectures listed in the Architecture-header within it.
2232
2233 unusedoption
2234 Do not complain about command line options not used by the spec‐
2235 ified action (like --architecture).
2236
2237 uploaders
2238 The include command will accept packages that would otherwise
2239 been rejected by the uploaders file.
2240
2241 wrongarchitecture (safe to ignore)
2242 Do not warn about wrong "Architecture:" lines in downloaded
2243 Packages files. (Note that wrong Architectures are always ig‐
2244 nored when getting stuff from flat repostories or importing
2245 stuff from one architecture to another).
2246
2247 wrongdistribution (safe to ignore)
2248 Do not error out if a .changes file is to be placed in a distri‐
2249 bution not listed in that files' Distributions: header.
2250
2251 wrongsourceversion
2252 Do not reject a .changes file containing .deb files with a dif‐
2253 ferent opinion on what the version of the source package is.
2254 (Note: reprepro only compares literally here, not by meaning.)
2255
2256 wrongversion
2257 Do not reject a .changes file containing .dsc files with a dif‐
2258 ferent version.
2259 (Note: reprepro only compares literally here, not by meaning.)
2260
2261 expiredkey (I hope you know what you do)
2262 Accept signatures with expired keys. (Only if the expired key
2263 is explicitly requested).
2264
2265 expiredsignature (I hope you know what you do)
2266 Accept expired signatures with expired keys. (Only if the key
2267 is explicitly requested).
2268
2269 revokedkey (I hope you know what you do)
2270 Accept signatures with revoked keys. (Only if the revoked key
2271 is explicitly requested).
2272
2274 When including a binary or source package without explicitly declaring
2275 a component with -C it will take the first component with the name of
2276 the section, being prefix to the section, being suffix to the section
2277 or having the section as prefix or any. (In this order)
2278
2279 Thus having specified the components: "main non-free contrib
2280 non-US/main non-US/non-free non-US/contrib" should map e.g. "non-US"
2281 to "non-US/main" and "contrib/editors" to "contrib", while having only
2282 "main non-free and contrib" as components should map "non-US/contrib"
2283 to "contrib" and "non-US" to "main".
2284
2285 NOTE: Always specify main as the first component, if you want things to
2286 end up there.
2287
2288 NOTE: unlike in dak, non-US and non-us are different things...
2289
2291 Codename the primary identifier of a given distribution. This are nor‐
2292 mally things like sarge, etch or sid.
2293
2294 basename
2295 the name of a file without any directory information.
2296
2297 byhand Changes files can have files with section 'byhand' (Debian) or
2298 'raw-' (Ubuntu). Those files are not packages but other data
2299 generated (usually together with packages) and then uploaded to‐
2300 gether with this changes files.
2301
2302 With reprepro those can be stored in the pool next to their
2303 packages with tracking, put in some log directory when using
2304 processincoming, or given to an hook script (currently only pos‐
2305 sible with processincoming).
2306
2307 filekey
2308 the position relative to the outdir. (as found in "Filename:"
2309 in Packages.gz)
2310
2311 full filename
2312 the position relative to /
2313
2314 architecture
2315 The term like sparc, i386, mips, ... . To refer to the source
2316 packages, source is sometimes also treated as architecture.
2317
2318 component
2319 Things like main, non-free and contrib (by policy and some other
2320 programs also called section, reprepro follows the naming scheme
2321 of apt here.)
2322
2323 section
2324 Things like base, interpreters, oldlibs and non-free/math (by
2325 policy and some other programs also called subsections).
2326
2327 md5sum The checksum of a file in the format "<md5sum of file> <length
2328 of file>"
2329
2331 A version is not overwritten with the same version.
2332 reprepro will never update a package with a version it already has.
2333 This would be equivalent to rebuilding the whole database with every
2334 single upgrade. To force the new same version in, remove it and then
2335 update. (If files of the packages changed without changing their name,
2336 make sure the file is no longer remembered by reprepro. Without
2337 --keepunreferencedfiled and without errors while deleting it should al‐
2338 ready be forgotten, otherwise a deleteunreferenced or even some __for‐
2339 get might help.)
2340
2341 The magic delete rule ("-").
2342 A minus as a single word in the Update: line of a distribution marks
2343 everything to be deleted. The mark causes later rules to get packages
2344 even if they have (strict) lower versions. The mark will get removed if
2345 a later rule sets the package on hold (hold is not yet implemented, in
2346 case you might wonder) or would get a package with the same version
2347 (Which it will not, see above). If the mark is still there at the end
2348 of the processing, the package will get removed.
2349
2350 Thus the line "Update: - rules " will cause all packages to be exactly
2351 the highest Version found in rules. The line "Update: near - rules "
2352 will do the same, except if it needs to download packages, it might
2353 download it from near except when too confused. (It will get too con‐
2354 fused e.g. when near or rules have multiple versions of the package and
2355 the highest in near is not the first one in rules, as it never remember
2356 more than one possible spring for a package.
2357
2358 Warning: This rule applies to all type/component/architecture triplets
2359 of a distribution, not only those some other update rule applies to.
2360 (That means it will delete everything in those!)
2361
2363 Environment variables are always overwritten by command line options,
2364 but overwrite options set in the options file. (Even when the options
2365 file is obviously parsed after the environment variables as the envi‐
2366 ronment may determine the place of the options file).
2367
2368 REPREPRO_BASE_DIR
2369 The directory in this variable is used instead of the current
2370 directory, if no -b or --basedir options are supplied.
2371 It is also set in all hook scripts called by reprepro (relative
2372 to the current directory or absolute, depending on how reprepro
2373 got it).
2374
2375 REPREPRO_CONFIG_DIR
2376 The directory in this variable is used when no --confdir is sup‐
2377 plied.
2378 It is also set in all hook scripts called by reprepro (relative
2379 to the current directory or absolute, depending on how reprepro
2380 got it).
2381
2382 REPREPRO_OUT_DIR
2383 This is not used, but only set in hook scripts called by repre‐
2384 pro to the directory in which the pool subdirectory resides
2385 (relative to the current directory or absolute, depending on how
2386 reprepro got it).
2387
2388 REPREPRO_DIST_DIR
2389 This is not used, but only set in hook scripts called by repre‐
2390 pro to the dists directory (relative to the current directory or
2391 absolute, depending on how reprepro got it).
2392
2393 REPREPRO_LOG_DIR
2394 This is not used, but only set in hook scripts called by repre‐
2395 pro to the value setable by --logdir.
2396
2397 REPREPRO_CAUSING_COMMAND
2398
2399 REPREPRO_CAUSING_FILE
2400 Those two environment variable are set (or unset) in Log: and
2401 ByHandHooks: scripts and hint what command and what file caused
2402 the hook to be called (if there is some).
2403
2404 REPREPRO_CAUSING_RULE
2405 This environment variable is set (or unset) in Log: scripts and
2406 hint what update or pull rule caused this change.
2407
2408 REPREPRO_FROM
2409 This environment variable is set (or unset) in Log: scripts and
2410 denotes what other distribution a package is copied from (with
2411 pull and copy commands).
2412
2413 REPREPRO_FILTER_ARCHITECTURE
2414
2415 REPREPRO_FILTER_CODENAME
2416
2417 REPREPRO_FILTER_COMPONENT
2418
2419 REPREPRO_FILTER_PACKAGETYPE
2420
2421 REPREPRO_FILTER_PATTERN
2422 Set in FilterList: and FilterSrcList: scripts.
2423
2424 GNUPGHOME
2425 Not used by reprepro directly. But reprepro uses libgpgme,
2426 which calls gpg for signing and verification of signatures. And
2427 your gpg will most likely use the content of this variable in‐
2428 stead of "~/.gnupg". Take a look at gpg(1) to be sure. You can
2429 also tell reprepro to set this with the --gnupghome option.
2430
2431 GPG_TTY
2432 When there is a gpg-agent running that does not have the
2433 passphrase cached yet, gpg will most likely try to start some
2434 pinentry program to get it. If that is pinentry-curses, that is
2435 likely to fail without this variable, because it cannot find a
2436 terminal to ask on. In this cases you might set this variable
2437 to something like the value of $(tty) or $SSH_TTY or anything
2438 else denoting a usable terminal. (You might also want to make
2439 sure you actually have a terminal available. With ssh you might
2440 need the -t option to get a terminal even when telling gpg to
2441 start a specific command).
2442
2443 By default, reprepro will set this variable to what the symbolic
2444 link /proc/self/fd/0 points to, if stdin is a terminal, unless
2445 you told with --noguessgpgtty to not do so.
2446
2448 Increased verbosity always shows those things one does not want to
2449 know. (Though this might be inevitable and a corollary to Murphy)
2450
2451 Reprepro uses berkeley db, which was a big mistake. The most annoying
2452 problem not yet worked around is database corruption when the disk runs
2453 out of space. (Luckily if it happens while downloading packages while
2454 updating, only the files database is affected, which is easy (though
2455 time consuming) to rebuild, see recovery file in the documentation).
2456 Ideally put the database on another partition to avoid that.
2457
2458 While the source part is mostly considered as the architecture source
2459 some parts may still not use this notation.
2460
2462 gpgme returned an impossible condition
2463 With the woody version this normally meant that there was no
2464 .gnupg directory in $HOME, but it created one and reprepro suc‐
2465 ceeds when called again with the same command. Since sarge the
2466 problem sometimes shows up, too. But it is no longer repro‐
2467 ducible and it does not fix itself, neither. Try running gpg
2468 --verify file-you-had-problems-with manually as the user repre‐
2469 pro is running and with the same $HOME. This alone might fix the
2470 problem. It should not print any messages except perhaps
2471 gpg: no valid OpenPGP data found.
2472 gpg: the signature could not be verified.
2473 if it was an unsigned file.
2474
2475 not including .orig.tar.gz when a .changes file's version does not end
2476 in -0 or -1
2477 If dpkg-buildpackage is run without the -sa option to build a
2478 version with a Debian revision not being -0 or -1, it does not
2479 list the .orig.tar.gz file in the .changes file. If you want to
2480 include such a file with reprepro when the .orig.tar.gz file
2481 does not already exist in the pool, reprepro will report an er‐
2482 ror. This can be worked around by:
2483 call dpkg-buildpackage with -sa (recommended)
2484 copy the .orig.tar.gz file to the proper place in the pool be‐
2485 fore
2486 call reprepro with --ignore=missingfile (discouraged)
2487
2488 leftover files in the pool directory.
2489 reprepro is sometimes a bit too timid of deleting stuff. When
2490 things go wrong and there have been errors it sometimes just
2491 leaves everything where it is. To see what files reprepro re‐
2492 members to be in your pool directory but does not know anything
2493 needing them right know, you can use
2494 reprepro dumpunreferenced
2495 To delete them:
2496 reprepro deleteunreferenced
2497
2499 Interrupting reprepro has its problems. Some things (like speaking
2500 with apt methods, database stuff) can cause problems when interrupted
2501 at the wrong time. Then there are design problems of the code making
2502 it hard to distinguish if the current state is dangerous or non-danger‐
2503 ous to interrupt. Thus if reprepro receives a signal normally sent to
2504 tell a process to terminate itself softly, it continues its operation,
2505 but does not start any new operations. (I.e. it will not tell the
2506 apt-methods any new file to download, it will not replace a package in
2507 a target, unless it already had started with it, it will not delete any
2508 files gotten dereferenced, and so on).
2509
2510 It only catches the first signal of each type. The second signal of a
2511 given type will terminate reprepro. You will risk database corruption
2512 and have to remove the lockfile manually.
2513
2514 Also note that even normal interruption leads to code-paths mostly
2515 untested and thus expose a multitude of bugs including those leading to
2516 data corruption. Better think a second more before issuing a command
2517 than risking the need for interruption.
2518
2520 Report bugs or wishlist requests to the Debian BTS
2521 (e.g. by using reportbug reprepro under Debian)
2522 or directly to brlink@debian.org
2523
2525 Copyright © 2004,2005,2006,2007,2008,2009,2010,2011,2012 Bernhard R.
2526 Link ⟨http://www.brlink.eu⟩
2527 This is free software; see the source for copying conditions. There is
2528 NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
2529 PURPOSE.
2530
2531
2532
2533reprepro 2013-05-04 REPREPRO(1)