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