summaryrefslogtreecommitdiff
path: root/doc/apt-ftparchive.1.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/apt-ftparchive.1.sgml')
-rw-r--r--doc/apt-ftparchive.1.sgml507
1 files changed, 507 insertions, 0 deletions
diff --git a/doc/apt-ftparchive.1.sgml b/doc/apt-ftparchive.1.sgml
new file mode 100644
index 000000000..f05765650
--- /dev/null
+++ b/doc/apt-ftparchive.1.sgml
@@ -0,0 +1,507 @@
+<!-- -*- mode: sgml; mode: fold -*- -->
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
+
+<!ENTITY % aptent SYSTEM "apt.ent">
+%aptent;
+
+]>
+
+<refentry>
+ &apt-docinfo;
+
+ <refmeta>
+ <refentrytitle>apt-ftparchive</>
+ <manvolnum>1</>
+ </refmeta>
+
+ <!-- Man page title -->
+ <refnamediv>
+ <refname>apt-ftparchive</>
+ <refpurpose>Utility to generate index files</>
+ </refnamediv>
+
+ <!-- Arguments -->
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>apt-ftparchive</>
+ <arg><option>-hvdsq</></arg>
+ <arg><option>--md5</></arg>
+ <arg><option>--delink</></arg>
+ <arg><option>--readonly</></arg>
+ <arg><option>--contents</></arg>
+ <arg><option>-o=<replaceable/config string/</></arg>
+ <arg><option>-c=<replaceable/file/</></arg>
+ <group choice=req>
+ <arg>packages<arg choice="plain" rep="repeat"><replaceable>path</replaceable></arg><arg><replaceable>override</replaceable><arg><replaceable>pathprefix</replaceable></arg></arg></arg>
+ <arg>sources<arg choice="plain" rep="repeat"><replaceable>path</replaceable></arg><arg><replaceable>override</replaceable><arg><replaceable>pathprefix</replaceable></arg></arg></arg>
+ <arg>contents <arg choice="plain"><replaceable>path</replaceable></arg></arg>
+ <arg>generate <arg choice="plain"><replaceable>config-file</replaceable></arg> <arg choice="plain" rep="repeat"><replaceable>section</replaceable></arg></arg>
+ <arg>clean <arg choice="plain"><replaceable>config-file</replaceable></arg></arg>
+ </group>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <RefSect1><Title>Description</>
+ <para>
+ <command/apt-ftparchive/ is the command line tool that generates the index
+ files that APT uses to access a distribution source. The index files should
+ be generated on the origin site based on the content of that site.
+
+ <para>
+ <command/apt-ftparchive/ is a superset of the &dpkg-scanpackages; program,
+ incorporating it's entire functionality via the <literal/directory/ command.
+ It also contains a contents file generator, <literal/contents/, and an
+ elaborate means to 'script' the generation process for a complete
+ archive.
+
+ <para>
+ Internally <command/apt-ftparchive/ can make use of binary databases to
+ cache the contents of a .deb file and it does not rely on any external
+ programs aside from &gzip;. When doing a full generate it automatically
+ performs file-change checks and builds the desired compressed output files.
+
+ <para>
+ Unless the <option/-h/, or <option/--help/ option is given one of the above
+ commands must be present.
+
+ <VariableList>
+ <VarListEntry><term>packages</term>
+ <ListItem><Para>
+ The packages command generates a package file from a directory tree. It
+ takes the given directory and recursively searches it for .deb files,
+ emitting a package record to stdout for each. This command is
+ approximately equivalent to &dpkg-scanpackages;.
+ <para>
+ The option <option/--db/ can be used to specify a binary caching DB.
+ </VarListEntry>
+
+ <VarListEntry><term>sources</term>
+ <ListItem><Para>
+ The <literal/sources/ command generates a source index file from a directory tree.
+ It takes the given directory and recursively searches it for .dsc files,
+ emitting a source record to stdout for each. This command is approximately
+ equivalent to &dpkg-scansources;.
+ <para>
+ If an override file is specified then a source override file will be
+ looked for with an extension of .src. The --source-override option can be
+ used to change the source override file that will be used.
+ </VarListEntry>
+
+ <VarListEntry><term>contents</term>
+ <ListItem><Para>
+ The <literal/contents/ command generates a contents file from a directory tree. It
+ takes the given directory and recursively searches it for .deb files,
+ and reads the file list from each file. It then sorts and writes to stdout
+ the list of files matched to packages. Directories are not written to
+ the output. If multiple packages own the same file then each package is
+ separated by a comma in the output.
+ <para>
+ The option <option/--db/ can be used to specify a binary caching DB.
+ </VarListEntry>
+
+ <VarListEntry><term>generate</term>
+ <ListItem><Para>
+ The <literal/generate/ command is designed to be runnable from a cron script and
+ builds indexes according to the given config file. The config language
+ provides a flexible means of specifying which index files are built from
+ which directories, as well as providing a simple means of maintaining the
+ required settings.
+ </VarListEntry>
+
+ <VarListEntry><term>clean</term>
+ <ListItem><Para>
+ The <literal/clean/ command tidies the databases used by the given
+ configuration file by removing any records that are no longer necessary.
+ </VarListEntry>
+ </VariableList>
+
+ </RefSect1>
+
+ <RefSect1><Title>The Generate Configuration</>
+ <para>
+ The <literal/generate/ command uses a configuration file to describe the
+ archives that are going to be generated. It follows the typical ISC
+ configuration format as seen in ISC tools like bind 8 and dhcpd.
+ &apt-conf; contains a decsription of the syntax. Note that the generate
+ configuration is parsed in sectional manner, but &apt-conf; is parsed in a
+ tree manner. This only effects how the scope tag is handled.
+
+ <para>
+ The generate configuration has 4 separate sections, each decribed below.
+
+ <refsect2><title>Dir Section</>
+ <Para>
+ The <literal/Dir/ section defines the standard directories needed to
+ locate the files required during the generation process. These
+ directories are prepended to certain relative paths defined in later
+ sections to produce a complete an absolute path.
+ <VariableList>
+ <VarListEntry><term>ArchiveDir</term>
+ <ListItem><Para>
+ Specifies the root of the FTP archive, in a standard
+ Debian configuration this is the directory that contains the
+ <filename/ls-LR/, and dist nodes.
+ </VarListEntry>
+
+ <VarListEntry><term>OverrideDir</term>
+ <ListItem><Para>
+ Specifies the location of the override files.
+ </VarListEntry>
+
+ <VarListEntry><term>CacheDir</term>
+ <ListItem><Para>
+ Specifies the location of the cache files
+ </VarListEntry>
+
+ <VarListEntry><term>FileListDir</term>
+ <ListItem><Para>
+ Specifies the location of the file list files,
+ if the <literal/FileList/ setting is used below.
+ </VarListEntry>
+ </VariableList>
+ </refsect2>
+
+ <refsect2><title>Default Section</>
+ <para>
+ The <literal/Default/ section specifies default values, and settings
+ that control the operation of the generator. Other sections may override
+ these defaults with a per-section setting.
+ <VariableList>
+ <VarListEntry><term>Packages::Compress</term>
+ <ListItem><Para>
+ Sets the default compression schemes to use
+ for the Package index files. It is a string that contains a space
+ separated list of at least one of: '.' (no compression), 'gzip' and
+ 'bzip2'. The default for all compression schemes is '. gzip'.
+ </VarListEntry>
+
+ <VarListEntry><term>Packages::Extensions</term>
+ <ListItem><Para>
+ Sets the default list of file extensions that are package files.
+ This defaults to '.deb'.
+ </VarListEntry>
+
+ <VarListEntry><term>Sources::Compress</term>
+ <ListItem><Para>
+ This is similar to <literal/Packages::Compress/
+ except that it controls the compression for the Sources files.
+ </VarListEntry>
+
+ <VarListEntry><term>Sources::Extensions</term>
+ <ListItem><Para>
+ Sets the default list of file extensions that are source files.
+ This defaults to '.dsc'.
+ </VarListEntry>
+
+ <VarListEntry><term>Contents::Compress</term>
+ <ListItem><Para>
+ This is similar to <literal/Packages::Compress/
+ except that it controls the compression for the Contents files.
+ </VarListEntry>
+
+ <VarListEntry><term>DeLinkLimit</term>
+ <ListItem><Para>
+ Specifies the number of kilobytes to delink (and
+ replace with hard links) per run. This is used in conjunction with the
+ per-section <literal/External-Links/ setting.
+ </VarListEntry>
+
+ <VarListEntry><term>FileMode</term>
+ <ListItem><Para>
+ Specifies the mode of all created index files. It
+ defaults to 0644. All index files are set to this mode with no regard
+ to the umask.
+ </VarListEntry>
+ </VariableList>
+ </refsect2>
+
+ <refsect2><title>TreeDefault Section</>
+ <para>
+ Sets defaults specific to <literal/Tree/ sections. All of these
+ variables are substitution variables and have the strings $(DIST),
+ $(SECTION) and $(ARCH) replaced with their respective values.
+
+ <VariableList>
+ <VarListEntry><term>MaxContentsChange</term>
+ <ListItem><Para>
+ Sets the number of kilobytes of contents
+ files that are generated each day. The contents files are round-robined
+ so that over several days they will all be rebuilt.
+ </VarListEntry>
+
+ <VarListEntry><term>ContentsAge</term>
+ <ListItem><Para>
+ Controls the number of days a contents file is allowed
+ to be checked without changing. If this limit is passed the mtime of the
+ contents file is updated. This case can occur if the package file is
+ changed in such a way that does not result in a new contents file
+ [overried edit for instance]. A hold off is allowed in hopes that new
+ .debs will be installed, requiring a new file anyhow. The default is 10,
+ the units are in days.
+ </VarListEntry>
+
+ <VarListEntry><term>Directory</term>
+ <ListItem><Para>
+ Sets the top of the .deb directory tree. Defaults to
+ <filename>$(DIST)/$(SECTION)/binary-$(ARCH)/</>
+ </VarListEntry>
+
+ <VarListEntry><term>Packages</term>
+ <ListItem><Para>
+ Sets the output Packages file. Defaults to
+ <filename>$(DIST)/$(SECTION)/binary-$(ARCH)/Packages</>
+ </VarListEntry>
+
+ <VarListEntry><term>Sources</term>
+ <ListItem><Para>
+ Sets the output Packages file. Defaults to
+ <filename>$(DIST)/$(SECTION)/source/Sources</>
+ </VarListEntry>
+
+ <VarListEntry><term>InternalPrefix</term>
+ <ListItem><Para>
+ Sets the path prefix that causes a symlink to be
+ considered an internal link instead of an external link. Defaults to
+ <filename>$(DIST)/$(SECTION)/</>
+ </VarListEntry>
+
+ <VarListEntry><term>Contents</term>
+ <ListItem><Para>
+ Sets the output Contents file. Defaults to
+ <filename>$(DIST)/Contents-$(ARCH)</>. If this setting causes multiple
+ Packages files to map onto a single Contents file (such as the default)
+ then <command/apt-ftparchive/ will integrate those package files
+ together automatically.
+ </VarListEntry>
+
+ <VarListEntry><term>Contents::Header</term>
+ <ListItem><Para>
+ Sets header file to prepend to the contents output.
+ </VarListEntry>
+
+ <VarListEntry><term>BinCacheDB</term>
+ <ListItem><Para>
+ Sets the binary cache database to use for this
+ section. Multiple sections can share the same database.
+ </VarListEntry>
+
+ <VarListEntry><term>FileList</term>
+ <ListItem><Para>
+ Specifies that instead of walking the directory tree
+ that <command/apt-ftparchive/ should read the list of files from the given
+ file. Relative files names are prefixed with the archive directory.
+ </VarListEntry>
+
+ <VarListEntry><term>SourceFileList</term>
+ <ListItem><Para>
+ Specifies that instead of walking the directory tree
+ that <command/apt-ftparchive/ should read the list of files from the given
+ file. Relative files names are prefixed with the archive directory.
+ This is used when processing source indexs.
+ </VarListEntry>
+ </VariableList>
+ </refsect2>
+
+ <refsect2><title>Tree Section</>
+ <para>
+ The <literal/Tree/ section defines a standard Debian file tree which
+ consists of a base directory, then multiple sections in that base
+ directory and finally multiple Architectures in each section. The exact
+ pathing used is defined by the <literal/Directory/ substitution variable.
+ <para>
+ The <literal/Tree/ section takes a scope tag which sets the
+ <literal/$(DIST)/ variable and defines the root of the tree
+ (the path is prefixed by <literal/ArchiveDir/).
+ Typically this is a setting such as <filename>dists/woody</>.
+ <para>
+ All of the settings defined in the <literal/TreeDefault/ section can be
+ use in a <literal/Tree/ section as well as three new variables.
+ <para>
+ When processing a <literal/Tree/ section <command/apt-ftparchive/
+ performs an operation similar to:
+<informalexample><programlisting>
+for i in Sections do
+ for j in Architectures do
+ Generate for DIST=scope SECTION=i ARCH=j
+</programlisting></informalexample>
+
+ <VariableList>
+ <VarListEntry><term>Sections</term>
+ <ListItem><Para>
+ This is a space separated list of sections which appear
+ under the distribution, typically this is something like
+ <literal/main contrib non-free/.
+ </VarListEntry>
+
+ <VarListEntry><term>Architectures</term>
+ <ListItem><Para>
+ This is a space separated list of all the
+ architectures that appear under seach section. The special architecture
+ 'source' is used to indicate that this tree has a source archive.
+ </VarListEntry>
+
+ <VarListEntry><term>BinOverride</term>
+ <ListItem><Para>
+ Sets the binary override file. The override file
+ contains section, priority and maintainer address information.
+ </VarListEntry>
+
+ <VarListEntry><term>SrcOverride</term>
+ <ListItem><Para>
+ Sets the source override file. The override file
+ contains section information.
+ </VarListEntry>
+ </VariableList>
+ </refsect2>
+
+ <refsect2><title>BinDirectory Section</>
+ <para>
+ The <literal/bindirectory/ section defines a binary directory tree
+ with no special structure. The scope tag specifies the location of
+ the binary directory and the settings are similar to the <literal/Tree/
+ section with no substitution variables or
+ <literal>Section</><literal>Architecture</> settings.
+ <VariableList>
+ <VarListEntry><term>Packages</term>
+ <ListItem><Para>
+ Sets the Packages file output.
+ </VarListEntry>
+
+ <VarListEntry><term>SrcPackages</term>
+ <ListItem><Para>
+ Sets the Sources file output. At least one of
+ <literal/Packages/ or <literal/SrcPackages/ is required.
+ </VarListEntry>
+
+ <VarListEntry><term>Contents</term>
+ <ListItem><Para>
+ Sets the Contents file output. (Optional)
+ </VarListEntry>
+
+ <VarListEntry><term>Binoverride</term>
+ <ListItem><Para>
+ Sets the binary override file.
+ </VarListEntry>
+
+ <VarListEntry><term>SrcOverride</term>
+ <ListItem><Para>
+ Sets the source override file.
+ </VarListEntry>
+
+ <VarListEntry><term>BinCacheDB</term>
+ <ListItem><Para>
+ Sets the cache DB.
+ </VarListEntry>
+
+ <VarListEntry><term>PathPrefix</term>
+ <ListItem><Para>
+ Appends a path to all the output paths.
+ </VarListEntry>
+
+ <VarListEntry><term>FileList, SourceFileList</term>
+ <ListItem><Para>
+ Specifies the file list file.
+ </VarListEntry>
+ </VariableList>
+ </refsect2>
+ </RefSect1>
+
+ <RefSect1><Title>The Binary Override File</>
+ <para>
+ The binary override file is fully compatible with &dpkg-scanpackages;. It
+ contains 4 fields sperated by spaces. The first field is the package name,
+ the second is the priority to force that package to, the third is the
+ the section to force that package to and the final field is the maintainer
+ permutation field.
+ <para>
+ The general form of the maintainer field is:
+ <literallayout>old [// oldn]* => new</literallayout>
+ or simply,
+ <literallayout>new</literallayout>
+ The first form allows a double-slash separated list of old email addresses
+ to be specified. If any of those are found then new is substituted for the
+ maintainer field. The second form unconditionally substitutes the
+ maintainer field.
+ </RefSect1>
+
+ <RefSect1><title>The Source Override File</>
+ <para>
+ The source override file is fully compatible with &dpkg-scansources;. It
+ contains 2 fields separated by spaces. The first fields is the source
+ package name, the second is the section to assign it.
+ </RefSect1>
+
+ <RefSect1><Title>Options</>
+ &apt-cmdblurb;
+
+ <VariableList>
+ <VarListEntry><term><option/--md5/</>
+ <ListItem><Para>
+ Generate MD5 sums. This defaults to on, when turned off the generated
+ index files will not have MD5Sum fields where possible.
+ Configuration Item: <literal/APT::FTPArchive::MD5/.
+ </VarListEntry>
+
+ <VarListEntry><term><option/-d/</><term><option/--db/</>
+ <ListItem><Para>
+ Use a binary caching DB. This has no effect on the generate command.
+ Configuration Item: <literal/APT::FTPArchive::DB/.
+ </VarListEntry>
+
+ <VarListEntry><term><option/-q/</><term><option/--quiet/</>
+ <ListItem><Para>
+ Quiet; produces output suitable for logging, omitting progress indicators.
+ More q's will produce more quiet up to a maximum of 2. You can also use
+ <option/-q=#/ to set the quiet level, overriding the configuration file.
+ Configuration Item: <literal/quiet/.
+ </VarListEntry>
+
+ <VarListEntry><term><option/--delink/</>
+ <ListItem><Para>
+ Perform Delinking. If the <literal/External-Links/ setting is used then
+ this option actually enables delinking of the files. It defaults to on and
+ can be turned off with <option/--no-delink/.
+ Configuration Item: <literal/APT::FTPArchive::DeLinkAct/.
+ </VarListEntry>
+
+ <VarListEntry><term><option/--contents/</>
+ <ListItem><Para>
+ Perform contents generation. When this option is set and package indexes
+ are being generated with a cache DB then the file listing will also be
+ extracted and stored in the DB for later use. When using the generate
+ command this option also allows the creation of any Contents files. The
+ default is on.
+ Configuration Item: <literal/APT::FTPArchive::Contents/.
+ </VarListEntry>
+
+ <VarListEntry><term><option/-s/</><term><option/--source-override/</>
+ <ListItem><Para>
+ Select the source override file to use with the <literal/sources/ command.
+ Configuration Item: <literal/APT::FTPArchive::SourceOverride/.
+ </VarListEntry>
+
+ <VarListEntry><term><option/--readonly/</>
+ <ListItem><Para>
+ Make the caching databases read only.
+ Configuration Item: <literal/APT::FTPArchive::ReadOnlyDB/.
+ </VarListEntry>
+
+ &apt-commonoptions;
+
+ </VariableList>
+ </RefSect1>
+
+ <RefSect1><Title>See Also</>
+ <para>
+ &apt-conf;
+ </RefSect1>
+
+ <RefSect1><Title>Diagnostics</>
+ <para>
+ <command/apt-ftparchive/ returns zero on normal operation, decimal 100 on error.
+ </RefSect1>
+
+ &manbugs;
+ &manauthor;
+
+</refentry>