4.23 apt-ftparchive

apt-ftparchive erzeugt Index-Dateien, die von apt benutzt werden können, um auf ein Paketverzeichnis zuzugreifen. Die Funktionalität ist vergleichbar mit der von dpkg-scanpackages und dpkg-scansources; apt-ftparchive kann diese Programme ersetzen.

Die Syntax von apt-ftparchive lautet:

apt-ftparchive [-hvdsq] [--md5] [--delink] [--readonly] [--contents] 
    [-o= config string] [-c=file] {packages path... [override [pathprefix]] |
    sources path... [override [pathprefix]] | contents path | release path |
    generate config-file section... | clean config-file}
		

Intern verwendet apt-ftparchive eine (binäre) Datenbank, die die Informationen zu den Debian Paketen zwischenspeichert. Es werden, mit Ausnahme von gzip , keine weiteren externen Programme benötigt.

Kommandos

packages

Das packages-Kommando erzeugt einen Paket-Index (Datei Packages) aus dem angegeben Verzeichnis. Dieses wird dazu rekursiv nach Debian Paketen durchsucht. Jedes gefundene Debian Paket wird analysiert, und es wird ein entsprechender Eintrag für die Packages-Datei erzeugt. Die Ausgabe erfolgt auf der Standardausgabe und muss in die gewünschte Datei umgeleitet werden (meist Packages). Dieses Kommando entspricht im Wesentlichen dem Befehl dpkg-scanpackages.

Mit der Option --db kann die Verwendung einer binären Datenbank zur Zwischenspeicherung der Ergebnisse aktiviert werden.

sources

Erzeugt eine Index-Datei für Quellcode-Pakete aus dem angegebenen Verzeichnisbaum. Dabei wird nach Dateien mit der Endung .dsc gesucht, und es wird für jede gefundene Datei ein Eintrag auf der Standardausgabe erzeugt. Dieses Kommando ähnelt dpkg-scansources .

Mit der Option --source-override kann eine andere Override-Datei verwendet werden.

contents

Mit diesem Kommando wird die Datei Contents erzeugt. Das angegebene Verzeichnis wird rekursiv nach Debian Paketen durchsucht, jedes Paket wird analysiert, und die in dem Paket enthaltenen Dateien werden, in sortierter Reihenfolge, in der Contents-Datei vermerkt. Verzeichnisse, die keine Dateien beinhalten, werden nicht in die Auflistung aufgenommen. Ist eine Datei in mehreren Paketen enthalten, so werden diese Pakete - durch Komma getrennt - in der Auflistung aufgeführt.

Mit der Option --db kann die Verwendung einer binären Datenbank zur Zwischenspeicherung der Ergebnisse aktiviert werden.

release

Dieses Kommando dient zum Erzeugen einer Release-Datei. Das angegebene Verzeichnis wird rekursiv nach den Dateien Packages, Packages.gz, Packages.bz2, Sources, Sources.gz, Sources.bz2, Release und md5sum.txt durchsucht. Auf der Standardausgabe wird darauf basierend eine Ausgabe erzeugt, die einen MD5- und SHA1-Extract für jede Datei enthält.

Weitere Felder mit Metadaten können über die Konfigurationsdatei eingefügt werden. Hierzu dient die Variable APT::FTPArchive::Release. Eine erlaubte Angabe kann beispielsweise APT::FTPArchive::Release::Origin sein. Erlaubte Werte sind hier Origin, Label, Suite, Version, Codename, Date, Architectures, Components und Description.

generate

Dieses Kommando wird im Allgemeinen aus einem Cron-Job heraus aufgerufen und erzeugt Index-Dateien aus einer Konfigurationsdatei.

clean

Dieses Kommando löscht alle nicht mehr benötigten Einträge aus den Datenbanken, die in der Konfiguration definiert sind.

apt-ftparchive nutzt eine Konfigurationsdatei, welche mit dem Kommando generate erzeugt werden kann. In dieser Konfigurationsdatei werden die Archive beschrieben, die erzeugt werden sollen. Die Syntax dieser Datei folgt dem üblichen ISC Format, welches auch von Programmen wie bind oder auch dhcpd bekannt ist. Die Manpage zu apt.conf(5) enthält eine Beschreibung dieser Syntax.

Die erzeugte Konfiguration teilt sich in die vier im Folgenden beschriebenen Abschnitte.

Abschnitte der Konfiguration

Dir

Dieser Abschnitt beschreibt die Verzeichnisse, in denen nach Dateien gesucht werden soll. Diese Angaben werden mit Verzeichnisangaben aus späteren Abschnitten verknüpft, um einen absoluten Pfad zu jeder Datei zu erzeugen.

ArchiveDir

Dieser Wert gibt das Wurzelverzeichnis des FTP-Archives an. Dies ist normalerweise das Verzeichnis, in dem sich das Unterverzeichnis dists und die Datei ls-LR befinden.

OverrideDir

Gibt an, wo sich die Override-Dateien befinden.

CacheDir

Pfadangabe zu den Cache-Dateien.

FileListDir

Wird die weiter unten beschriebene Option FileList genutzt, so kann hier ein Verzeichnis angegeben werden, in dem Dateilisten abgelegt werden.

Default

Dieser Abschnitt setzt einige Vorgabewerte, diese können in anderen Abschnitten überschrieben werden.

Packages::Compress

Bestimmt den verwendeten Kompressionsalgorythmus, um die Packages-Dateien zu komprimieren. Dieser Wert ist ein String, in dem die einzelnen Werte durch Leerzeichen (Space) getrennt werden. Es sind die Werte gzip, bzip2 und . (für keine Kompression) erlaubt. Wird dieser Wert nicht angegeben, so wird gzip verwendet.

Packages::Extensions

Bestimmt die Dateiendung für Debian Pakete, dies ist normalerweise .deb.

Sources::Compress

Wie Packages::Compress, jedoch für Quellcode Pakete.

Sources::Extensions

Dateiendung für Quell-Codepakete, normalerweise .dsc.

Contents::Compress

Wie bei Packages::Compress, jedoch für das Komprimieren der Packages-Dateien.

DeLinkLimit

Wert in Kilobyte der Dateien, die gelöscht und durch Hard-Links ersetzt werden sollen. Dies ist sinnvoll im Zusammenhang mit Einstellungen für externe Links.

FileMode

Setzt die Zugriffsrechte für alle erzeugten Index-Dateien. Voreingestellt ist der Wert 0644. Diese Rechte werden unabhängig von einem eventuell via umask gesetzten Wert verwendet.

TreeDefault

Diese Variablen wirken sich nur auf die folgenden Abschnitte zum Verzeichnisbaum aus. Alle Variablen werden substituiert, und die Strings $(DIST), $(SECTION) und $(ARCH) werden in die entsprechenden Inhalte umgesetzt.

MaxContentsChange

Bestimmt die maximale Anzahl von Kilobyte der Contents- Dateien, die pro Tag erzeugt werden. Die Contents-Dateien werden rotiert, so dass nach ein paar Tagen alle Dateien neu erzeugt wurden.

ContentsAge

Setzt die maximale Anzahl von Tagen, die eine Contents-Datei überprüft wird, ohne eine Veränderung vorzunehmen. Ist dieses Limit überschritten, so wird die mtime dieser Datei überschrieben.

Es kann vorkommen, dass eine Contents-Datei nicht verändert werden muss, obwohl die Packages-Datei eine Änderung erfahren hat. Dies ist beispielsweise der Fall, wenn das Paket nicht verändert wurde, aber Informationen in der Override-Datei verändert wurden.

Directory

Setzt das Wurzelverzeichnis für den Verzeichnisbaum mit Debian Binär-Paketen. Wird nichts angegeben, so wird $(DIST)/$(SECTION)/binary-$(ARCH)/ verwendet.

SrcDirectory

Setzt das Wurzelverzeichnis für den Verzeichnisbaum mit Debian Quellcode-Paketen. Wird nichts angegeben, so wird $(DIST)/$(SECTION)/source/ verwendet.

Packages

Setzt den Dateinamen der Datei für die Packages-Datei. Voreingestellt ist $(DIST)/$(SECTION)/binary-$(ARCH)/Packages.

Sources

Setzt den Dateinamen der Datei für die Sources-Datei. Voreingestellt ist $(DIST)/$(SECTION)/source/Sources.

InternalPrefix

Setzt den Prefix, der bei einem symbolischen Link dazu führt, dass ein interner statt eines externen Links verwendet wird. Voreingestellt ist $(DIST)/$(SECTION)/.

Contents

Setzt den Dateinamen und Pfad für die erzeugte Contents-Datei. Voreingestellt ist $(DIST)/Contents-$(ARCH). Führt diese Einstellung dazu, dass die Informationen aus verschiedenen Packages-Dateien in einer einzigen Contents-Datei zusammengefasst werden, so wird dies von apt-ftparchive automatisch gehandelt.

Contents::Header

Setzt einen Header, welcher an den Anfang der Contents-Datei geschrieben wird.

BinCacheDB

Setzt eine binäre Datenbank für diesen Abschnitt, diese kann auch von anderen Abschnitten gemeinsam genutzt werden.

FileList

Diese Option gibt an, dass die Liste der Dateien nicht mittels Durchsuchens des Verzeichisbaumes erzeugt werden soll, sondern die Informationen aus einer Datei gelesen werden. Relative Dateinamen werden mit dem Pfad des Archive-Verzeichnisses versehen.

SourceFileList

Diese Option gibt an, dass die Liste der Dateien nicht mittels Durchsuchens des Verzeichisbaumes erzeugt werden soll, sondern die Informationen aus einer Datei gelesen werden. Relative Dateinamen werden mit dem Pfad des Archive-Verzeichnisses versehen. Diese Option wird für Quellcode-Indices verwendet.

Tree

Dieser Abschnitt beschreibt den Verzeichnisbaum, welcher aus einem Basisverzeichnis, darunter liegenden Verzeichnissen für die verschiedenen Abschnitte und darin Verzeichnissen für die Architekturen besteht.

In diesem Abschnitt wird die Variable $(DIST) benutzt, welche das Hauptverzeichnis für den Verzeichnisbaum darstellt. Zusammen mit dem Wert für ArchiveDir ergibt dies üblicherweise so etwas wie dists/sarge.

Alle Werte, die im Abschnitt TreeDefault benutzt werden, können auch in diesem Abschnitt gesetzt werden, hinzu kommen drei neue Variablen.

Sections

Eine mittels Leerzeichen (SPACE) separierte Liste von Abschnitten, die unterhalb der Angabe der Distribution aufgeführt werden, meistens ist dies main, contrib und non-free.

Architectures

Eine mittels Leerzeichen (SPACE) separierte Liste von Architekturen, die unterhalb der Angabe des Abschnittes Sections aufgeführt werden, meistens ist dies i386, möglich ist aber auch powerpc, sparc usw. Der Wert source ist für Quellcode-Distributionen vorgesehen.

BinOverride

Setzt den Pfad und Dateinamen für die Override-Datei für Binär-Pakete. In der Override-Datei sind Informationen zum Abschnitt und der Priorität eines Paketes sowie die Mail-Adresse des Maintainers enthalten.

SrcOverride

Wie BinOverride, jedoch für Quellcode-Pakete. Diese Override-Datei enthält Informationen zum Abschnitt.

ExtraOverride

Die Override-Datei Extra-Pakete.

SrcExtraOverride

Die Override-Datei Quellcode Extra-Pakete.

BinDirectory

Dieser Abschnitt beschreibt ein Verzeichnis für Binär-Pakete ohne eine besondere Struktur.

Packages

Pfad und Dateiname der Packages-Datei.

SrcPackages

Pfad und Dateiname der Packages-Datei für Quellcode-Pakete. Es muss einer der beiden Werte für Packages oder SrcPackages gesetzt sein.

Contents

Die Contents-Datei, ein optionaler Wert.

BinOverride

Die binäre Override-Datei.

SrcOverride

Die Quellcode Override-Datei.

ExtraOverride

Override-Datei für Extras.

SrcExtraOverride

Override-Datei für Extra Quellcode-Pakete.

BinCacheDB

Pfad und Dateiname zur Datenbank.

PathPrefix

Pfad zu allen Ausgabedateien.

FileList und SourceFileList

Datei mit Liste der Dateien.

4.23.1 binary-override

Diese Datei ist voll kompatibel mit dem Programm dpkg-scanpackages. Sie enthält vier Spalten, welche durch Leerzeichen getrennt werden. In der ersten Spalte steht der Paketname, in der zweiten die Priorität, welche für dieses Paket gesetzt werden soll. Die dritte Spalte beschreibt den Abschnitt, in dem das Paket gelistet werden soll, die vierte Spalte nennt den Betreuer des Paketes.

In der vierten Spalte kann, neben einem Namen, welcher dann ersetzt wird, auch eine Liste von Namen aufgeführt werden. Diese Namen müssen durch doppelte Slashes (//) getrennt und von eckigen Klammern umschlossen werden. Wird einer der aufgeführten Einträge gefunden, so wird dieser durch den neuen Wert ersetzt. Die Syntax hierfür lautet:

old [// oldn]* => new
		

4.23.2 source-override

Diese Datei ist voll kompatibel mit dem Programm dpkg-scanpackages. Der Inhalt dieser Datei besteht aus zwei Spalten, durch Leerzeichen getrennt. Die erste Spalte enthält den Namen des Quellcode-Paketes, die zweite Spalte den Abschnitt, in dem das Paket aufgeführt werden soll.

4.23.3 extra-override

Diese Datei erlaubt es, neue Tags hinzuzufügen oder bestehende Tags zu verändern. In drei Spalten wird zunächst der Paketname, dann der Tag-Name und zuletzt der Inhalt des Tag aufgeführt.

Alle Optionen, die auf der Kommandozeile übergeben werden, können auch in der Konfigurationsdatei gesetzt werden. Logische Operatoren können dabei in der Form -f-, --no-f, -f=no angeben werden.

Optionen

--md5

Erzeugt MD5-Checksummen der Pakete. Diese werden in die generierten Index-Dateien aufgenommen. Wird diese Option deaktiviert, so werden keine MD5-Checksummen erzeugt, soweit dies möglich ist. Der entsprechende Eintrag in der Konfigurationsdatei lautet APT::FTPArchive::MD5.

-d, --db

Benutzt eine Cache-Datenbank in einem binären Format zur Verbesserung der Zugriffszeiten. Der entsprechende Eintrag in der Konfigurationsdatei lautet APT::FTPArchive::DB.

-q, --quiet

Erzeugt weniger Ausgaben; es werden zunächst keine Fortschrittsanzeigen ausgegeben. Diese Option kann auch doppelt eingesetzt (oder mit der Syntax -q=2) werden, um den Effekt zu verstärken. Der entsprechende Eintrag in der Konfigurationsdatei lautet quiet.

--delink

Aktiviert das Löschen von Dateien. Deaktiviert wird dieses Verhalten durch die Option --no-delink. Der entsprechende Eintrag in der Konfigurationsdatei lautet APT::FTPArchive::DeLinkAct.

--contents

Mit dieser Option lassen sich Contents-Dateien erzeugen, als Basis werden die Informationen aus der Cache-Datenbank genommen. Der entsprechende Eintrag in der Konfigurationsdatei lautet APT::FTPArchive::Contents.

-s, --source-override

Gibt in Zusammenhang mit dem source-Kommando die Source-Override-Datei an. Der entsprechende Eintrag in der Konfigurationsdatei lautet APT::FTPArchive::SourceOverride.

--readonly

Öffnet die Cache-Datenbank im Nur-lesen-Modus. Der entsprechende Eintrag in der Konfigurationsdatei lautet APT::FTPArchive::ReadOnlyDB.

-h, --help

Gibt eine Hilfe zu apt-ftparchive aus.

-v, --version

Zeigt die Version des Programms an.

-c, --config-file

Gibt den Namen einer Konfigurationsdatei an. Zunächst wird die Standard-Konfigurationsdatei gelesen, danach die mit dieser Option übergebene Konfigurationsdatei. Die Syntax entspricht der Datei apt.conf, siehe apt.conf .

-o, --option

Hiermit kann eine beliebige Option gesetzt werden, die Syntax lautet -o Foo::Bar=bar.

Um nun beispielsweise eine komprimierte Datei Packages.gz für ein Verzeichnis mit einigen Binär-Paketen zu erzeugen, kann apt-ftparchive wie folgt benutzt werden:

apt-ftparchive packages directory | gzip > Packages.gz
	

 Impressum