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
Funktionalität über den packages-Befehl enthält. Es
enthält auch einen Generator für Contents-Dateien, contents
und ein Mittel, um den Generierungsprozess für ein komplettes Archiv
zu »skripten«.
Intern kann apt-ftparchive von Programmdatenbanken Gebrauch
machen, um die Inhalte einer .deb-Datei zwischenzuspeichern und es
verlässt sich nicht auf irgendwelche externen Programme, abgesehen
von gzip(1). Wenn eine vollständige Generierung erfolgt,
werden automatisch Dateiänderungsprüfungen durchgeführt
und die gewünschten komprimierten Ausgabedateien erzeugt.
Sofern nicht die -h-, oder --help-Option angegeben
ist, muss einer der nachfolgend aufgeführten 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 für 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 für jede einen Quelldatensatz auf
Stdout ausgibt. Dieser Befehl entspricht etwa
dpkg-scansources(1).
Wenn eine außer Kraft setzende Datei angegeben ist, wird
nach einer Quelldatei zum Überschreiben mit einer .src-Dateiendung
gesucht. Die Option »--source-override« kann benutzt werden,
um die Quelldatei zum Überschreiben, die benutzt wird, zu
ändern.
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. Standardmäßig durchsucht er rekursiv das
angegebene Verzeichnis nach nicht komprimierten und komprimierten Packages-,
Sources-, Contents-, Components- und icons-Dateien, ebenso wie
standardmäßig Release-, Index und md5sum.txt-Dateien
(APT::FTPArchive::Release::Default-Patterns). Zusätzliche Muster
für Dateinamen können hinzugefügt werden, indem sie in
APT::FTPArchive::Release::Patterns aufgeführt werden. Dann schreibt er
eine Release-Datei auf die Standardausgabe, die (standardmäßig)
für jede Datei eine MD5-, SHA1-, SHA256- und SHA512-Prüfsumme
enthält.
Werte für zusätzliche 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, Description.
generate
Der generate-Befehl wurde entworfen, um von einem
Cron-Skript ausführbar zu sein und bildet Indexe, die der angegebenen
Konfigurationsdatei entsprechen. Die Konfigurationssprache stellt eine
flexible Möglichkeit bereit, um anzugeben, welche Indexdateien von
welchen Verzeichnissen gebildet wurden, ebenso wie sie eine einfache
Möglichkeit zur Verwaltung der erforderlichen Einstellungen
bereitstellt.
clean
Der clean-Befehl räumt die Datenbanken auf, die
von der angegebenen Konfigurationsdatei benutzt wurden, indem es nicht
länger nötige Datensätze 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) enthält 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
benötigten Dateien während des Generierungsprozesses gebraucht
werden. Diese Verzeichnisse werden bestimmte relative Pfade, die in
späteren Abschnitten definiert werden, vorangestellt, um einen
vollständigen 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 enthält.
OverrideDir
gibt den Ort der Dateien zum
Überschreibenan.
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 können diese Vorgaben mit
einer Einstellung pro Abschnitt außer Kraft setzen.
Packages::Compress
setzt das Standardkompressionsschema, das für die
Paketindexdateien benutzt wird. Es ist eine Zeichenkette, die eine durch
Leerzeichen getrennte Liste mit mindestens einem der im Konfigurationsbereich
APT::Compressor eingerichteten Kompressionsprogramme enthält.
Die Voreinstellung für alle Kompressionsschemas ist ».
gzip«.
Packages::Extensions
setzt die Vorgabeliste von Dateierweiterungen, die
Paketdateien sind. Vorgabe ist ».deb«.
Sources::Compress
Dies ist Packages::Compress ähnlich, außer
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 ähnlich, außer
dass es die Kompression der Contents-Dteien steuert.
Translation::Compress
Dies ist Packages::Compress ähnlich, außer
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 für 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 für 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
über mehrere Tage alle neu gebildet werden.
ContentsAge
steuert die Anzahl der Tage, die eine Inhaltsdatei
erlaubt ist ohne Änderung geprüft zu werden. Wenn die Grenze
überschritten ist, wird die mtime der Inhaltsdatei aktualisiert. Dieser
Fall kann auftreten, wenn die Package-Datei in einer Art geändert
wurde, die nicht in einer neuen Inhaltsdatei resultierte [außer Kraft
setzendes Bearbeiten zum Beispiel]. Ein Aufhalten ist erlaubt, in der Hoffnung
dass neue .debs installiert werden, die sowieso eine neue Datei
benötigen. 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-Präfix, 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 können 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/buster.
Alle im TreeDefault-Abschnitt definierten Einstellungen
können in einem Tree-Abschnitt, sowie drei neue Variablen benutzt
werden.
Wenn ein Tree-Abschnitt bearbeitet wird, führt
apt-ftparchive eine Aktion aus, die folgender ähnelt:
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
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 über ein Quellarchiv verfügt. Die Architektur
»all« signalisiert, dass architekturspezifische Dateien wie
Packages keine Informationen über Pakete der Architektur all enthalten
sollten, da sie in einer dedizierten Datei verfügbar sein werden.
LongDescription
gesetzt, falls lange Beschreibungen in die Package-Datei
eingeschlossen oder in eine Translation-en-Hauptdatei unterteilt werden
sollen
BinOverride
setzt die Binärdatei zum Überschreiben. Die
Datei zum Überschreiben enthält Abschnitt, Priorität und
Adressinformationen des Betreuers.
SrcOverride
setzt die Quelldatei zum Überschreiben. Die
Quelldatei zum Überschreiben enthält
Abschnittsinformationen.
ExtraOverride
setzt die zusätzliche Binärdatei zum
Überschreiben.
SrcExtraOverride
setzt die zusätzliche Quelldatei zum
Überschreiben.
BinDirectory-Abschnitt¶
Der bindirectory-Abschnitt definiert einen Binärverzeichnisbaum ohne
spezielle Struktur. Die scope-Markierung gibt den Ort des
Binärverzeichnisses an und die Einstellungen sind denen des
Tree-Abschnitts ohne Platzhaltervariablen oder AbschnittArchitektur
ähnlich.
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 Binärdatei zum
Überschreiben.
SrcOverride
setzt die Quelldatei zum Überschreiben.
ExtraOverride
setzt die zusätzliche Binärdatei zum
Überschreiben.
SrcExtraOverride
setzt die zusätzliche Quelldatei zum
Überschreiben.
BinCacheDB
setzt die Zwischenspeicherdatenbank.
PathPrefix
hängt einen Pfad an alle Ausgabepfade an.
FileList, SourceFileList
gibt die Dateilistendatei an.
OPTIONEN¶
Alle Befehlszeilenoptionen können durch die Konfigurationsdatei gesetzt
werden, die Beschreibung gibt die zu setzende Option an. Für boolesche
Optionen können Sie die Konfigurationsdatei außer Kraft setzen,
indem Sie etwas der Art -f-, --no-f, -f=no oder etliche
weitere Varianten benutzen.
--md5, --sha1, --sha256, --sha512
erzeugt die vorgegebene Prüfsumme. Diese Optionen
sind standardmäßig aktiviert. Wenn sie deaktiviert sind, werden
die erzeugten Indexdateien nach Möglichkeit keine
Prüfsummenfelder erhalten. Konfigurationselemente:
APT::FTPArchive::Prüfsumme und
APT::FTPArchive::Index::Prüfsumme, wobei Index
Packages, Sources oder Release sein kann und Prüfsumme MD5,
SHA1, SHA256 oder SHA512 sein kann.
-d, --db
benutzt eine Binärzwischenspeicherdatenbank. Dies
hat keine Auswirkung auf den »generate«-Befehl.
Konfigurationselement: APT::FTPArchive::DB.
-q, --quiet
still; erzeugt eine Ausgabe, die für
Protokollierung geeignet ist und Fortschrittsanzeiger weglässt. Mehr
»q«s unterdrücken mehr Ausgaben, bis zu einem Maximum von
2. Sie können außerdem -q=# benutzen, um die Stillestufe
zu setzen, was die Konfigurationsdatei außer Kraft setzt.
Konfigurationselement: quiet.
--delink
entfernt Verweise. Wenn die External-Links-Einstellung
benutzt wird, schaltet diese Option tatsächlich das Entfernen von
Verweisen zu Dateien ein. Standardmäßig ist es an und kann mit
--no-delink ausgeschaltet werden. Konfigurationselement:
APT::FTPArchive::DeLinkAct.
--contents
führt Inhaltsgenerierung durch. Wenn diese Option
gesetzt ist und Paketindizes mit einer Zwischenspeicherdatenbank generiert
werden, dann wird die Dateiliste auch extrahiert und für spätere
Benutzung in der Datenbank gespeichert. Wenn der
»generate«-Befehl benutzt wird, erlaubt diese Option
außerdem die Erzeugung beliebiger Contents-Dateien. Die Vorgabe ist an.
Konfigurationselement: APT::FTPArchive::Contents.
-s, --source-override
wählt die Quelldatei zum außer 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
möglich in einer Zwischenspeicherdatenbank. Falls Pakete neu kompiliert
und/oder neu mit der gleichen Version veröffentlicht werden,
führt dies zu Problemen, da die nun veralteten zwischengespeicherten
Metadaten, wie Größe und Prüfsumme, benutzt werden. Mit
dieser eingeschalteten Option wird dies nicht weiter vorkommen, da
geprüft wird, ob die Datei geändert wurde. Beachten Sie, dass
diese Option standardmäßig 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 zusätzlichen Prüfungen daher
nutzlos sind.
APT::FTPArchive::LongDescription
Diese Konfigurationsoption ist
standardmäßig »true« und sollte nur auf
»false« gesetzt werden, wenn das mit
apt-ftparchive(1)
generierte Archiv außerdem 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
-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
müssen, geben Sie eine Datei in der Umgebungsvariable
APT_CONFIG
an. Lesen Sie
apt.conf(5), um Syntax-Informationen zu erhalten.
-o, --option
eine Konfigurationsoption setzen; hiermit wird eine
beliebige Konfigurationsoption gesetzt. Die Syntax lautet -o
Foo::Bar=bar. -o und --option kann mehrfach benutzt werden,
um verschiedene Optionen zu setzen.