summaryrefslogtreecommitdiff
path: root/doc/examples
diff options
context:
space:
mode:
Diffstat (limited to 'doc/examples')
-rw-r--r--doc/examples/CMakeLists.txt4
-rw-r--r--doc/examples/apt-ftparchive.conf46
-rw-r--r--doc/examples/apt-https-method-example.conf186
-rw-r--r--doc/examples/apt.conf32
-rw-r--r--doc/examples/configure-index758
-rw-r--r--doc/examples/ftp-archive.conf81
-rw-r--r--doc/examples/preferences11
7 files changed, 1118 insertions, 0 deletions
diff --git a/doc/examples/CMakeLists.txt b/doc/examples/CMakeLists.txt
new file mode 100644
index 000000000..1998867db
--- /dev/null
+++ b/doc/examples/CMakeLists.txt
@@ -0,0 +1,4 @@
+install(FILES apt.conf apt-https-method-example.conf configure-index preferences
+ DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples)
+install(FILES apt-ftparchive.conf ftp-archive.conf
+ DESTINATION ${CMAKE_INSTALL_DOCDIR}/../apt-utils/examples)
diff --git a/doc/examples/apt-ftparchive.conf b/doc/examples/apt-ftparchive.conf
new file mode 100644
index 000000000..0e8bcb2ce
--- /dev/null
+++ b/doc/examples/apt-ftparchive.conf
@@ -0,0 +1,46 @@
+// This config is for use with the pool-structure for the packages, thus we
+// don't use a Tree Section in here
+
+// The debian archive should be in the current working dir
+Dir {
+ ArchiveDir ".";
+ CacheDir ".";
+};
+
+// Create Packages, Packages.gz and Packages.xz, remove/add as needed
+Default {
+ Packages::Compress ". gzip xz";
+ Sources::Compress ". gzip xz";
+ Contents::Compress ". gzip xz";
+};
+
+// Includes the main section. You can structure the directory tree under
+// ./pool/main any way you like, apt-ftparchive will take any deb (and
+// source package) it can find. This creates a Packages a Sources and a
+// Contents file for these in the main section of the sid release
+BinDirectory "pool/main" {
+ Packages "dists/sid/main/binary-i386/Packages";
+ Sources "dists/sid/main/source/Sources";
+ Contents "dists/sid/main/Contents-i386";
+}
+
+// This is the same for the contrib section
+BinDirectory "pool/contrib" {
+ Packages "dists/sid/contrib/binary-i386/Packages";
+ Sources "dists/sid/contrib/source/Sources";
+ Contents "dists/sid/contrib/Contents-i386";
+}
+
+// This is the same for the non-free section
+BinDirectory "pool/non-free" {
+ Packages "dists/sid/non-free/binary-i386/Packages";
+ Sources "dists/sid/non-free/source/Sources";
+ Contents "dists/sid/non-free/Contents-i386";
+};
+
+// By default all Packages should have the extension ".deb"
+Default {
+ Packages {
+ Extensions ".deb";
+ };
+};
diff --git a/doc/examples/apt-https-method-example.conf b/doc/examples/apt-https-method-example.conf
new file mode 100644
index 000000000..3152ef1e2
--- /dev/null
+++ b/doc/examples/apt-https-method-example.conf
@@ -0,0 +1,186 @@
+/* This file is a sample configuration for apt https method. Configuration
+ parameters found in this example file are expected to be used in main
+ apt.conf file, just like other configuration parameters for different
+ methods (ftp, file, ...).
+
+ This example file starts with a common setup that voluntarily exhibits
+ all available configurations knobs with simple comments. Extended
+ comments on the behavior of the option is provided at the end for
+ better readability. As a matter of fact, a common configuration file
+ will certainly contain far less elements and benefit of default values
+ for many parameters.
+
+ Because some configuration parameters for apt https method in following
+ examples apply to specific (fictional) repositories, the associated
+ sources.list file is provided here:
+
+ ...
+
+ deb https://secure.dom1.tld/debian unstable main contrib non-free
+ deb-src https://secure.dom1.tld/debian unstable main contrib non-free
+
+ deb https://secure.dom2.tld/debian unstable main contrib non-free
+ deb-src https://secure.dom2.tld/debian unstable main contrib non-free
+
+ ...
+
+
+ Some notes on the servers:
+
+ - secure.dom1.tld is freely accessible using https (no client
+ authentication is required).
+ - secure.dom1.tld certificate is part of a multi level PKI, and we
+ want to specifically check the issuer of its certificate. We do
+ not have the constraint for secure.dom2.tld
+ - secure.dom2.tld requires client authentication by certificate
+ to access its content.
+ - The certificate presented by both server have (as expected) a CN that
+ matches their respective DNS names.
+ - We have CRL available for both dom1.tld and dom2.tld PKI, and intend
+ to use them.
+ - It sometimes happens that we had other more generic https available
+ repository to our list. We want the checks to be performed against
+ a common list of anchors (like the one provided by ca-certificates
+ package for instance)
+
+ The sample configuration below basically covers those simple needs.
+*/
+
+
+// Verify peer certificate and also matching between certificate name
+// and server name as provided in sources.list (default values)
+Acquire::https::Verify-Peer "true";
+Acquire::https::Verify-Host "true";
+
+// Except otherwise specified, use that list of anchors
+Acquire::https::CaInfo "/etc/ssl/certs/ca-certificates.pem";
+
+// Use a specific anchor and associated CRL. Enforce issuer of
+// server certificate using its cert.
+Acquire::https::secure.dom1.tld::CaInfo "/etc/apt/certs/ca-dom1-crt.pem";
+Acquire::https::secure.dom1.tld::CrlFile "/etc/apt/certs/ca-dom1-crl.pem";
+Acquire::https::secure.dom1.tld::IssuerCert "/etc/apt/certs/secure.dom1-issuer-crt.pem";
+
+// Like previous for anchor and CRL, but also provide our
+// certificate and keys for client authentication.
+Acquire::https::secure.dom2.tld::CaInfo "/etc/apt/certs/ca-dom2-crt.pem";
+Acquire::https::secure.dom2.tld::CrlFile "/etc/apt/certs/ca-dom2-crl.pem";
+Acquire::https::secure.dom2.tld::SslCert "/etc/apt/certs/my-crt.pem";
+Acquire::https::secure.dom2.tld::SslKey "/etc/apt/certs/my-key.pem";
+
+// No need to downgrade, TLS will be proposed by default. Uncomment
+// to have SSLv3 proposed.
+// Acquire::https::mirror.ipv6.ssi.corp::SslForceVersion "SSLv3";
+
+// No need for more debug if every is fine (default). Uncomment
+// me to get additional information.
+// Debug::Acquire::https "true";
+
+
+/*
+ Options with extended comments:
+
+ Acquire::https[::repo.domain.tld]::CaInfo "/path/to/ca/certs.pem";
+
+ A string providing the path of a file containing the list of trusted
+ CA certificates used to verify the server certificate. The pointed
+ file is made of the concatenation of the CA certificates (in
+ PEM format) creating the chain used for the verification of the path
+ from the root (self signed one). If the remote server provides the
+ whole chain during the exchange, the file need only contain the root
+ certificate. Otherwise, the whole chain is required.
+
+ If you need to support multiple authorities, the only way is to
+ concatenate everything.
+
+ If None is provided, the default CA bundle used by GnuTLS (apt https
+ method is linked against libcurl-gnutls) is used. At the time of
+ writing, /etc/ssl/certs/ca-certificates.crt.
+
+ If no specific hostname is provided, the file is used by default
+ for all https targets. If a specific mirror is provided, it is
+ used for the https entries in the sources.list file that use that
+ repository (with the same name).
+
+ Acquire::https[::repo.domain.tld]::CrlFile "/path/to/all/crl.pem";
+
+ Like previous knob but for passing the list of CRL files (in PEM
+ format) to be used to verify revocation status. Again, if the
+ option is defined with no specific mirror (probably makes little
+ sense), this CRL information is used for all defined https entries
+ in sources.list file. In a mirror specific context, it only applies
+ to that mirror.
+
+ Acquire::https[::repo.domain.tld]::IssuerCert "/path/to/issuer/cert.pem";
+
+ Allows one to constrain the issuer of the server certificate (for all
+ https mirrors or a specific one) to a specific issuer. If the
+ server certificate has not been issued by this certificate,
+ connection fails.
+
+ Acquire::https[::repo.domain.tld]::Verify-Peer "true";
+
+ When authenticating the server, if the certificate verification fails
+ for some reason (expired, revoked, man in the middle, lack of anchor,
+ ...), the connection fails. This is obviously what you want in all
+ cases and what the default value (true) of this option provides.
+
+ If you know EXACTLY what you are doing, setting this option to "false"
+ allow you to skip peer certificate verification and make the exchange
+ succeed. Again, this option is for debugging or testing purpose only.
+ It removes ALL the security provided by the use of SSL.TLS to secure
+ the HTTP exchanges.
+
+ Acquire::https[::repo.domain.tld]::Verify-Host "true";
+
+ The certificate provided by the server during the TLS/SSL exchange
+ provides the identity of the server which should match the DNS name
+ used to access it. By default, as requested by RFC 2818, the name
+ of the mirror is checked against the identity found in the
+ certificate. This default behavior is safe and should not be
+ changed. If you know that the server you are using has a DNS name
+ which does not match the identity in its certificate, you can
+ [report that issue to its administrator or] set the option to
+ "false", which will prevent the comparison to be done.
+
+ The options can be set globally or on a per-mirror basis. If set
+ globally, the DNS name used is the one found in the sources.list
+ file in the https URI.
+
+ Acquire::https[::repo.domain.tld]::SslCert "/path/to/client/cert.pem";
+ Acquire::https[::repo.domain.tld]::SslKey "/path/to/client/key.pem";
+
+ These two options provides support for client authentication using
+ certificates. They respectively accept the X.509 client certificate
+ in PEM format and the associated client key in PEM format (non
+ encrypted form).
+
+ The options can be set globally (which rarely makes sense) or on a
+ per-mirror basis.
+
+ Acquire::https[::repo.domain.tld]::SslForceVersion "TLSv1";
+
+ This option can be use to select the version which will be proposed
+ to the server. "SSLv3" and "TLSv1" are supported. SSLv2, which is
+ considered insecure anyway is not supported (by gnutls, which is
+ used by libcurl against which apt https method is linked).
+
+ When the option is set to "SSLv3" to have apt propose SSLv3 (and
+ associated sets of ciphersuites) instead of TLSv1 (the default)
+ when performing the exchange. This prevents the server to select
+ TLSv1 and use associated ciphersuites. You should probably not use
+ this option except if you know exactly what you are doing.
+
+ Note that the default setting does not guarantee that the server
+ will not select SSLv3 (for ciphersuites and SSL/TLS version as
+ selection is always done by the server, in the end). It only means
+ that apt will not advertise TLS support.
+
+ Debug::Acquire::https "true";
+
+ This option can be used to show debug information. Because it is
+ quite verbose, it is mainly useful to debug problems in case of
+ failure to connect to a server for some reason. The default value
+ is "false".
+
+*/
diff --git a/doc/examples/apt.conf b/doc/examples/apt.conf
new file mode 100644
index 000000000..7201d1920
--- /dev/null
+++ b/doc/examples/apt.conf
@@ -0,0 +1,32 @@
+// $Id: apt.conf,v 1.43 1999/12/06 02:19:38 jgg Exp $
+/* This file is a sample configuration file with a few harmless sample
+ options.
+*/
+
+APT
+{
+ // Options for apt-get
+ Get
+ {
+ Download-Only "false";
+ };
+
+};
+
+// Options for the downloading routines
+Acquire
+{
+ Retries "0";
+};
+
+// Things that effect the APT dselect method
+DSelect
+{
+ Clean "auto"; // always|auto|prompt|never
+};
+
+DPkg
+{
+ // Probably don't want to use force-downgrade..
+ Options {"--force-overwrite";}
+}
diff --git a/doc/examples/configure-index b/doc/examples/configure-index
new file mode 100644
index 000000000..eb0a242c5
--- /dev/null
+++ b/doc/examples/configure-index
@@ -0,0 +1,758 @@
+/* This file is an index of all APT configuration directives.
+ Instead of actual values the option has the type as value.
+ Additional explanations and possible values might be detailed in a comment.
+
+ Most of the options have sane default values,
+ unless you have specific needs you should NOT include arbitrary
+ items in a custom configuration.
+
+ In some instances involving filenames it is possible to set the default
+ directory when the path is evaluated. This means you can use relative
+ paths within the sub scope.
+
+ The configuration directives are specified in a tree with {} designating
+ a subscope relative to the tag before the {}. You can further specify
+ a subscope using scope notation e.g.,
+ APT::Architecture "i386";
+ This is prefixed with the current scope. Scope notation must be used
+ if an option is specified on the command line with -o.
+
+ The most complex type is perhaps <LIST>:
+ APT::Architectures "<LIST>";
+ In configuration files it usually appears as a subscope of its own like:
+ APT::Architectures { "amd64"; "i386"; };
+ but the same can be achieved with (needed for commandline)
+ APT::Architectures "amd64,i386";
+ which overrides the values in the scope notation.
+
+ See apt.conf manpage for a detailed description of many common options
+ and the syntax of configuration files and commandline options!
+*/
+
+quiet "<INT>";
+quiet::NoUpdate "<BOOL>"; // never update progress information - included in -q=1
+quiet::NoProgress "<BOOL>"; // disables the 0% → 100% progress on cache generation and stuff
+quiet::NoStatistic "<BOOL>"; // no "42 kB downloaded" stats in update
+
+// Options for APT in general
+APT
+{
+ Architecture "<STRING>"; // debian architecture like amd64, i386, powerpc, armhf, mips, …
+ Architectures "<LIST>"; // a list of (foreign) debian architectures, defaults to: dpkg --print-foreign-architectures
+
+ Build-Essential "<LIST>"; // list of package names
+ Build-Profiles "<STRING_OR_LIST>";
+
+ NeverAutoRemove "<LIST>"; // list of package name regexes
+
+ // Options for apt-get
+ Get
+ {
+ // build-dep options:
+ Host-Architecture "<STRING>"; // debian architecture
+ Arch-Only "<BOOL>";
+ Indep-Only "<BOOL>";
+ Build-Dep-Automatic "<BOOL>";
+
+ // (non-)confirming options
+ Force-Yes "<BOOL>"; // allows downgrades, essential removal and eats children
+ Allow-Downgrades "<BOOL>";
+ Allow-Change-Held-Packages "<BOOL>";
+ Allow-Remove-Essential "<BOOL>";
+ Assume-Yes "<BOOL>"; // not as dangerous, but use with care still
+ Assume-No "<BOOL>";
+ Trivial-Only "<BOOL>";
+ Remove "<BOOL>";
+ AllowUnauthenticated "<BOOL>"; // skip security
+
+ AutomaticRemove "<BOOL>";
+ HideAutoRemove "<STRING_OR_BOOL>"; // yes, no, small
+
+ Simulate "<BOOL>";
+ Show-User-Simulation-Note "<BOOL>";
+ Fix-Broken "<BOOL>";
+ Fix-Policy-Broken "<BOOL>";
+
+ Download "<BOOL>";
+ Download-Only "<BOOL>";
+ Fix-Missing "<BOOL>";
+ Print-URIs "<BOOL>";
+ List-Cleanup "<BOOL>";
+
+ Show-Upgraded "<BOOL>";
+ Show-Versions "<BOOL>";
+ Upgrade "<BOOL>";
+ Only-Upgrade "<BOOL>";
+ Upgrade-Allow-New "<BOOL>";
+ Purge "<BOOL>";
+ ReInstall "<BOOL>";
+ Compile "<BOOL>";
+ Only-Source "<BOOL>";
+ Diff-Only "<BOOL>";
+ Tar-Only "<BOOL>";
+ Dsc-Only "<BOOL>";
+
+ Autosolving "<BOOL>";
+ CallResolver "<BOOL>";
+ IndexTargets::ReleaseInfo "<BOOL>";
+ IndexTargets::format "<STRING>";
+ };
+
+ Cache
+ {
+ AllNames "<BOOL>";
+ AllVersions "<BOOL>";
+ Only-Source "<BOOL>";
+ GivenOnly "<BOOL>";
+ RecurseDepends "<BOOL>";
+ Installed "<BOOL>";
+ Important "<BOOL>";
+ ShowDependencyType "<BOOL>";
+ ShowVersion "<BOOL>";
+ ShowPre-Depends "<BOOL>";
+ ShowDepends "<BOOL>";
+ ShowRecommends "<BOOL>";
+ ShowSuggests "<BOOL>";
+ ShowReplaces "<BOOL>";
+ ShowConflicts "<BOOL>";
+ ShowBreaks "<BOOL>";
+ ShowEnhances "<BOOL>";
+ ShowOnlyFirstOr "<BOOL>";
+ ShowImplicit "<BOOL>";
+ ShowVirtuals "<BOOL>";
+ ShowFull "<BOOL>";
+ NamesOnly "<BOOL>";
+
+ show::version "<INT>";
+ search::version "<INT>";
+ };
+
+ CDROM
+ {
+ Rename "<BOOL>";
+ NoMount "<BOOL>";
+ Fast "<BOOL>";
+ NoAct "<BOOL>";
+ Thorough "<BOOL>";
+ DropTranslation "<BOOL>";
+ };
+
+ Update
+ {
+ Pre-Invoke {"touch /var/lib/apt/pre-update-stamp"; };
+ Post-Invoke {"touch /var/lib/apt/post-update-stamp"; };
+ };
+
+ /* define a new supported compressor on the fly
+ Compressor::rev {
+ Name "rev";
+ Extension ".reversed";
+ Binary "rev";
+ CompressArg {};
+ UncompressArg {};
+ Cost "10";
+ };
+ */
+ Compressor "<LIST>";
+ Compressor::** "<UNDEFINED>";
+
+ Authentication
+ {
+ TrustCDROM "false"; // consider the CD-ROM always trusted
+ };
+
+ Clean-Installed "<BOOL>";
+
+ // Some general options
+ Default-Release "<STRING>";
+ Ignore-Hold "<BOOL>";
+ Immediate-Configure "<BOOL>";
+ Immediate-Configure-All "<BOOL>";
+ Force-LoopBreak "<BOOL>";
+
+ Cache-Start "<INT>";
+ Cache-Grow "<INT>";
+ Cache-Limit "<INT>";
+ Cache-Fallback "<BOOL>";
+ Cache-HashTableSize "<INT>";
+
+ // consider Recommends/Suggests as important dependencies that should
+ // be installed by default
+ Install-Recommends "<BOOL>";
+ Install-Suggests "<BOOL>";
+ // reverse Recommends or Suggests prevent autoremoval
+ AutoRemove::RecommendsImportant "<BOOL>";
+ AutoRemove::SuggestsImportant "<BOOL>";
+
+ // consider dependencies of packages in this section manual
+ Never-MarkAuto-Sections {"metapackages"; "universe/metapackages"; };
+
+ // Write progress messages on this fd (for stuff like base-config)
+ Status-Fd "<INT>";
+ Status-deb822-Fd "<INT>";
+ // Keep the list of FDs open (normally apt closes all fds when it
+ // does a ExecFork)
+ Keep-Fds {};
+
+ // control parameters for cron jobs by /etc/cron.daily/apt documented there
+ Periodic {};
+};
+
+// Options for the downloading routines
+Acquire
+{
+ Queue-Mode "<STRING>"; // host or access
+ Retries "<INT>";
+ Source-Symlinks "<BOOL>";
+ ForceHash "<STRING>"; // hashmethod used for expected hash: sha256, sha1 or md5sum
+
+ PDiffs "<BOOL>"; // try to get the IndexFile diffs
+ PDiffs::FileLimit "<INT>"; // don't use diffs if we would need more than 4 diffs
+ PDiffs::SizeLimit "<INT>"; // don't use diffs if size of all patches excess X% of the size of the original file
+ PDiffs::Merge "<BOOL>";
+
+ Check-Valid-Until "<BOOL>";
+ Max-ValidTime "<INT>"; // time in seconds
+ Max-ValidTime::* "<INT>"; // repository label specific configuration
+ Min-ValidTime "<INT>"; // time in seconds
+ Min-ValidTime::* "<INT>"; // repository label specific configuration
+
+ SameMirrorForAllIndexes "<BOOL>"; // use the mirror serving the Release file for Packages & co
+
+ // HTTP method configuration
+ http
+ {
+ Proxy "http://127.0.0.1:3128";
+ Proxy::http.us.debian.org "DIRECT"; // Specific per-host setting
+ Timeout "120";
+ Pipeline-Depth "5";
+ AllowRedirect "true";
+
+ // Cache Control. Note these do not work with Squid 2.0.2
+ No-Cache "false";
+ Max-Age "86400"; // 1 Day age on index files
+ No-Store "false"; // Prevent the cache from storing archives
+ Dl-Limit "<INT>"; // Kb/sec maximum download rate
+ User-Agent "Debian APT-HTTP/1.3";
+ };
+
+ // HTTPS method configuration: uses the http
+ // - proxy config
+ // - cache-control values
+ // - Dl-Limit, Timeout, ... values
+ // if not set explicit for https
+ //
+ // see /usr/share/doc/apt/examples/apt-https-method-example.conf.gz
+ // for more examples
+ https
+ {
+ Verify-Peer "false";
+ SslCert "/etc/apt/some.pem";
+ CaPath "/etc/ssl/certs";
+ Verify-Host "true";
+ AllowRedirect "true";
+
+ Timeout "120";
+ AllowRedirect "true";
+
+ // Cache Control. Note these do not work with Squid 2.0.2
+ No-Cache "false";
+ Max-Age "86400"; // 1 Day age on index files
+ No-Store "false"; // Prevent the cache from storing archives
+ Dl-Limit "<INT>"; // Kb/sec maximum download rate
+
+ User-Agent "Debian APT-CURL/1.0";
+ };
+
+ ftp
+ {
+ Proxy "ftp://127.0.0.1/";
+ Proxy::http.us.debian.org "DIRECT"; // Specific per-host setting
+
+ /* Required script to perform proxy login. This example should work
+ for tisfwtk */
+ ProxyLogin
+ {
+ "USER $(PROXY_USER)";
+ "PASS $(PROXY_PASS)";
+ "USER $(SITE_USER)@$(SITE):$(SITE_PORT)";
+ "PASS $(SITE_PASS)";
+ };
+
+ Timeout "120";
+
+ /* Passive mode control, proxy, non-proxy and per-host. Pasv mode
+ is preferred if possible */
+ Passive "true";
+ Proxy::Passive "true";
+ Passive::http.us.debian.org "true"; // Specific per-host setting
+ };
+
+ cdrom
+ {
+ AutoDetect "<BOOL>"; // do auto detection of the cdrom mountpoint
+ // when auto-detecting, only look for cdrom/dvd. when this is false
+ // it will support any removable device as a "cdrom" source
+ CdromOnly "true";
+
+ // cdrom mountpoint (needs to be defined in fstab if AutoDetect is not used)
+ mount "/cdrom";
+
+ // You need the trailing slash!
+ "/cdrom/"
+ {
+ Mount "sleep 1000";
+ UMount "sleep 500";
+ }
+ };
+
+ gpgv
+ {
+ Options {"--ignore-time-conflict";} // not very useful on a normal system
+ };
+
+ /* CompressionTypes
+ {
+ bz2 "bzip2";
+ lzma "lzma";
+ gz "gzip";
+
+ Order { "uncompressed"; "gz"; "lzma"; "bz2"; };
+ }; */
+ CompressionTypes::Order "<LIST>";
+ CompressionTypes::* "<STRING>";
+
+ Languages "<LIST>"; // "environment,de,en,none,fr";
+
+ // Location of the changelogs with the placeholder @CHANGEPATH@ (e.g. "main/a/apt/apt_1.1")
+ Changelogs::URI
+ {
+ // Origin::Debian "http://metadata.ftp-master.debian.org/changelogs/@CHANGEPATH@_changelog";
+ Origin::* "<STRING>";
+ Label::* "<STRING>";
+ Override::Origin::* "<STRING>";
+ Override::Label::* "<STRING>";
+ };
+ Changelogs::AlwaysOnline "<BOOL>"; // even if the changelog file exists get it online (as the file is incomplete)
+ Changelogs::AlwaysOnline::Origin::* "<BOOL>";
+};
+
+// Directory layout
+Dir "<DIR>"
+{
+ Ignore-Files-Silently "<LIST>"; // of regexes: "\.dpkg-[a-z]+$,\.bak$,~$";
+
+ // Location of the state dir
+ State "<DIR>"
+ {
+ Lists "<DIR>";
+ status "<FILE>";
+ extended_states "<FILE>";
+ cdroms "<FILE>";
+ };
+
+ // Location of the cache dir
+ Cache "<DIR>" {
+ Archives "<DIR>";
+ Backup "backup/"; // backup directory created by /etc/cron.daily/apt
+ srcpkgcache "<FILE>";
+ pkgcache "<FILE>";
+ };
+
+ // Config files
+ Etc "<DIR>" {
+ Main "<FILE>";
+ Netrc "<FILE>";
+ Parts "<DIR>";
+ Preferences "<FILE>";
+ PreferencesParts "<DIR>";
+ SourceList "<FILE>";
+ SourceParts "<DIR>";
+ Trusted "<FILE>";
+ TrustedParts "<DIR>";
+ };
+
+ // Locations of binaries
+ Bin {
+ methods "<DIR>";
+ methods::* "<FILE>";
+ gpg "/usr/bin/gpgv";
+ dpkg "<PROGRAM_PATH>";
+ dpkg-source "<PROGRAM_PATH>";
+ dpkg-buildpackage "/usr/bin/dpkg-buildpackage";
+ lz4 "<PROGRAM_PATH>";
+ gzip "<PROGRAM_PATH>";
+ xz "<PROGRAM_PATH>";
+ bzip2 "<PROGRAM_PATH>";
+ lzma "<PROGRAM_PATH>";
+ uncompressed "<PROGRAM_PATH>";
+
+ solvers "<LIST>"; // of directories
+ planners "<LIST>"; // of directories
+ };
+
+ // Location of the logfiles
+ Log "<DIR>" {
+ Terminal "<FILE>";
+ History "<FILE>";
+ Solver "<FILE>";
+ Planner "<FILE>";
+ };
+
+ Media
+ {
+ MountPath "/media/apt"; // Media AutoDetect mount path
+ };
+};
+
+// Things that effect the APT dselect method
+DSelect
+{
+ Clean "auto"; // always|auto|prompt|never
+ Options "-f";
+ UpdateOptions "";
+ PromptAfterUpdate "no";
+ CheckDir "no";
+}
+
+DPkg
+{
+ NoTriggers "<BOOL>";
+ ConfigurePending "<BOOL>";
+ TriggersPending "<BOOL>";
+
+ // Probably don't want to use force-downgrade..
+ Options {"--force-overwrite";"--force-downgrade";}
+
+ // Auto re-mounting of a readonly /usr
+ Pre-Invoke {"mount -o remount,rw /usr";};
+ Post-Invoke {"mount -o remount,ro /usr";};
+
+ Chroot-Directory "/";
+
+ // Prevents daemons from getting cwd as something mountable (default)
+ Run-Directory "/";
+
+ // Build options for apt-get source --compile
+ Build-Options "-b -uc";
+
+ // Pre-configure all packages before they are installed using debconf.
+ Pre-Install-Pkgs {"dpkg-preconfigure --apt --priority=low --frontend=dialog";};
+
+ // Flush the contents of stdin before forking dpkg.
+ FlushSTDIN "true";
+
+ MaxArgBytes "<INT>"; // Control the size of the command line passed to dpkg.
+ Install::Recursive "<BOOL>" // avoid long commandlines by recursive install in a tmpdir
+ {
+ force "<BOOL>"; // not all dpkg versions support this, so autodetection is default
+ minimum "<INT>"; // don't bother if its just a few packages
+ numbered "<BOOL>"; // avoid M-A:same ordering bug in dpkg
+ };
+
+ UseIONice "<BOOL>";
+
+ // controls if apt will apport on the first dpkg error or if it
+ // tries to install as many packages as possible
+ StopOnError "true";
+}
+
+/* Options you can set to see some debugging text They correspond to names
+ of classes in the source code */
+Debug
+{
+ pkgInitConfig "<BOOL>";
+ pkgProblemResolver "<BOOL>";
+ pkgProblemResolver::ShowScores "<BOOL>";
+ pkgDepCache::AutoInstall "<BOOL>"; // what packages apt installs to satisfy dependencies
+ pkgDepCache::Marker "<BOOL>";
+ pkgCacheGen "<BOOL>";
+ pkgAcquire "<BOOL>";
+ pkgAcquire::Worker "<BOOL>";
+ pkgAcquire::Auth "<BOOL>";
+ pkgAcquire::Diffs "<BOOL>";
+ pkgDPkgPM "<BOOL>";
+ pkgDPkgProgressReporting "<BOOL>";
+ pkgOrderList "<BOOL>";
+ pkgPackageManager "<BOOL>"; // OrderList/Configure debugging
+ pkgAutoRemove "<BOOL>"; // show information about automatic removes
+ BuildDeps "<BOOL>";
+ pkgInitialize "<BOOL>"; // This one will dump the configuration space
+ NoLocking "<BOOL>";
+ Acquire::Ftp "<BOOL>"; // Show ftp command traffic
+ Acquire::Http "<BOOL>"; // Show http command traffic
+ Acquire::Https "<BOOL>"; // Show https debug
+ Acquire::gpgv "<BOOL>"; // Show the gpgv traffic
+ Acquire::cdrom "<BOOL>"; // Show cdrom debug output
+ Acquire::Transaction "<BOOL>";
+ Acquire::Progress "<BOOL>";
+ aptcdrom "<BOOL>"; // Show found package files
+ IdentCdrom "<BOOL>";
+ acquire::netrc "<BOOL>"; // netrc parser
+ RunScripts "<BOOL>"; // debug invocation of external scripts
+ pkgPolicy "<BOOL>";
+ GetListOfFilesInDir "<BOOL>";
+ pkgAcqArchive::NoQueue "<BOOL>";
+ Hashes "<BOOL>";
+ APT::FtpArchive::Clean "<BOOL>";
+ NoDropPrivs "<BOOL>";
+ EDSP::WriteSolution "<BOOL>";
+ InstallProgress::Fancy "<BOOL>";
+ APT::Progress::PackageManagerFd "<BOOL>";
+};
+
+pkgCacheGen
+{
+ Essential "<STRING>"; // native,all, none, installed
+ ForceEssential "<STRING_OR_LIST>"; // package names
+ ForceImportant "<LIST>"; // package names
+};
+
+// modify points awarded for various facts about packages while
+// resolving conflicts in the dependency resolution process
+pkgProblemResolver::Scores
+{
+ Required "<INT>";
+ Important "<INT>";
+ Standard "<INT>";
+ Optional "<INT>";
+ Extra "<INT>";
+ Essentials "<INT>";
+ NotObsolete "<INT>";
+ Depends "<INT>";
+ PreDepends "<INT>";
+ Suggests "<INT>";
+ Recommends "<INT>";
+ Conflicts "<INT>";
+ Replaces "<INT>";
+ Obsoletes "<INT>";
+ Breaks "<INT>";
+ Enhances "<INT>";
+ AddProtected "<INT>";
+ AddEssential "<INT>";
+};
+pkgProblemResolver::FixByInstall "<BOOL>";
+
+APT::FTPArchive::release
+{
+ Default-Patterns "<BOOL>";
+ NumericTimezone "<BOOL>";
+
+ // set specific fields in the generated Release file
+ Acquire-By-Hash "<BOOL>";
+ ButAutomaticUpgrades "<BOOL>";
+ NotAutomatic "<BOOL>";
+ MD5 "<BOOL>";
+ SHA1 "<BOOL>";
+ SHA256 "<BOOL>";
+ SHA512 "<BOOL>";
+ Architectures "<STRING>";
+ Codename "<STRING>";
+ Components "<STRING>";
+ Date "<STRING>";
+ Description "<STRING>";
+ Label "<STRING>";
+ Origin "<STRING>";
+ Signed-by "<STRING>";
+ Suite "<STRING>";
+ Version "<STRING>";
+};
+
+// having both seems wrong
+dpkgpm::progress "<BOOL>";
+dpkg::progress "<BOOL>";
+apt::acquire::by-hash "<STRING>";
+acquire::by-hash "<STRING>";
+apt::acquire::*::by-hash "<STRING>";
+acquire::*::by-hash "<STRING>";
+
+// Unsorted options: Some of those are used only internally
+
+help "<BOOL>"; // true if the help message was requested via e.g. --help
+version "<BOOL>"; // true if the version number was requested via e.g. --version
+Binary "<STRING>"; // name of the program run like apt-get, apt-cache, …
+
+dir::locale "<DIR>";
+dir::bin::dpkg-source "<STRING>";
+
+pkgcachefile::generate "<BOOL>";
+packagemanager::unpackall "<BOOL>";
+packagemanager::configure "<STRING>";
+commandline::asstring "<STRING>";
+edsp::scenario "<STRING>";
+eipp::scenario "<STRING>";
+cd::* "<STRING>"; // added CDRoms are stored as config
+
+orderlist::score::delete "<INT>";
+orderlist::score::essential "<INT>";
+orderlist::score::immediate "<INT>";
+orderlist::score::predepends "<INT>";
+
+apt::sources::with "<LIST>";
+apt::moo::color "<BOOL>";
+apt::pkgpackagemanager::maxloopcount "<INT>";
+apt::hashes::*::untrusted "<BOOL>";
+apt::list-cleanup "<BOOL>";
+apt::authentication::trustcdrom "<BOOL>";
+apt::solver::strict-pinning "<BOOL>";
+apt::keep-downloaded-packages "<BOOL>";
+apt::solver "<STRING>";
+apt::planner "<STRING>";
+apt::system "<STRING>";
+apt::acquire::translation "<STRING>"; // deprecated in favor of Acquire::Languages
+apt::sandbox::user "<STRING>";
+apt::color::highlight "<STRING>";
+apt::color::neutral "<STRING>";
+
+dpkgpm::reporting-steps "<INT>";
+
+dpkg::chroot-directory "<DIR>";
+dpkg::tools::options::** "<UNDEFINED>";
+dpkg::source-options "<STRING>";
+dpkg::progress-fancy "<BOOL>";
+dpkg::selection::remove::approved "<BOOL>";
+dpkg::remove::crossgrade::implicit "<BOOL>";
+dpkg::selection::current::saveandrestore "<BOOL>";
+dpkg::use-pty "<BOOL>";
+
+apt::cmd::disable-script-warning "<BOOL>";
+apt::cmd::show-update-stats "<BOOL>";
+apt::cmd::use-format "<BOOL>";
+apt::cmd::manual-installed "<BOOL>";
+apt::cmd::upgradable "<BOOL>";
+apt::cmd::installed "<BOOL>";
+apt::cmd::list-include-summary "<BOOL>";
+apt::cmd::use-regexp "<BOOL>";
+apt::cmd::all-versions "<BOOL>";
+apt::cmd::format "<STRING>";
+
+apt::config::dump::emptyvalue "<BOOL>";
+apt::config::dump::format "<STRING>";
+
+apt::mark::simulate "<BOOL>";
+apt::markauto::verbose "<BOOL>";
+apt::sortpkgs::source "<BOOL>";
+apt::extracttemplates::tempdir "<STRING>";
+
+apt::key::archivekeyring "<STRING>";
+apt::key::removedkeys "<STRING>";
+apt::key::gpgvcommand "<STRING>";
+apt::key::gpgcommand "<STRING>";
+apt::key::masterkeyring "<STRING>";
+apt::key::archivekeyringuri "<STRING>";
+apt::key::net-update-enabled "<STRING>";
+
+apt::ftparchive::release::patterns "<LIST>";
+apt::ftparchive::release::validtime "<INT>";
+apt::ftparchive::by-hash-keep "<INT>";
+apt::ftparchive::delinkact "<BOOL>";
+apt::ftparchive::md5 "<BOOL>";
+apt::ftparchive::sha1 "<BOOL>";
+apt::ftparchive::sha256 "<BOOL>";
+apt::ftparchive::sha512 "<BOOL>";
+apt::ftparchive::dobyhash "<BOOL>";
+apt::ftparchive::showcachemisses "<BOOL>";
+apt::ftparchive::sources::md5 "<BOOL>";
+apt::ftparchive::sources::sha1 "<BOOL>";
+apt::ftparchive::sources::sha256 "<BOOL>";
+apt::ftparchive::sources::sha512 "<BOOL>";
+apt::ftparchive::packages::md5 "<BOOL>";
+apt::ftparchive::packages::sha1 "<BOOL>";
+apt::ftparchive::packages::sha256 "<BOOL>";
+apt::ftparchive::packages::sha512 "<BOOL>";
+apt::ftparchive::dobyhash "<BOOL>";
+apt::ftparchive::readonlydb "<BOOL>";
+apt::ftparchive::nooverridemsg "<BOOL>";
+apt::ftparchive::alwaysstat "<BOOL>";
+apt::ftparchive::contents "<BOOL>";
+apt::ftparchive::contentsonly "<BOOL>";
+apt::ftparchive::longdescription "<BOOL>";
+apt::ftparchive::includearchitectureall "<BOOL>";
+apt::ftparchive::architecture "<STRING>";
+apt::ftparchive::db "<STRING>";
+apt::ftparchive::sourceoverride "<STRING>";
+
+apt-helper::cat-file::compress "<STRING>";
+
+acquire::cdrom::mount "<DIR>";
+acquire::maxreleasefilesize "<INT>";
+acquire::queuehost::limit "<INT>";
+acquire::max-pipeline-depth "<INT>";
+acquire::allowinsecurerepositories "<BOOL>";
+acquire::allowweakrepositories "<BOOL>";
+acquire::allowdowngradetoinsecurerepositories "<BOOL>";
+acquire::progress::diffpercent "<BOOL>";
+acquire::gzipindexes "<BOOL>";
+acquire::indextargets::randomized "<BOOL>";
+acquire::indextargets::deb::** "<UNDEFINED>";
+acquire::indextargets::deb-src::** "<UNDEFINED>";
+acquire::progress::ignore::showerrortext "<BOOL>";
+acquire::*::dl-limit "<INT>"; // catches file: and co which do not have these
+methods::mirror::problemreporting "<STRING>";
+acquire::http::proxyautodetect "<STRING>";
+acquire::http::proxy-auto-detect "<STRING>";
+acquire::http::proxy::* "<STRING>";
+acquire::https::proxyautodetect "<STRING>";
+acquire::https::proxy-auto-detect "<STRING>";
+acquire::https::proxy::* "<STRING>";
+
+// Options used by apt-ftparchive
+dir::archivedir "<DIR>";
+dir::cachedir "<DIR>";
+dir::overridedir "<DIR>";
+filemode "<INT>";
+longdescription "<BOOL>";
+external-links "<BOOL>";
+default::contentsage "<INT>";
+default::maxcontentschange "<INT>";
+default::filemode "<INT>";
+default::longdescription "<BOOL>";
+default::translation::compress "<STRING>";
+default::contents::compress "<STRING>";
+default::sources::compress "<STRING>";
+default::packages::compress "<STRING>";
+default::sources::extensions "<STRING>";
+default::packages::extensions "<STRING>";
+treedefault::directory "<STRING>";
+treedefault::srcdirectory "<STRING>";
+treedefault::packages "<STRING>";
+treedefault::translation "<STRING>";
+treedefault::internalprefix "<STRING>";
+treedefault::contents "<STRING>";
+treedefault::contents::header "<STRING>";
+treedefault::bincachedb "<STRING>";
+treedefault::srccachedb "<STRING>";
+treedefault::sources "<STRING>";
+treedefault::filelist "<STRING>";
+treedefault::sourcefilelist "<STRING>";
+sections "<STRING>";
+architectures "<STRING>";
+binoverride "<STRING>";
+internalprefix "<STRING>";
+bincachedb "<STRING>";
+directory "<STRING>";
+packages "<STRING>";
+translation "<STRING>";
+contents "<STRING>";
+filelist "<STRING>";
+extraoverride "<STRING>";
+pathprefix "<STRING>";
+srcdirectory "<STRING>";
+sources "<STRING>";
+sourcefilelist "<STRING>";
+srcextraoverride "<STRING>";
+srccachedb "<STRING>";
+srcoverride "<STRING>";
+contents::header "<STRING>";
+packages::compress "<STRING>";
+sources::compress "<STRING>";
+contents::compress "<STRING>";
+translation::compress "<STRING>";
+sources::extensions "<STRING>";
+packages::extensions "<STRING>";
+dir::filelistdir "<STRING>";
+
+// Internal code.
+dir::dpkg::tupletable "<FILE>";
+dir::dpkg::triplettable "<FILE>";
+dir::dpkg::cputable "<FILE>";
diff --git a/doc/examples/ftp-archive.conf b/doc/examples/ftp-archive.conf
new file mode 100644
index 000000000..4f4b00852
--- /dev/null
+++ b/doc/examples/ftp-archive.conf
@@ -0,0 +1,81 @@
+/* This configuration file describes the standard Debian distribution
+ as it once looked */
+
+Dir
+{
+ ArchiveDir "/org/ftp.debian.org/ftp/";
+ OverrideDir "/org/ftp.debian.org/scripts/override/";
+ CacheDir "/org/ftp.debian.org/scripts/cache/";
+};
+
+Default
+{
+ Packages::Compress ". gzip";
+ Sources::Compress "gzip";
+ Contents::Compress "gzip";
+ DeLinkLimit 10000; // 10 Meg delink per day
+ MaxContentsChange 10000; // 10 Meg of new contents files per day
+};
+
+TreeDefault
+{
+ Contents::Header "/org/ftp.debian.org/scripts/masterfiles/Contents.top";
+ BinCacheDB "packages-$(ARCH).db";
+
+ // These are all defaults and are provided for completeness
+ Directory "$(DIST)/$(SECTION)/binary-$(ARCH)/";
+ Packages "$(DIST)/$(SECTION)/binary-$(ARCH)/Packages";
+
+ SrcDirectory "$(DIST)/$(SECTION)/source/";
+ Sources "$(DIST)/$(SECTION)/source/Sources";
+
+ Contents "$(DIST)/Contents-$(ARCH)";
+};
+
+tree "dists/woody"
+{
+ Sections "main contrib non-free";
+ Architectures "alpha arm hurd-i386 i386 m68k powerpc sparc sparc64 source";
+ BinOverride "override.woody.$(SECTION)";
+ SrcOverride "override.woody.$(SECTION).src";
+};
+
+tree "dists/potato"
+{
+ Sections "main contrib non-free";
+ Architectures "alpha arm i386 m68k powerpc sparc source";
+ BinOverride "override.potato.$(SECTION)";
+ SrcOverride "override.woody.$(SECTION).src";
+};
+
+tree "dists/slink"
+{
+ Sections "main contrib non-free";
+ Architectures "alpha i386 m68k sparc source";
+ BinOverride "override.slink.$(SECTION)";
+ SrcOverride "override.woody.$(SECTION).src";
+ External-Links false; // Slink should contain no links outside itself
+};
+
+
+bindirectory "project/experimental"
+{
+ Sources "project/experimental/Sources";
+ Packages "project/experimental/Packages";
+
+ BinOverride "override.experimental";
+ BinCacheDB "packages-experimental.db";
+ SrcOverride "override.experimental.src";
+};
+
+bindirectory "dists/proposed-updates"
+{
+ Packages "project/proposed-updates/Packages";
+ Contents "project/proposed-updates/Contents";
+
+ BinOverride "override.slink.all3";
+ BinOverride "override.slink.all3.src";
+ BinCacheDB "packages-proposed-updates.db";
+};
+
+
diff --git a/doc/examples/preferences b/doc/examples/preferences
new file mode 100644
index 000000000..7ebc52a41
--- /dev/null
+++ b/doc/examples/preferences
@@ -0,0 +1,11 @@
+Package: *
+Pin: release a=stable
+Pin-Priority: 500
+
+Package: *
+Pin: release a=testing
+Pin-Priority: 101
+
+Package: *
+Pin: release a=unstable
+Pin-Priority: 99