Ein Debian Repository ist eine Sammlung von Debian Paketen, die durch
einige zusätzliche Dateien
so organisiert sind, dass aus diesem Verzeichnisbaum heraus Pakete installiert werden
können. Dies wird durch einige (wenige) zusätzliche Dateien ermöglicht. Dies sind im
Wesentlichen Index-Dateien und Dateien mit Checksummen zu den Paketen. Fügt ein Anwender
ein Repository seiner Datei /etc/apt/sources.list
hinzu, so können alle darin enthaltenen Dateien mit den verfügbaren
Werkzeugen leicht eingesehen oder installiert werden.
Repositories können sowohl online, auf einem FTP- oder HTTP-Server, als auch offline,
beispielsweise auf CD-ROM, abgelegt werden und bestehen mindestens aus einem Verzeichnis
mit Debian Paketen sowie einer Datei Packages.gz
(bei einem Binär-Repository) oder Sources.gz
(bei einem Quellcode-Repository).
In der Datei Packages.gz
sind zu jedem Paket Informationen über den Paketnamen, die Version, die
Größe sowie eine Kurz- und Langbeschreibung, die Abhängigkeiten zu anderen Paketen und
einige andere Informationen abgelegt. Diese Informationen können mit den Programmen zur
Installation (wie beispielsweise
dselect
, oder auch aptitude
) angezeigt werden.
In der Datei Sources.gz
finden Sie Informationen über den Namen, die Version und die Abhängigkeiten
zum Übersetzen des Quellcodes („build dependencies“) zu jedem Paket. Diese Informationen werden von apt-source
und anderen Programmen genutzt.
Die Datei Release
, die nicht zwingend vorhanden sein muss, enthält einige Informationen über
das Repository, die für das „Pinning“
(siehe „APT Pinning“)
von Paketen benötigt werden. Das Erzeugen einer Release
-Datei ist in
„Verwaltung des Spiegels“
und
„Erzeugen von Release-Dateien“
beschrieben.
Neben dieser vereinfachten Form von Repositories besteht auch die Möglichkeit,
Repositories für unterschiedliche Hardware-Architekturen anzulegen. APT wird dann
automatisch die für die verwendete Architektur passenden Pakete finden und installieren.
Weiterhin können Pakete zu Gruppen zusammengefasst werden, beispielsweise main
, contrib
und non-free
.
Aus Benutzer- und Administratorsicht gibt es zwei Arten von Repositories: Einfach zu benutzende Repositories sind für den Administrator recht aufwändig einzurichten. Repositories mit einer einfachen Struktur sind dagegen für den Benutzer schwieriger zu handhaben. Für Repositories, die Pakete für verschiedene Architekturen bereitstellen sollen, sind die komplexen Repositories vorzuziehen. Diese sind für den Benutzer einfacher zu handhaben, erfordern aber vom Administrator einen erhöhten Aufwand.
Die Verzeichnisstruktur eines komplexen (oder auch „automatischen“) Repository stellt sich für die verschiedenen Debian Architekturen und Bereiche wie folgt dar:
(Wurzelverzeichnis des Repositories) | +-dists | |-stable | |-main | | |-binary-alpha | | |-binary-arm | | |-binary-... | | +-source | |-contrib | | |-binary-alpha | | |-binary-arm | | |-binary-... | | +-source | +-non-free | |-binary-alpha | |-binary-arm | |-binary-... | +-source | |-testing | |-main | | |-binary-alpha | | |-binary-arm | | |-binary-... | | +-source | |-contrib | | |-binary-alpha | | |-binary-arm | | |-binary-... | | +-source | +-non-free | |-binary-alpha | |-binary-arm | |-binary-... | +-source | +-unstable |-main | |-binary-alpha | |-binary-arm | |-binary-... | +-source |-contrib | |-binary-alpha | |-binary-arm | |-binary-... | +-source +-non-free |-binary-alpha |-binary-arm |-binary-... +-source
Pakete, die einer freien Lizenz unterliegen (siehe Debian Free Software Guidelines), finden sich im Bereich „main“. Nicht-freie Software befindet sich in „non-free“, und in „contrib“ finden sich freie Pakete, die aber auf nicht-freien Paketen basieren. Debian unterstützt eine Anzahl weiterer Hardware-Architekturen, die in diesem Beispiel nicht alle aufgeführt sind.
In jedem binary-...
-Verzeichnis befindet sich eine Index-Datei Packages.gz
sowie eine optionale Datei Release
. Die Pakete müssen nicht im Verzeichnis der
Index-Datei liegen, da die Pfade zu den Paketen in der Index-Datei stehen. Dies
ermöglicht es, so genannte „Package-Pools“ zu erzeugen.
Es können beliebig viele Architekturen und Bereiche mit beliebigen Namen angelegt werden.
Einfache Repositories bestehen aus einem Wurzelverzeichnis und beliebig vielen Unterverzeichnissen. Da die Benutzer sowohl das Wurzelverzeichnis als auch den relativen Pfad zu den Unterverzeichnissen angeben müssen, kann hier eine beliebige Struktur angelegt werden. So können auch alle Dateien (Index-Dateien und Pakete) im Wurzelverzeichnis liegen. Hier sehen Sie ein einfaches Repository mit zwei Unterverzeichnissen:
(Wurzelverzeichnis des Repositorys) | |-binary +-source
Das Erzeugen der Index-Dateien für Binärpakete übernimmt das Programm dpkg-scanpackages
(siehe dpkg-scanpackages
) bzw. dpkg-scansources
(siehe dpkg-scansources
) für die Quellcode-Pakete. Beide Programme erzeugen
die Ausgabe auf der Standardausgabe, so dass dieses Ergebnis in eine Datei
umgeleitet werden muss. Um die entstehenden Dateien zu komprimieren, kann im
gleichen Arbeitsschritt noch das Programm gzip
verwendet werden. Für ein einfaches Repository
können die Index-Dateien für die Binär- und Quellcode-Pakete wie folgt erstellt
werden:
$ cd Pfad/zum/Repository $ dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz $ dpkg-scansources source | gzip -9c > source/Sources.gz
Eine detaillierte Anleitung zu den beiden Programmen findet sich in den oben beschriebenen Abschnitten, dort wird auch auf die notwendigen Argumente eingegangen.
Debian Pakete auf Webseiten verfügbar machen | |
---|---|
Mit einem kleinen PHP-Skript (zu finden unter svn.debian.org/wsvn/php-apt-parser/trunk/parse-apt-files.inc?op=file)
ist es sehr einfach möglich, die Dateien Die Einbindung in die eigene Webseite erfolgt über die beiden Zeilen
include_once("parse-apt-files.inc"); parse_and_list( "Packages.gz", "Sources.gz" );
Werden auf der Seite Pakete für unterschiedliche Hardware-Architekturen zur Verfügung gestellt, so erfolgt die Einbindung in die Webseite wie folgt:
include_once("parse-apt-files.inc"); parse_and_list( Array("i386/Packages.gz", "powerpc/Packages.gz"), "Sources.gz" );
|
Um das „Pinning“ von Paketen zu ermöglichen
(siehe Pinning), muss eine Release
-Datei in jedem Verzeichnis, in dem sich eine
Index-Datei befindet, zur Verfügung gestellt werden. Release
-Dateien sind einfache Text-Dateien mit
folgendem Aufbau:
Archive: archive Component: component Origin: YourCompany Label: YourCompany Debian repository Architecture: architecture
Zum Erzeugen dieser Dateien kann auch das in „Verwaltung des Spiegels“ beschriebene Skript verwendet werden.
Einträge in der Release-Datei
Archive
Der Name der Distribution, für die die Pakete vorgesehen sind, beispielsweise „stable“, „testing“ oder auch „unstable“.
Component
Der Bereich, dem die Pakete zugeordnet sind. Dies kann „main“, „non-free“ oder „contrib“ sein.
Origin
Der Name der Person, die dieses Repository erzeugt hat.
Label
Eine beliebige Beschreibung für dieses Repository.
Architecture
Hardware-Architektur, für die die Pakete erzeugt wurden, beispielsweise „i386“, „powerpc“, „alpha“ oder auch „sparc“.
Insbesondere müssen Sie darauf achten, dass die Angaben zu Archive
und Architecture
korrekt sind, da diese am häufigsten für
das Pinning von Paketen eingesetzt werden. Alle anderen Angaben sind eher
unwichtig.
Bei komplexen Repositories führt die umfangreiche Verzeichnisstruktur schnell zur Unübersichtlichkeit und auch zur Verschwendung von Plattenplatz, da viele Pakete (beispielsweise Dokumentation) für unterschiedliche Architekturen geeignet sind. Diese Pakete müssen nicht mehrfach im Repository vorgehalten werden.
Die Lösung dieses Problems sind so genannte „Package Pools“. Ein Pool ist ein gesondertes Verzeichnis unterhalb des Wurzelverzeichnisses des Repository, in dem alle Pakete (Binaries für alle Architekturen, für alle Distributionen und Bereiche sowie die Quellcode-Pakete) abgelegt werden. Durch die Verwendung von „override-files“ und einigen Skripten können die oben genannten Probleme umgangen werden. Ein gutes Beispiel für die Verwendung eines solchen Pools ist sicherlich das Debian Repository selbst.
Um die notwendigen Index-Dateien für ein solches Repository zu erzeugen, sollten
Sie den Abschnitt zu
apt-ftparchive
aus dem Paket apt-utils
zu Rate ziehen. Für einfache Repositories
ist
apt-move
eine gute Hilfe.
© 1999 - 2024 | Das Debian GNU/Linux Anwenderhandbuch von Frank Ronneburg steht unter einer Creative Commons Namensnennung-Nicht Kommerziell-Keine Bearbeitung 3.0 Deutschland Lizenz.