Home Wiki > Repository
Sign up | Login

Repository

tagline: Aus openSUSE

Dieser Artikel beschreibt Aufbau und Funktion eines Repositorys in openSUSE-Distributionen.

Was ist eine Paketquelle?

Eine Paketquelle stellt einem System Softwarepakete bereit, und zwar in zwei Teilen:

  1. Metadaten
  2. Nutzdaten (bspw. Pakete)

Die meisten Softwaredepots enthalten nur Pakete. SUSE-Depots enthalten außerdem Patches, Schemata und Produktverwaltung.

Metadaten

"Metadaten" sind sozusagen das Inhaltsverzeichnis der Paketquelle; sie enthalten verschiedene Informationen über die Software (normalerweise RPM-Pakete) die im Depot bereitsteht.

  • Paketname, -version, Veröffentlichungsversion, Zielarchitektur und Distribution
  • Zusammenfassung, Beschreibung, Lizenz, Web-Seite des Projekts
  • Was vom Paket noch benötigt wird (andere Pakete, bestimmte Werkzeuge oder Bibliotheken)
  • Was es bereitstellt (unter anderem eine Liste der im Paket enthaltenen Dateien)
  • Das Änderungsprotokoll der Software

Diese Metadaten werden von den Paketverwaltern wie Zypper, Smart, YUM usw. benötigt, um zu berechnen, wie sie Aktionen wie Installieren, Aktualisieren und Entfernen durchführen. (Die wichtigsten Informationen sind dabei, was die Pakete bereitstellen und was sie benötigen.)

Die Metadaten reichen nicht zur Installation der Software aus – die Pakete sind Teil der Nutzlast (siehe unten).

Metadaten werden beim ersten Zugriff auf ein Paketdepot komplett heruntergeladen oder aufgefrischt, wenn sich Teile geändert haben (weil bspw. Pakete aktualisiert oder hinzugefügt wurden).

Der Hauptunterschied zwischen den verschiedenen Depottypen (siehe unten) ist die Darstellung der Metadaten. Der Inhalt der Metadaten ist meist identisch.

Für Metadaten existieren verschiedene Formate:

  • REPOMD (Repository MetaData), auch "rpm-md" (RPM Metadata) genannt oder "yum" (weil es das ursprüngliche Format des Paketverwalters YUM ist)
  • YaST2
  • APT-RPM (für RPM) und APT-DEB (für DEB)
  • Red Carpet (auch Open Carpet genannt)
  • RPM-HDL (RPM Header List)
  • URPMI (für Mandrivas Paketverwalter)
  • slack, für Slackwares "Paketverwalter"

und vielleicht auch noch ein paar andere.

Es scheint also unglücklicherweise für jeden Paketverwalter ein anderes Metadatenformat zu geben.

Mittlerweile scheinen aber die meisten Paketverwalter zu REPOMD überzugehen, das sich dadurch zu einem allgemein akzeptierten Standard entwickelt.

  • YaST2 unterstützt es seit SUSE Linux 10.0
  • Libzypp unterstützt es seit SUSE Linux 10.1
  • yum unterstützt es natürlich, weil es im Grunde das eigene Format ist
  • apt4rpm unterstützt es seit ein paar Versionen (allerdings noch nicht die Version in SUSE Linux 10.1)
  • Smart unterstützt sowieso fast alles ;-)

Nutzlastdaten

Auf die Nutzlastdaten – normalerweise die Pakete – wird nur bei Bedarf zugegriffen, bspw. wenn ein Paket installiert werden soll.

Beide Teile, Metadaten und Nutzlastdaten, befinden sich normalerweise auf dem gleichen Server. Das ist aber nicht zwingend erforderlich, Pakete könnten aus Gründen der Sicherheit oder Lastverteilung auch auf verschiedenen Servern liegen.

Andere Bezeichnungen für Paketquellen

Aus der englischen Sprache stammt der auch häufig im deutschen Sprachraum verwendete Begriff Repository. Die meisten Paketverwaltungswerkzeuge verwenden aber eigene Begriffe für eine Paketquelle, wobei damit in der Regel die folgenden Informationen gemeint sind:

  • Die Basis-URL, von der die Metadaten und die Pakete bezogen werden.
  • Ein passender Name.

Darüber hinaus werden noch andere Informationen angegeben, je nach verwendetem Paketverwalter.

  • YaST2 nennt sie "Installationsquellen/installation sources" oder "Softwarekataloge/software catalogs".
  • Smart nennt sie "Kanäle/channels".
  • apt-rpm nennt sie "Quellen/sources".
  • yum nennt sie "repos" (repositories).
  • zypper nennt sie "Service" und in neueren Versionen "Repository".

Bei all den Bezeichnungen handelt es sich aber letztendlich immer nur um eins: Eine Paketquelle. ;-)

Verschiedene Arten von Paketquellen

openSUSE unterstützt von Haus die folgenden Paketquellen:

YaST

Diese Format wird normalerweise für Installationsmedien wie CDs und DVDs benutzt. Es kommt auch zum Einsatz, wenn deren Inhalt über einen Server bereitgestellt wird. Dieses Format wird nur von SUSE Linux und openSUSE verwendet, kann aber auch mit Smart benutzt werden.

RPM MetaData

Dieses Format ist standardisiert und recht weit verbreitet. Es ist auch als "rpomd" bekannt und wird vor allem für Quellen im Internet und in lokalen Netzwerken benutzt. SUSE Linux und openSUSE unterstützen eine erweiterte Version, die auch Patches, Muster und Produkte enthält. ("rpm-metadata" wird manchmal auch einfach nur yum genannt, was allerdings missverständlich ist.) Neben auf Libzypp basierenden Programmen, wie YaST und Zypper, können auch Smart, YUM und APT-RPM (neue Versionen) damit umgehen.

Einfache Verzeichniss

plaindir – ein Verzeichnis für RPM-Pakete – wird zwar auch unterstützt, zählt nach obiger Definition aber nicht als Paketquelle.

Auf Paketdepots zugreifen

Der Zugriff auf eine Quelle geschieht über eine URL, die aus dem verwendeten Protokoll (bspw. http), dem Server (bspw. ftp.opensuse.org) und dem Verzeichnis auf dem Server (bspw. pub/opensuse/10.1) besteht. Die URL gibt allerdings nicht den Typ der Paketquelle an, wie das folgende Beispiel zeigt.

(1) http://download.opensuse.org/distribution/SL-10.1/inst-source/
(2) http://download.opensuse.org/distribution/SL-10.1/inst-source/suse/
(3) http://ftp.gwdg.de/pub/linux/suse/apt/SuSE/10.1-i386
  • (1) ist ein YaST2-Depot
  • (2) ist ein REPOMD-Depot
  • (3) ist ein APT-RPM-Depot

Siehe auch