APT-FTPARCHIVE(1) APT APT-FTPARCHIVE(1) NAME apt-ftparchive - Hilfsprogramm zum Generieren von Indexdateien UBERSICHT apt-ftparchive [-dsq] [--md5] [--delink] [--readonly] [--contents] [--arch architecture] [-o=Konfigurationszeichenkette] [-c=Konfigurationsdatei] {packages Pfad [Ausser-Kraft-Setzdatei [Pfadprafix]] | sources Pfad [Ausser-Kraft-Setzdatei [Pfadprafix]] | contents Pfad | release Pfad | generate Konfigurationsdatei Abschnitt... | clean Konfigurationsdatei | {-v | --version} | {-h | --help}} BESCHREIBUNG apt-ftparchive ist das Befehlszeilenwerkzeug, das Indexdateien generiert, die APT zum Zugriff auf eine Distributionsquelle benutzt. Die Indexdateien sollten auf der Ursprungs-Site auf Basis des Inhalts dieser Site generiert werden. apt-ftparchive ist eine Obermenge des dpkg-scanpackages(1)-Programms, das dessen ganze Funktionalitat uber den packages-Befehl enthalt. Es enthalt auch einen Generator fur Contents-Dateien, contents und ein Mittel, um den Generierungsprozess fur ein komplettes Archiv zu >>skripten<<. Intern kann apt-ftparchive von Programmdatenbanken Gebrauch machen, um die Inhalte einer .deb-Datei zwischenzuspeichern und es verlasst sich nicht auf irgendwelche externen Programme, abgesehen von gzip(1). Wenn eine vollstandige Generierung erfolgt, werden automatisch Dateianderungsprufungen durchgefuhrt und die gewunschten komprimierten Ausgabedateien erzeugt. Sofern nicht die -h-, oder --help-Option angegeben ist, muss einer der nachfolgend aufgefuhrten Befehle vorkommen. packages Der >>packages<<-Befehl generiert eine Paketdatei aus einem Verzeichnisbaum. Er nimmt ein vorgegebenes Verzeichnis und durchsucht es rekursiv nach .deb-Dateien, wobei es fur jede einen Paketdatensatz auf Stdout ausgibt. Dieser Befehl entspricht etwa dpkg-scanpackages(1). Die Option --db kann benutzt werden, um eine Datenbank zum Zwischenspeichern von Programmen anzugeben. sources Der sources-Befehl generiert eine Quellenindexdatei aus einem Verzeichnisbaum. Er nimmt ein vorgegebenes Verzeichnis und durchsucht es rekursiv nach .dsc-Dateien, wobei es fur jede einen Quelldatensatz auf Stdout ausgibt. Dieser Befehl entspricht etwa dpkg-scansources(1). Wenn eine ausser Kraft setzende Datei angegeben ist, wird nach einer Quelldatei zum Uberschreiben mit einer .src-Dateiendung gesucht. Die Option >>--source-override<< kann benutzt werden, um die Quelldatei zum Uberschreiben, die benutzt wird, zu andern. contents Der contents-Befehl generiert eine Inhaltsdatei aus einem Verzeichnisbaum. Er nimmt ein vorgegebenes Verzeichnis und durchsucht es rekursiv nach .deb-Dateien und liest die Dateiliste von jeder Datei. Dann sortiert er die Liste der passenden Pakete und schreibt sie nach Stdout. Verzeichnisse werden nicht in die Ausgabe geschrieben. Falls mehrere Pakete die gleiche Datei besitzen, dann befindet sich jedes Paket durch Komma getrennt in der Ausgabe. Die Option --db kann benutzt werden, um eine Datenbank zum Zwischenspeichern von Programmen anzugeben. release Der Befehl release erzeugt eine Release-Datei aus einem Verzeichnisbaum. Standardmassig durchsucht er rekursiv das angegebene Verzeichnis nach nicht komprimierten und komprimierten Packages-, Sources-, Contents-, Components- und icons-Dateien, ebenso wie standardmassig Release-, Index und md5sum.txt-Dateien (APT::FTPArchive::Release::Default-Patterns). Zusatzliche Muster fur Dateinamen konnen hinzugefugt werden, indem sie in APT::FTPArchive::Release::Patterns aufgefuhrt werden. Dann schreibt er eine Release-Datei auf die Standardausgabe, die (standardmassig) fur jede Datei eine MD5-, SHA1-, SHA256- und SHA512-Prufsumme enthalt. Werte fur zusatzliche Metadatenfelder in der Release-Datei werden den entsprechenden Variablen unter APT::FTPArchive::Release entnommen, z.B. APT::FTPArchive::Release::Origin. Die unterstutzten Felder sind: Origin, Label, Suite, Version, Codename, Date, NotAutomatic, ButAutomaticUpgrades, Acquire-By-Hash, Valid-Until, Signed-By, Architectures, Components, Description. generate Der generate-Befehl wurde entworfen, um von einem Cron-Skript ausfuhrbar zu sein und bildet Indexe, die der angegebenen Konfigurationsdatei entsprechen. Die Konfigurationssprache stellt eine flexible Moglichkeit bereit, um anzugeben, welche Indexdateien von welchen Verzeichnissen gebildet wurden, ebenso wie sie eine einfache Moglichkeit zur Verwaltung der erforderlichen Einstellungen bereitstellt. clean Der clean-Befehl raumt die Datenbanken auf, die von der angegebenen Konfigurationsdatei benutzt wurden, indem es nicht langer notige Datensatze entfernt. DIE GENERATE-KONFIGURATION Der generate-Befehl benutzt eine Konfigurationsdatei, um die Archive zu beschreiben, die generiert werden sollen. Es folgt dem typischen ISC-Konfigurationsformat, wie es in ISC-Werkzeugen wie Bind 8 oder DHCP gesehen werden kann. apt.conf(5) enthalt eine Beschreibung der Syntax. Beachten Sie, dass die generate-Konfiguration abschnittsweise ausgewertet wird, apt.conf(5) aber baumartig ausgewertet wird. Dies hat nur Auswirkungen, wie die Markierung >>scope<< behandelt wird. Die generate-Konfiguration hat vier getrennte Abschnitte, jeder ist unterhalb beschrieben Dir-Abschnitt Der Dir-Abschnitt definiert die Vorgabeverzeichnisse, die zum Orten der benotigten Dateien wahrend des Generierungsprozesses gebraucht werden. Diese Verzeichnisse werden bestimmte relative Pfade, die in spateren Abschnitten definiert werden, vorangestellt, um einen vollstandigen absoluten Pfad zu bilden. ArchiveDir gibt die Wurzel des FTP-Archivs an. In einer Debian-Standardkonfiguration ist das das Verzeichnis, das die ls-LR- und dist-Knoten enthalt. OverrideDir gibt den Ort der Dateien zum Uberschreibenan. CacheDir gibt den Ort der Zwischenspeicherdateien an. FileListDir gibt den Ort der Dateilistendateien an, wenn die FileList unterhalb benutzt wird. Default-Abschnitt Der Default-Abschnitt gibt Vorgabewerte an und Einstellungen, die den Betrieb des Generators steuern. Andere Abschnitte konnen diese Vorgaben mit einer Einstellung pro Abschnitt ausser Kraft setzen. Packages::Compress setzt das Standardkompressionsschema, das fur die Paketindexdateien benutzt wird. Es ist eine Zeichenkette, die eine durch Leerzeichen getrennte Liste mit mindestens einem der im Konfigurationsbereich APT::Compressor eingerichteten Kompressionsprogramme enthalt. Die Voreinstellung fur alle Kompressionsschemas ist >>. gzip<<. Packages::Extensions setzt die Vorgabeliste von Dateierweiterungen, die Paketdateien sind. Vorgabe ist >>.deb<<. Sources::Compress Dies ist Packages::Compress ahnlich, ausser dass es die Kompression der Quelldateien steuert. Sources::Extensions setzt die Vorgabeliste von Dateierweiterungen, die Quelldateien sind. Vorgabe ist >>.dsc<<. Contents::Compress Dies ist Packages::Compress ahnlich, ausser dass es die Kompression der Contents-Dteien steuert. Translation::Compress Dies ist Packages::Compress ahnlich, ausser dass es die Kompression der Translation-en-Hauptdatei steuert. DeLinkLimit gibt die Anzahl von Kilobyte an, deren Verweis pro Durchlauf entfernt (und durch Hardlinks ersetzt) werden sollen. Dies wird in Verbindung mit der abschnittsweisen Einstellung External-Links benutzt. FileMode gibt den Modus fur alle erstellten Indexdateien an. Vorgabe ist 0644. Alle Indexdateien erhalten diese Rechte ohne Beachtung von umask. LongDescription gesetzt, falls lange Beschreibungen in die Package-Datei eingeschlossen oder in eine Translation-en-Hauptdatei unterteilt werden sollen TreeDefault-Abschnitt setzt Vorgaben speziell fur Tree-Abschnitte. All diese Variablen sind Platzhaltervariablen und haben die Zeichenketten $(DIST), $(SECTION) und $(ARCH) durch ihre jeweiligen Werte ersetzt. MaxContentsChange setzt die Anzahl der Kilobyte an Inhaltdateien, die jeden Tag generiert werden. Die Inhaltdateien werden reihum ersetzt, so dass sie uber mehrere Tage alle neu gebildet werden. ContentsAge steuert die Anzahl der Tage, die eine Inhaltsdatei erlaubt ist ohne Anderung gepruft zu werden. Wenn die Grenze uberschritten ist, wird die mtime der Inhaltsdatei aktualisiert. Dieser Fall kann auftreten, wenn die Package-Datei in einer Art geandert wurde, die nicht in einer neuen Inhaltsdatei resultierte [ausser Kraft setzendes Bearbeiten zum Beispiel]. Ein Aufhalten ist erlaubt, in der Hoffnung dass neue .debs installiert werden, die sowieso eine neue Datei benotigen. Die Vorgabe ist 10, die Einheiten sind Tage. Directory setzt den Beginn des .deb-Verzeichnisbaums. Vorgabe ist $(DIST)/$(SECTION)/binary-$(ARCH)/ SrcDirectory setzt den Beginn des Quellpaketverzeichnisbaums. Vorgabe ist $(DIST)/$(SECTION)/source/ Packages setzt die Ausgabe-Packages-Datei. Vorgabe ist $(DIST)/$(SECTION)/binary-$(ARCH)/Packages Sources setzt die Ausgabe-Sources-Datei. Vorgabe ist $(DIST)/$(SECTION)/source/Sources Translation setzt die Ausgabe der Translation-en-Hauptdatei mit den langen Beschreibungen falls sie nicht in der Packages-Datei enthalten sein sollen. Vorgabe ist $(DIST)/$(SECTION)/i18n/Translation-en. InternalPrefix setzt das Pfad-Prafix, das bewirkt, dass ein symbolischer Verweis wie ein interner anstatt wie ein externer Verweis behandelt wird. Vorgabe ist $(DIST)/$(SECTION)/ Contents setzt die Ausgabe-Contents-Datei. Vorgabe ist $(DIST)/$(SECTION)/Contents-$(ARCH). Wenn diese Einstellung bewirkt, dass mehrere Packages-Dateien auf einer einzelnen Inhaltsdatei abgebildet werden (so wie es Vorgabe ist), dann wird apt-ftparchive diese Dateien automatisch integrieren. Contents::Header setzt die Kopfdatendatei, um sie der Inhaltsausgabe voranzustellen. BinCacheDB setzt die Programmzwischenspeicherdatenbank zur Benutzung in diesem Abschnitt. Mehrere Abschnitte konnen sich die gleiche Datenbank teilen. FileList gibt an, dass apt-ftparchive die Liste der Dateien aus der vorgegebenen Datei liest, anstatt den Verzeichnisbaum zu durchlaufen. Relativen Dateinamen wird das Archivverzeichnis vorangestellt. SourceFileList gibt an, dass apt-ftparchive die Liste der Dateien aus der vorgegebenen Datei liest, anstatt den Verzeichnisbaum zu durchlaufen. Relativen Dateinamen wird das Archivverzeichnis vorangestellt. Dies wird benutzt, wenn Quellindizes verarbeitet werden. Tree-Abschnitt Der Tree-Abschnitt definiert einen Standard-Debian-Dateibaum, der aus einem Basisverzeichnis, dann mehreren Abschnitten in diesem Basisverzeichnis und am Ende, mehreren Architekturen in jedem Abschnitt besteht. Die genaue benutzte Pfadeinstellung ist durch die Directory-Ersetzungsvariable definiert. Der Tree-Abschnitt akzeptiert eine scope-Markierung, die die $(DIST)-Variable setzt und die Wurzel des Baumes definiert (dem Pfad wird ArchiveDir vorangestellt). Typischerweise ist dies eine Einstellung wie dists/bookworm. Alle im TreeDefault-Abschnitt definierten Einstellungen konnen in einem Tree-Abschnitt, sowie drei neue Variablen benutzt werden. Wenn ein Tree-Abschnitt bearbeitet wird, fuhrt apt-ftparchive eine Aktion aus, die folgender ahnelt: for i in Abschnitte do for j in Architekturen do Generiere for DIST=Geltungsbereich SECTION=i ARCH=j Sections Dies ist eine durch Leerzeichen getrennte Liste der Abschnitte, die unter der Distribution erscheint, typischerweise etwas wie main contrib non-free non-free-firmware Architectures Dies ist eine durch Kommas getrennte Liste aller Architekturen, die unter dem Suchabschnitt erscheinen. Die besondere Architektur >>source<< wird benutzt, um anzuzeigen, dass dieser Verzeichnisbaum uber ein Quellarchiv verfugt. Die Architektur >>all<< signalisiert, dass architekturspezifische Dateien wie Packages keine Informationen uber Pakete der Architektur all enthalten sollten, da sie in einer dedizierten Datei verfugbar sein werden. LongDescription gesetzt, falls lange Beschreibungen in die Package-Datei eingeschlossen oder in eine Translation-en-Hauptdatei unterteilt werden sollen BinOverride setzt die Binardatei zum Uberschreiben. Die Datei zum Uberschreiben enthalt Abschnitt, Prioritat und Adressinformationen des Betreuers. SrcOverride setzt die Quelldatei zum Uberschreiben. Die Quelldatei zum Uberschreiben enthalt Abschnittsinformationen. ExtraOverride setzt die zusatzliche Binardatei zum Uberschreiben. SrcExtraOverride setzt die zusatzliche Quelldatei zum Uberschreiben. BinDirectory-Abschnitt Der bindirectory-Abschnitt definiert einen Binarverzeichnisbaum ohne spezielle Struktur. Die scope-Markierung gibt den Ort des Binarverzeichnisses an und die Einstellungen sind denen des Tree-Abschnitts ohne Platzhaltervariablen oder AbschnittArchitektur ahnlich. Packages setzt die Packages-Dateiausgabe. Sources setzt die Sources-Dateiausgabe. Entweder Packages oder Sources ist erforderlich. Contents setzt die Contents-Dateiausgabe (optional) BinOverride setzt die Binardatei zum Uberschreiben. SrcOverride setzt die Quelldatei zum Uberschreiben. ExtraOverride setzt die zusatzliche Binardatei zum Uberschreiben. SrcExtraOverride setzt die zusatzliche Quelldatei zum Uberschreiben. BinCacheDB setzt die Zwischenspeicherdatenbank. PathPrefix hangt einen Pfad an alle Ausgabepfade an. FileList, SourceFileList gibt die Dateilistendatei an. DIE PROGRAMMDATEI ZUM UBERSCHREIBEN Die Binardatei zum Uberschreiben ist vollstandig zu dpkg- scanpackages(1) kompatibel. Sie enthalt vier durch Leerzeichen getrennte Felder. Das erste Feld ist der Paketname, das zweite ist die Prioritat, zu der das Paket erzwungen wird, das dritte ist der Abschnitt, zu der das Paket erzwungen wird und das letzte Feld ist das Betreuerumsetzungsfeld. Die allgemeine Form des Betreuerfelds ist: alt [// oldn]* => neu oder einfach neu . Die erste Form erlaubt es, eine durch Doppelschragstrich getrennte Liste alter E-Mail-Adressen anzugegeben. Wenn eine davon gefunden wird, wird die neue fur das Betreuerfeld ersetzt. Die zweite Form ersetzt das Betreuerfeld bedingungslos. DIE QUELLDATEI ZUM UBERSCHREIBEN Die Quelldatei zum Uberschreiben ist vollstandig kompatibel zu dpkg- scansources(1). Sie enthalt zwei durch Leerzeichen getrennte Felder. Das erste Feld ist der Quellpaketname, das zweite ist der Abschnitt, dem er zugeordnet ist. DIE ZUSATZLICHE DATEI ZUM UBERSCHREIBEN Die zusatzliche Datei zum Uberschreiben erlaubt jeder beliebigen Markierung zur Ausgabe hinzugefugt oder darin ersetzt zu werden. Sie hat drei Spalten. Die erste ist das Paket, die zweite ist die Markierung und der Rest der Zeile ist der neue Wert. OPTIONEN Alle Befehlszeilenoptionen konnen durch die Konfigurationsdatei gesetzt werden, die Beschreibung gibt die zu setzende Option an. Fur boolesche Optionen konnen Sie die Konfigurationsdatei ausser Kraft setzen, indem Sie etwas der Art -f-, --no-f, -f=no oder etliche weitere Varianten benutzen. --md5, --sha1, --sha256, --sha512 erzeugt die vorgegebene Prufsumme. Diese Optionen sind standardmassig aktiviert. Wenn sie deaktiviert sind, werden die erzeugten Indexdateien nach Moglichkeit keine Prufsummenfelder erhalten. Konfigurationselemente: APT::FTPArchive::Prufsumme und APT::FTPArchive::Index::Prufsumme, wobei Index Packages, Sources oder Release sein kann und Prufsumme MD5, SHA1, SHA256 oder SHA512 sein kann. -d, --db benutzt eine Binarzwischenspeicherdatenbank. Dies hat keine Auswirkung auf den >>generate<<-Befehl. Konfigurationselement: APT::FTPArchive::DB. -q, --quiet still; erzeugt eine Ausgabe, die fur Protokollierung geeignet ist und Fortschrittsanzeiger weglasst. Mehr >>q<>generate<<-Befehl benutzt wird, erlaubt diese Option ausserdem die Erzeugung beliebiger Contents-Dateien. Die Vorgabe ist an. Konfigurationselement: APT::FTPArchive::Contents. -s, --source-override wahlt die Quelldatei zum ausser Kraft setzen, die mit dem sources-Befehl benutzt wird. Konfigurationselement: APT::FTPArchive::SourceOverride. --readonly macht die Zwischenspeicherdatenbank nur lesbar. Konfigurationselement: APT::FTPArchive::ReadOnlyDB. -a, --arch akzeptiert in den Befehlen packages und contents nur Paketdateien, die auf *_arch.deb oder *_all.deb passen, anstatt aller Paketdateien im angegebenen Pfad. Konfigurationselement: APT::FTPArchive::Architecture. APT::FTPArchive::AlwaysStat apt-ftparchive(1) speichert so viele Metadaten wie moglich in einer Zwischenspeicherdatenbank. Falls Pakete neu kompiliert und/oder neu mit der gleichen Version veroffentlicht werden, fuhrt dies zu Problemen, da die nun veralteten zwischengespeicherten Metadaten, wie Grosse und Prufsumme, benutzt werden. Mit dieser eingeschalteten Option wird dies nicht weiter vorkommen, da gepruft wird, ob die Datei geandert wurde. Beachten Sie, dass diese Option standardmassig auf >>false<< gesetzt ist, da es nicht empfohlen wird, mehrere Versionen/Builds eines Pakets mit der gleichen Versionsnummer hochzuladen, so dass theoretisch niemand dieses Probleme haben sollte und all diese zusatzlichen Prufungen daher nutzlos sind. APT::FTPArchive::LongDescription Diese Konfigurationsoption ist standardmassig >>true<< und sollte nur auf >>false<< gesetzt werden, wenn das mit apt-ftparchive(1) generierte Archiv ausserdem Translation-Dateien bereitstellt. Beachten Sie, dass die Hauptdatei Translation-en nur durch den Befehl >>generate<< erstellt werden kann. -h, --help eine kurze Aufrufzusammenfassung zeigen -v, --version die Version des Programms anzeigen --audit Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones. -c, --config-file Konfigurationsdatei; hiermit wird die zu verwendende Konfigurationssdatei angegeben. Das Programm wird die Vorgabe-Konfigurationsdatei und dann diese Konfigurationsdatei lesen. Falls Konfigurationseinstellungen vor der Vorgabe-Konfiguration ausgewertet werden mussen, geben Sie eine Datei in der Umgebungsvariable APT_CONFIG an. Lesen Sie apt.conf(5), um Syntax-Informationen zu erhalten. -o, --option Set a Configuration Option; This will set an arbitrary configuration option. The syntax is -o Foo::Bar=bar. -o and --option can be used multiple times to set different options. --no-color, --color Turn colors on or off. Colors are on by default on supported terminals for apt(8) and can also be disabled using the NO_COLOR or APT_NO_COLOR environment variables, or further configured by the APT::Color configuration option and scope, see apt.conf(5) for information on that. BEISPIELE Um eine gepackte Paketdatei fur ein Verzeichnis zu erstellen, das Binarpakete (.deb) enthalt: apt-ftparchive packages Verzeichnis | gzip > Packages.gz SIEHE AUCH apt.conf(5) DIAGNOSE apt-ftparchive gibt bei normalen Aktionen 0 zuruck, dezimal 100 bei Fehlern. FEHLER APT-Fehlerseite[1]. Wenn Sie einen Fehler in APT berichten mochten, lesen Sie bitte /usr/share/doc/debian/bug-reporting.txt oder den reportbug(1)-Befehl. Verfassen Sie Fehlerberichte bitte auf Englisch. UBERSETZUNG Die deutsche Ubersetzung wurde 2009 von Chris Leick in Zusammenarbeit mit dem deutschen l10n-Team von Debian angefertigt. Beachten Sie, dass diese Ubersetzung Teile enthalten kann, die nicht ubersetzt wurden. Dies ist so, damit kein Inhalt verloren geht, wenn die Ubersetzung hinter dem Originalinhalt hinterherhangt. AUTOREN Jason Gunthorpe APT-Team FUssNOTEN 1. APT-Fehlerseite https://bugs.debian.org/src:apt APT 2.9.6 29 Januar 2023 APT-FTPARCHIVE(1)