Kapitel 5. Paketmanagement
Zurück | 5.22 `apt-ftparchive` | Weiter

## 5.22 `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 Standard-Ausgabe 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 Quellcodepakete, 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` gesetztem 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 das 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 durchsuchen des Verzeichisbaumes erzeugt werden soll, sondern die Informationen werden aus einer Datei gelesen. Relative Dateinamen werden mit dem Pfad des Archive-Verzeichnisses versehen.

  SourceFileList

    Diese Option gibt an, dass die Liste der Dateien nicht mittels durchsuchen des Verzeichisbaumes erzeugt werden soll, sondern die Informationen werden aus einer Datei gelesen. 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, darunterliegenden 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 Mailadresse 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.

### 5.22.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 der 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 Name welcher dann ersetzt wird, auch eine Liste von Namen aufgeführt werden. Diese Namen müssen durch doppelte Slashes (`//`) getrennt werden und von eckigen Klammer 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

### 5.22.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.

### 5.22.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

Zurück | Nach oben | Weiter
5.21 `apt-move` | Zum Anfang | 5.23 `apt-show-source`

© 1999-2006 Frank Ronneburg - Dieser Inhalt ist unter einem Creative Commons Namensnennung - Nicht-kommerziell - Keine Bearbeitung Lizenzvertrag lizenziert (creativecommons.org/licenses/by-nc-nd/2.0/de/legalcode).