apt-ftparchive - Dienstprogramm zum Generieren von Indexdateien
apt-ftparchive [-dsq] [--md5] [--delink] [--readonly] [--contents] [--arch architecture] [-o=config_string] [-c=config_file] {packages path [override-file [pathprefix]] | sources path [override-file [pathprefix]] | contents path | release path | generate config_file section... | clean config_file | {-v | --version} | {-h | --help}}
apt-ftparchive ist das Befehlszeilentool, das die Indexdateien generiert, die APT für den Zugriff auf eine Distributionsquelle verwendet. Die Indexdateien sollten auf der Ursprungssite basierend auf dem Inhalt dieser Site generiert werden.
apt-ftparchive ist eine Obermenge des Programms dpkg-scanpackages(1), das seine gesamte Funktionalität über den Paketbefehl einbindet. Es enthält außerdem einen Inhaltsdateigenerator, Inhalte und eine ausgefeilte Möglichkeit, den Generierungsprozess für ein vollständiges Archiv zu skripten.
Intern kann apt-ftparchive Binärdatenbanken nutzen, um den Inhalt einer .deb-Datei zwischenzuspeichern, und ist außer gzip(1) nicht auf externe Programme angewiesen. Bei einer vollständigen Generierung werden automatisch Dateiänderungsprüfungen durchgeführt und die gewünschten komprimierten Ausgabedateien erstellt.
Sofern die Option -h oder --help nicht angegeben ist, muss einer der folgenden Befehle vorhanden sein.
Der Befehl „packages“ generiert eine Paketdatei aus einem Verzeichnisbaum. Es nimmt das angegebene Verzeichnis und durchsucht es rekursiv nach .deb-Dateien und gibt für jede einen Paketdatensatz an stdout aus. Dieser Befehl entspricht ungefähr dpkg-scanpackages(1).
Mit der Option --db kann eine binäre Caching-DB angegeben werden.
Der Befehl „sources“ generiert eine Quellindexdatei aus einem Verzeichnisbaum. Es nimmt das angegebene Verzeichnis und durchsucht es rekursiv nach .dsc-Dateien und gibt für jede einen Quelldatensatz an stdout aus. Dieser Befehl entspricht ungefähr dpkg-scansources(1).
Wenn eine Override-Datei angegeben ist, wird nach einer Quell-Override-Datei mit der Erweiterung .src gesucht. Mit der Option --source-override kann die zu verwendende Quell-Override-Datei geändert werden.
Der Befehl content generiert eine Inhaltsdatei aus einem Verzeichnisbaum. Es nimmt das angegebene Verzeichnis, durchsucht es rekursiv nach .deb-Dateien und liest die Dateiliste aus jeder Datei. Anschließend wird die Liste der mit den Paketen übereinstimmenden Dateien sortiert und in stdout geschrieben. Verzeichnisse werden nicht in die Ausgabe geschrieben. Wenn mehrere Pakete dieselbe Datei besitzen, werden die einzelnen Pakete in der Ausgabe durch ein Komma getrennt.
Mit der Option --db kann eine binäre Caching-DB angegeben werden.
Der Release-Befehl generiert eine Release-Datei aus einem Verzeichnisbaum. Es durchsucht das angegebene Verzeichnis standardmäßig rekursiv nach unkomprimierten und komprimierten Paketen, Quellen, Inhalten, Komponenten und Symboldateien sowie nach Release-, Index- und md5sum.txt-Dateien (APT::FTPArchive::Release::Default-Patterns). Zusätzliche Dateinamenmuster können hinzugefügt werden, indem sie in APT::FTPArchive::Release::Patterns aufgelistet werden. Anschließend wird eine Release-Datei in stdout geschrieben, die (standardmäßig) einen MD5-, SHA1-, SHA256- und SHA512-Digest für jede Datei enthält.
Werte für die zusätzlichen Metadatenfelder in der Release-Datei werden den entsprechenden Variablen unter APT::FTPArchive::Release entnommen, z. B. APT::FTPArchive::Release::Origin. Die unterstützten Felder sind Origin, Label, Suite, Version, Codename, Date, NotAutomatic, ButAutomaticUpgrades, Acquire-By-Hash, Valid-Until, Signed-By, Architectures, Components und Description.
Der Befehl „generate“ ist so konzipiert, dass er über ein Cron-Skript ausgeführt werden kann und Indizes gemäß der angegebenen Konfigurationsdatei erstellt. Die Konfigurationssprache bietet eine flexible Möglichkeit, anzugeben, welche Indexdateien aus welchen Verzeichnissen erstellt werden, und bietet außerdem eine einfache Möglichkeit, die erforderlichen Einstellungen beizubehalten.
Der Befehl „clean“ bereinigt die von der angegebenen Konfigurationsdatei verwendeten Datenbanken, indem er alle nicht mehr benötigten Datensätze entfernt.
Der Befehl „generate“ verwendet eine Konfigurationsdatei, um die Archive zu beschreiben, die generiert werden sollen. Es folgt dem typischen ISC-Konfigurationsformat, wie es in ISC-Tools wie bind 8 und dhcpd zu sehen ist. apt.conf(5) enthält eine Beschreibung der Syntax. Beachten Sie, dass die generierte Konfiguration abschnittsweise analysiert wird, apt.conf(5) jedoch baumartig. Dies wirkt sich nur darauf aus, wie mit dem Scope-Tag umgegangen wird.
Die Generierungskonfiguration besteht aus vier separaten Abschnitten, die jeweils im Folgenden beschrieben werden.
Der Abschnitt „Dir“ definiert die Standardverzeichnisse, die zum Auffinden der während des Generierungsprozesses erforderlichen Dateien erforderlich sind. Diesen Verzeichnissen werden bestimmte relative Pfade vorangestellt, die in späteren Abschnitten definiert werden, um einen vollständigen absoluten Pfad zu erstellen.
Gibt das Stammverzeichnis des FTP-Archivs an. In einer Standard-Debian-Konfiguration ist dies das Verzeichnis, das die ls-LR- und dist-Knoten enthält.
Gibt den Speicherort der Überschreibungsdateien an.
Gibt den Speicherort der Cache-Dateien an.
Gibt den Speicherort der Dateilistendateien an, wenn unten die FileList-Einstellung verwendet wird.
Der Abschnitt „Standard“ gibt Standardwerte und Einstellungen an, die den Betrieb des Generators steuern. Andere Abschnitte können diese Standardeinstellungen durch eine abschnittsweise Einstellung überschreiben.
Legt die Standardkomprimierungsschemata fest, die für die Paketindexdateien verwendet werden sollen. Es handelt sich um eine Zeichenfolge, die eine durch Leerzeichen getrennte Liste von mindestens einem der Kompressoren enthält, die über den Konfigurationsbereich APT::Compressor konfiguriert wurden. Der Standardwert für alle Komprimierungsschemata ist . gzip.
Legt die Standardliste der Dateierweiterungen fest, bei denen es sich um Paketdateien handelt. Dies ist standardmäßig .deb.
Dies ähnelt Packages::Compress, außer dass es die Komprimierung für die Quelldateien steuert.
Legt die Standardliste der Dateierweiterungen fest, bei denen es sich um Quelldateien handelt. Der Standardwert ist .dsc.
Dies ähnelt Packages::Compress, außer dass es die Komprimierung für die Inhaltsdateien steuert.
Dies ähnelt Packages::Compress, außer dass es die Komprimierung für die Translation-en-Masterdatei steuert.
Gibt die Anzahl der Kilobyte an, die pro Lauf aufgehoben (und durch feste Links ersetzt) werden sollen. Dies wird in Verbindung mit der Einstellung „External-Links“ pro Abschnitt verwendet.
Gibt den Modus aller erstellten Indexdateien an. Der Standardwert ist 0644. Alle Indexdateien werden unabhängig von der umask auf diesen Modus eingestellt.
Gibt an, ob lange Beschreibungen in die Paketdatei aufgenommen oder in eine Master-Übersetzungsdatei aufgeteilt werden sollen.
Legt spezifische Standardwerte für Baumabschnitte fest. Alle diese Variablen sind Substitutionsvariablen und die Zeichenfolgen $ (DIST), $ (SECTION) und $ (ARCH) werden durch ihre jeweiligen Werte ersetzt.
Legt die Anzahl der Kilobyte an Inhaltsdateien fest, die täglich generiert werden. Die Inhaltsdateien werden im Round-Robin-Verfahren verarbeitet, sodass sie über mehrere Tage hinweg alle neu erstellt werden.
Steuert die Anzahl der Tage, die eine Inhaltsdatei ohne Änderung überprüft werden darf. Wenn dieses Limit überschritten wird, wird die mtime der Inhaltsdatei aktualisiert. Dieser Fall kann auftreten, wenn die Paketdatei so geändert wird, dass keine neue Inhaltsdatei entsteht [z. B. die Bearbeitung überschreiben]. Eine Verzögerung ist zulässig, in der Hoffnung, dass neue .debs installiert werden, was ohnehin eine neue Datei erfordert. Der Standardwert ist 10, die Einheiten sind in Tagen.
Legt den Anfang des .deb-Verzeichnisbaums fest. Standardmäßig ist $ (DIST)/$ (SECTION)/binary-$ (ARCH)/
Legt den Anfang des Verzeichnisbaums des Quellpakets fest. Standardmäßig ist $ (DIST)/$ (SECTION)/source/
Legt die Ausgabepaketdatei fest. Standardmäßig ist $ (DIST)/$ (SECTION)/binary-$ (ARCH)/Packages
Legt die Ausgabequellendatei fest. Der Standardwert ist $ (DIST)/$ (SECTION)/source/Sources
Legt die Ausgabe-Übersetzungs-Masterdatei mit den langen Beschreibungen fest, wenn diese nicht in der Paketdatei enthalten sein sollen. Standardmäßig ist $ (DIST)/$ (SECTION)/i18n/Translation-en
Legt das Pfadpräfix fest, das bewirkt, dass ein Symlink als interner Link und nicht als externer Link betrachtet wird. Standardmäßig ist $ (DIST)/$ (SECTION)/
Legt die Ausgabeinhaltsdatei fest. Der Standardwert ist $ (DIST)/$ (SECTION)/Contents-$ (ARCH). Wenn diese Einstellung dazu führt, dass mehrere Paketdateien einer einzelnen Inhaltsdatei zugeordnet werden (wie es die Standardeinstellung ist), integriert apt-ftparchive diese Paketdateien automatisch zusammen.
Legt fest, dass die Header-Datei der Inhaltsausgabe vorangestellt wird.
Legt die binäre Cache-Datenbank fest, die für diesen Abschnitt verwendet werden soll. Mehrere Abschnitte können dieselbe Datenbank gemeinsam nutzen.
Gibt an, dass apt-ftparchive die Liste der Dateien aus der angegebenen Datei lesen soll, anstatt den Verzeichnisbaum zu durchsuchen. Relativen Dateinamen wird das Archivverzeichnis vorangestellt.
Gibt an, dass apt-ftparchive die Liste der Dateien aus der angegebenen Datei lesen soll, anstatt den Verzeichnisbaum zu durchsuchen. Relativen Dateinamen wird das Archivverzeichnis vorangestellt. Dies wird bei der Verarbeitung von Quellindizes verwendet.
Der Abschnitt „Baum“ definiert einen Standard-Debian-Dateibaum, der aus einem Basisverzeichnis, dann mehreren Abschnitten in diesem Basisverzeichnis und schließlich mehreren Architekturen in jedem Abschnitt besteht. Der genaue verwendete Pfad wird durch die Verzeichnissubstitutionsvariable definiert.
Der Abschnitt „Baum“ nimmt ein Bereichs-Tag an, das die Variable $ (DIST) festlegt und die Wurzel des Baums definiert (dem Pfad wird ArchiveDir vorangestellt). Typischerweise ist dies eine Einstellung wie dists/bookworm.
Alle im Abschnitt „TreeDefault“ definierten Einstellungen sowie drei neue Variablen können in einem Abschnitt „Tree“ verwendet werden.
Bei der Verarbeitung eines Baumabschnitts führt apt-ftparchive einen Vorgang aus, der dem folgenden ähnelt:
for i in Sections do for j in Architectures do Generate for DIST=scope SECTION=i ARCH=j
Dies ist eine durch Leerzeichen getrennte Liste von Abschnitten, die unter der Distribution erscheinen; Typischerweise ist dies so etwas wie „main contrib non-free non-free-firmware“.
Dies ist eine durch Leerzeichen getrennte Liste aller Architekturen, die im Suchbereich angezeigt werden. Die spezielle Architekturquelle wird verwendet, um anzuzeigen, dass dieser Baum über ein Quellarchiv verfügt. Die Architektur weist darauf hin, dass architekturspezifische Dateien wie Pakete keine Informationen über die Architektur aller Pakete in allen Dateien enthalten sollten, da diese in einer dedizierten Datei verfügbar sind.
Gibt an, ob lange Beschreibungen in die Paketdatei aufgenommen oder in eine Master-Übersetzungsdatei aufgeteilt werden sollen.
Legt die binäre Überschreibungsdatei fest. Die Override-Datei enthält Abschnitts-, Prioritäts- und Betreuer-Adressinformationen.
Legt die Quellüberschreibungsdatei fest. Die Override-Datei enthält Abschnittsinformationen.
Legt die binäre zusätzliche Override-Datei fest.
Legt die zusätzliche Quell-Override-Datei fest.
Der Abschnitt bindirectory definiert einen binären Verzeichnisbaum ohne spezielle Struktur. Das Scope-Tag gibt den Speicherort des Binärverzeichnisses an und die Einstellungen ähneln denen des Abschnitts „Tree“, ohne Ersatzvariablen oder SectionArchitecture-Einstellungen.
Legt die Ausgabe der Paketdatei fest.
Legt die Ausgabe der Quelldatei fest. Mindestens eines der Pakete oder Quellen ist erforderlich.
Legt die Ausgabe der Inhaltsdatei fest (optional).
Legt die binäre Überschreibungsdatei fest.
Legt die Quellüberschreibungsdatei fest.
Legt die binäre zusätzliche Override-Datei fest.
Legt die zusätzliche Quell-Override-Datei fest.
Legt die Cache-Datenbank fest.
Fügt allen Ausgabepfaden einen Pfad hinzu.
Gibt die Dateilistendatei an.
Die binäre Überschreibungsdatei ist vollständig kompatibel mit dpkg-scanpackages(1). Es enthält vier durch Leerzeichen getrennte Felder. Das erste Feld ist der Paketname, das zweite ist die Priorität, zu der dieses Paket gezwungen werden soll, das dritte ist der Abschnitt, zu dem dieses Paket gezwungen werden soll, und das letzte Feld ist das Betreuer-Permutationsfeld.
Die allgemeine Form des Maintainer-Feldes ist:
old [// oldn]* => new
oder einfach,
new
Das erste Formular ermöglicht die Angabe einer durch Doppelschrägstriche getrennten Liste alter E-Mail-Adressen. Wenn eines davon gefunden wird, wird das Feld „maintainer“ durch „new“ ersetzt. Die zweite Form ersetzt bedingungslos das Maintainer-Feld.
Die Quellüberschreibungsdatei ist vollständig kompatibel mit dpkg-scansources(1). Es enthält zwei durch Leerzeichen getrennte Felder. Das erste Feld ist der Name des Quellpakets, das zweite ist der Abschnitt, in dem es zugewiesen werden soll.
Die zusätzliche Override-Datei ermöglicht das Hinzufügen oder Ersetzen beliebiger Tags in der Ausgabe. Es besteht aus drei Spalten: Die erste ist das Paket, die zweite das Tag und der Rest der Zeile ist der neue Wert.
Alle Befehlszeilenoptionen können mithilfe der Konfigurationsdatei festgelegt werden. Die Beschreibungen geben die festzulegende Konfigurationsoption an. Für boolesche Optionen können Sie die Konfigurationsdatei überschreiben, indem Sie etwas wie -f-,--no-f, -f=no oder mehrere verwenden andere Variationen.
Generieren Sie die angegebene Prüfsumme. Diese Optionen sind standardmäßig aktiviert. Wenn sie deaktiviert sind, enthalten die generierten Indexdateien nach Möglichkeit keine Prüfsummenfelder. Konfigurationselemente: APT::FTPArchive::Checksum und APT::FTPArchive::Index::Checksum wobei Index kann Pakete, Quellen oder Release sein und Prüfsumme kann MD5, SHA1, SHA256 oder SHA512 sein.
Verwenden Sie eine binäre Caching-Datenbank. Dies hat keine Auswirkung auf den Generierungsbefehl. Konfigurationselement: APT::FTPArchive::DB.
Ruhig; erzeugt eine Ausgabe, die für die Protokollierung geeignet ist, wobei Fortschrittsanzeigen weggelassen werden. Mehr qs führen zu mehr Ruhe bis zu einem Maximum von 2. Sie können auch -q=# verwenden, um den Ruhepegel festzulegen und die Konfigurationsdatei zu überschreiben. Konfigurationselement: leise.
Delinking durchführen. Wenn die Einstellung „External-Links“ verwendet wird, ermöglicht diese Option tatsächlich das Aufheben der Verknüpfung der Dateien. Es ist standardmäßig aktiviert und kann mit --no-delink deaktiviert werden. Konfigurationselement: APT::FTPArchive::DeLinkAct.
Führen Sie die Inhaltsgenerierung durch. Wenn diese Option festgelegt ist und Paketindizes mit einer Cache-Datenbank generiert werden, wird auch die Dateiliste extrahiert und zur späteren Verwendung in der Datenbank gespeichert. Bei Verwendung des Befehls „generate“ ermöglicht diese Option auch die Erstellung beliebiger Inhaltsdateien. Die Standardeinstellung ist aktiviert. Konfigurationselement: APT::FTPArchive::Contents.
Wählen Sie die Quellüberschreibungsdatei aus, die mit dem Befehl „sources“ verwendet werden soll. Konfigurationselement: APT::FTPArchive::SourceOverride.
Machen Sie die Caching-Datenbanken schreibgeschützt. Konfigurationselement: APT::FTPArchive::ReadOnlyDB.
Akzeptieren Sie in den Paket- und Inhaltsbefehlen nur Paketdateien, die mit *_arch.deb oder *_all.deb übereinstimmen, und nicht alle Paketdateien im angegebenen Pfad. Konfigurationselement: APT::FTPArchive::Architecture.
apt-ftparchive(1) speichert so viele Metadaten wie möglich in einer zwischengespeicherten Datenbank. Wenn Pakete erneut mit derselben Version kompiliert und/oder erneut veröffentlicht werden, führt dies zu Problemen, da die inzwischen veralteten zwischengespeicherten Metadaten wie Größe und Prüfsummen verwendet werden. Wenn diese Option aktiviert ist, passiert dies nicht mehr, da überprüft wird, ob die Datei geändert wurde. Beachten Sie, dass diese Option standardmäßig auf „false“ gesetzt ist, da es nicht empfehlenswert ist, mehrere Versionen/Builds eines Pakets mit derselben Versionsnummer hochzuladen, sodass theoretisch niemand diese Probleme haben wird und daher alle diese zusätzlichen Überprüfungen nutzlos sind.
Diese Konfigurationsoption ist standardmäßig auf „true“ eingestellt und sollte nur auf „false“ gesetzt werden, wenn das mit apt-ftparchive(1) generierte Archiv auch Übersetzungsdateien bereitstellt. Beachten Sie, dass die Translation-en-Masterdatei nur im Generierungsbefehl erstellt werden kann.
Zeigen Sie eine kurze Nutzungszusammenfassung an.
Zeigt die Programmversion an.
Konfigurationsdatei; Geben Sie eine zu verwendende Konfigurationsdatei an. Das Programm liest die Standardkonfigurationsdatei und dann diese Konfigurationsdatei. Wenn Konfigurationseinstellungen festgelegt werden müssen, bevor die Standardkonfigurationsdateien analysiert werden, geben Sie eine Datei mit der Umgebungsvariablen APT_CONFIG an. Syntaxinformationen finden Sie in apt.conf(5).
Legen Sie eine Konfigurationsoption fest. Dadurch wird eine beliebige Konfigurationsoption festgelegt. Die Syntax ist -o Foo::Bar=bar. -o und --option können mehrfach verwendet werden, um verschiedene Optionen festzulegen.
So erstellen Sie eine komprimierte Paketdatei für ein Verzeichnis, das Binärpakete (.deb) enthält:
apt-ftparchive packages directory | gzip > Packages.gz
apt.conf(5)
apt-ftparchive gibt im Normalbetrieb Null zurück, im Fehlerfall den dezimalen Wert 100.
APT-Fehlerseite[1]. Wenn Sie einen Fehler in APT melden möchten, lesen Sie bitte /usr/share/doc/debian/bug-reporting.txt oder den Befehl reportbug(1).
Jason Gunthorpe
APT-Team
1. APT-Fehlerseite: http://bugs.debian.org/src:apt