claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 08/2005   »   Ausgabe bestellen

Der Sinn und die Geschichte von Paketverwaltungssystemen

Einpacken und mitnehmen

von Carsten Schnober


Die Paketverwaltung erleichtert unter Linux die Installation neuer Software. Wir erklären, wie RPM funktioniert und warum jede Distribution ihre eigenen Pakete braucht.

Vergleich man ein Computer-System mit einem realen Schreibtisch, spiegelt die grafische Oberfläche die Tischplatte wider und die Dateien entsprechen dem ganzen Repertoire von Büromaterial. Damit sich auf einem Schreibtisch nicht alles stapelt, sortiert man die Utensilien in Schubladen und andere Behälter. Eine ähnliche Aufgabe erfüllen für die Dateien auf der Festplatte eines Computers die Programmpakete: Braucht der Benutzer den Inhalt eines Software-Pakets nicht mehr, räumt er ihn mit Hilfe des Paketverwaltungssystems aus dem Weg.

Dateienchaos

Eine Anwendung besteht üblicherweise aus zahlreichen Dateien. Neben der ausführbaren Programmdatei benötigt sie Konfigurationsdateien, Grafiken, die Dokumentation, Menü-Einträge und Desktop-Verknüpfungen. Damit kommen schon bei kleineren Projekten einige Dutzend Einträge zusammen. Große Pakete bestehen häufig aus mehreren ausführbaren Einzelprogrammen und hunderten Dateien.

Hat man in der realen Welt ein neues Set mit Malstiften, legt man die Schachtel auf den Tisch, öffnet sie und nimmt die benötigten Farben heraus. Wenn die Lust zur Malerei vergangen ist, räumt man die Stifte zurück in die vorgesehenen Box und verstaut sie in einem Schrank oder einer Schublade. So läge es auch in der Computer-Welt nahe, ein Programmpaket bei Gebrauch auszupacken, die enthaltenen Dateien ins richtige Verzeichnis zu kopieren und diese wenn man sie nicht mehr braucht, wieder zu löschen. Doch die große Menge erschwert dies entscheidend: Ein Linux-Desktop-System besteht je nach Distribution und Installationsumfang aus etwa 1.000 Paketen. Bei jedem einzelnen den Überblick über die dazugehörigen Dateien zu behalten, überfordert selbst das beste Gedächtnis.

Ein Paketverwaltungssystem übernimmt diese Aufgabe. Aus einer Paketdatei extrahiert es die Dateien und kopiert sie an die richtigen Orte. In einer eigenen Datenbank vermerkt es dann, dass das jeweilige Paket im System installiert ist und welche Dateien dazu gehören. Braucht der Benutzer eine Software nicht mehr, deinstalliert er sie mit dem Paketmanager, der daraufhin die entsprechenden Dateien wieder entfernt.

Und noch viel mehr

Das Problem des Löschens löst Windows beispielsweise, indem es jede Anwendung in ein eigenes Verzeichnis legt. Löscht man diesen Ordner, entfernt man damit zumindest die meisten der mitgebrachten Dateien. Ginge es lediglich ums Entfernen der Dateien, ließe sich auch Linux auf eine solche Ordnung umstellen; tatsächlich sortiert es Dateien nach Kategorieren in bestimmte Verzeichnisse die ausführbaren beispielsweise unter /usr/bin und die Konfigurationsdateien unter /etc.

Aber ein Verwaltungssystem kann mehr. Ein Paket liefert Informationen mit, die über die enthaltenen Dateinamen hinausgehen, darunter als wichtigster Teil die Liste der so genannten Abhängigkeiten (dependencies). Sie weist die Paketverwaltung darauf hin, dass ein Programm weitere Software benötigt, um zu funktionieren. Damit stellt das Management-System beispielsweise bei einem KDE-Programm sicher, dass auch die KDE-Umgebung auf dem System existiert. Diese Methode verhindert außerdem das versehentliche Entfernen eines Programms, während ein anderes es zwingend voraussetzt.

Den Umgang mit den Abhängigkeiten verfeinern weitere Eigenschaften. So kann ein Paket dem Verwaltungssystem mitteilen, dass es die Aufgabe einer anderen Software ebenfalls erfüllt, beispielsweise die eines Vorgängers. Hängt dann ein drittes Paket laut seiner Paketbeschreibung von besagtem Vorgänger ab, weiß der Paket-Manager, dass er ihn nicht zu installieren braucht, da das installierte Paket die benötigte Funktion miterledigt.

Auch für den umgekehrten Fall existiert ein Eintrag in den Paketinformationen: Wenn ein Programm nicht neben einem anderen koexistieren kann, beispielsweise wegen identischer Teilinhalte, installiert der Paket-Manager das zweite nicht, wenn es das erste bereits im System gibt.

Ein weiterer Automatismus hebt ein Paketverwaltungssystem über das Niveau des reinen Kopierens und Löschens: Vor und nach der eigentlichen Installation kann der Paket-Manager abhängig vom gerade eingerichteten Programm weitere Aktionen ausführen. Gewöhnlich verwenden die Distributionen diesen Mechanismus, um die Software zu konfigurieren. Nach der Installation führt der Paket-Manager dann ein Programm aus, das andere vorhandene Software und Hardware sichtet und das neue Programm entsprechend einrichtet oder einen im Hintergrund laufenden Dienst startet.

Geschichte

Anwendungen bestehen schon lange aus mehr als nur einer ausführbaren Datei, das gesamte Zubehör fassen die Entwickler ebenso lange in Software-Paketen zusammen. In den Anfangstagen von Linux kamen diese meist in Form eines komprimierten Archivs (tar.gz) und enthielten den Quelltext des Programms, den der Benutzer manuell zu übersetzen und zu installieren hatte.

Das gestaltete sich jedoch selbst für Benutzer mit der notwendigen Fachkenntnis bald zu umständlich zeitintensiv. In heutigen Tagen wäre es undenkbar, ein komplettes Desktop-System auf diese Weise aufzusetzen. Aber schon bevor Linux-Systeme die heutigen Ausmaße erreichten, war eine Lösung für dieses Problem unverzichtbar.

Sie zu finden war eine der wichtigsten Aufgaben der ersten Distributionen. Zunächst kompilierten sie die Quelltext und lieferten die fertigen Dateien in tar.gz-Archiven aus. Die Benutzer entpackten sie dann und konnten das enthaltene Programm direkt ausführen. Eine der ältesten Linux-Distributionen, Slackware, liefert ihre Pakete noch heute nach diesem Prinzip aus. Die beschriebenen Vorzüge einer modernen Paketverwaltung fehlen dabei jedoch.

Der neue Standard

Erfinder und Namensgeber der heute von einem großen Teil der Linux-Distributionen verwendeten Paketverwaltung RPM (Red Hat Package Manager) [1] war die Firma Red Hat [2]. Sie wurde 1993 gegründet und brachte ein Jahr später Version 1.0 ihres Red Hat Linux heraus. Bis zur ersten RPM-basierten Distribution, Red Hat Linux 2.0, verstrich ein weiteres Jahr. Da es sich bei RPM um freie Software handelt, konnten es andere Anbieter wie Suse, mittlerweile Teil von Novell [3], und Mandrakesoft, inzwischen Mandriva [4], ebenfalls verwenden und weiterentwickeln. In diesem Zuge verallgemeinerte sich die Bedeutung der Abkürzung zu RPM Package Manager. Heute liegt RPM in Version 4 vor.

Die andere weit verbreitete Linux-Paketverwaltung stammt von der etwa zur gleichen Zeit wie Red Hat Linux von einem gleichnamigen freien Projekt entworfene Distribution Debian [5]. Sie verwendete von Anfang die eigene RPM-Alternative DPKG (Debian Package Manager), die dazugehörigen Paketdateien enden auf .deb. Auch die zahlreichen auf Debian Linux basierenden Distributionen wie Ubuntu [5] und Knoppix [6] benutzen diese Paketverwaltung.

Praxis

Bei beiden gebräuchlichen Paketverwaltungssystemen handelt es sich um Kommandozeilenwerkzeuge, der Aufruf erfolgt über die Kommandos rpm und dpkg. Ihre Handhabung ähnelt sich, ein Paket installieren beide mit rpm -i paket.rpm oder dpkg -i paket.deb. Die insbesondere bei einem umfangreichen System zahlreichen Abhängigkeiten führen dabei jedoch schnell zu langen Ketten weiterer benötigter Dateien. Diese in der richtigen Reihenfolge zu finden und einzurichten, erfordert vom Benutzer neben einiger Kommandozeilenkenntnisse viel Geduld.

Deshalb erfolgt der alltägliche Gebrauch über Aufsätze, die derartige Probleme automatisch lösen. Für DPKG erfreut sich das Kommandozeilenwerkzeug APT (Advanced Package Tool) seit langem großer Beliebtheit: Es behält den Überblick über sämtliche aus den konfigurierten Quellen (Repositories) im Internet oder auf CD verfügbaren Pakete.

Wenn man ein neues Programm installieren möchte, lädt APT das Paket ebenso wie die Abhängigkeiten herunter oder fordert zum Einlegen des passenden Datenträgers auf. Hat es die notwendigen Dateien gesammelt, installiert es diese, so dass man sich weder um die Abhängigkeiten noch um den Download kümmern muss. Darüber hinaus bietet es eine Suchfunktion und zeigt Kurzbeschreibungen zu den Paketen.

Ein APT ähnelndes Kommandozeilenwerkzeug schufen die Entwickler der auf Apple-Computer ausgerichteten Distribution Yellow Dog Linux [7] für das RPM-System mit dem Yellowdog Updater. Darauf aufbauend entwarf der Programmierer Seith Vidal den Nachfolger YUM (Yellow Dog Updater, Modified) [8], der zur Standardinstallation von Fedora Core Linux [9] gehört.

Auf den Desktop

Eingefleischte Systemadministratoren bevorzugen die Kommandozeilenwerkzeuge häufig, da sie beim Start keine Zeit für den Aufbau einer Benutzeroberfläche verbrauchen. Doch wer sein Home-System administriert, greift gerne auf etwas mehr Komfort zurück. Dazu bieten die Distributionen wiederum eigene Lösungen.

Unter Suse Linux erledigt das Allzweckwerkzeug Yast (Abbildung 1) auch die Paketverwaltung. Es bietet über seine grafische Oberfläche eine Suchfunktion sowie Kurzbeschreibungen und kümmert sich um die Abhängigkeiten. Dasselbe erledigt unter Mandrake Linux RPMDrake (Abbildung 2). Dem Fedora-eigenen Paketmanager (Abbildung 3) mangelt es leider an einer Suchfunktionen. Außerdem installiert er lediglich ganze Paketgruppen, so dass viele Fedora-Nutzer auf YUM ausweichen.

Abb. 1: Unter Suse Linux kümmert sich das Konfigurationsprogramm Yast um die Paketverwaltung.

Abb. 2: Mandrake Linux richtet mit dem Spezialwerkzeug RPMDrake neue Software ein oder entfernt bereits installierte.

Abb. 3: Der Paket-Manager von Fedora Core Linux installiert nur ganze Programmgruppen.

Sie verwenden wie die zahlreichen weiteren Oberflächen, die bei anderen Distributionen zum Einsatz kommen, ebenfalls entweder das RPM- oder das DPKG-System. Im letzteren Fall greifen sie meist nicht direkt auf das dpkg-Kommando, sondern auf APT zurück, da es bereits alle benötigten Funktionen implementiert. Darunter fallen beispielsweise die jeweils auf ihre Systeme spezialisierten APT-Frontends von Xandros [10] mit Xandros Networks oder Linspire [11] mit Click'n'Run.

Flexibel gibt sich das Programm KPackage; es geht gleichermaßen mit RPM- wie mit Debian-Paketen um. Beide lassen sich jedoch kaum innerhalb eines Systems vereinen, so dass die Distributionen gewöhnlich ein auf ihren Einsatzzweck optimiertes Werkzeug anbieten.

RPM ungleich RPM

Pakete eines Verwaltungssystems gleichen sich im technischen Aufbau, so dass beispielsweise Suses Yast für Mandrake Linux erstellte Pakete einliest. Aufgrund des unterschiedlichen Umgangs mit den enthaltenen Dateien nützt dies jedoch häufig wenig.

Die Problematik beginnt mit dem Speicherort. Einige Distributoren interpretieren eine Anwendung möglicherweise als nicht notwendiges Zusatzpaket und speichern ihre Dateien deshalb gemäß den Linux-Standards unter dem Verzeichnis /opt. Andere sortieren sie dagegen ins allgemein für Anwenderprogramme und -werkzeuge vorgesehene /usr-Verzeichnis ein, ebenfalls ohne gegen die Norm zu verstoßen. Da das RPM-Paket die Zielpfade festlegt, kommt es hierbei auf die distributionsinterne Logik an.

Gravierendere Probleme ergeben sich beim Verarbeiten der Abhängigkeiten. Die Distributoren benennen Pakete häufig unterschiedlich und füllen sie mit verschiedenen Inhalten. So mag in einem Fall ein Paket neben dem ausführbaren Programm die zugehörigen Bibliotheken enthalten, während eine andere Distribution beides in zwei Pakete aufteilt. Setzt die Installation einer neuen RPM-Datei das Bibliothekspaket voraus, führt das zu einem Fehler, obwohl alle benötigten Dateien auf der Festplatte liegen.

Fremde Welten

Das ursprüngliche Problem, den Überblick über installierte Programmpakete und ihre Dateien zu behalten, stellt sich natürlich nicht nur unter Linux. Da alle Unix-artigen Betriebssysteme wie Linux die Dateien auf der Festplatte nicht nach Programmzugehörigkeit sondern nach Eigenschaften einsortieren, suchen auch die kommerziellen Unix-Derivate schon lange nach einer Lösung. Die Kompatibilität zu anderen Systemen spielte bei ihnen eine untergeordnete Rolle, so dass sie zumeist eine eigene Paketverwaltung verwenden.

Auch Windows-Anwendungen legen bei der Installation häufig Dateien außerhalb ihres Programmverzeichnisses ab. In früheren Versionen des Betriebssystems führte dies zu zahlreichen platzraubenden Überbleibseln. Inzwischen verwenden deshalb die meisten Windows-Applikationen ein Installationsprogramm, das auch das vollständige Entfernen vorsieht. Es fehlt allerdings eine zentrale Datenbank über die installierten und verfügbaren Pakete und damit auch die automatische Auflösung von Abhängigkeiten. Deshalb liefern viele Anwendungen Komponenten mit, die bereits auf dem System vorhanden sein können. Diese Methode beugt Problemen bei der Installation vor, verbraucht aber zugleich mehr Platz als das Prinzip "ein Programm für eine Aufgabe".

Entscheidender Punkt

Die Paketverwaltungssysteme von Linux bieten hier also große Vorteile. Da der Umgang mit Paketen von Distribution zu Distribution zum Teil deutlich variiert, stellt diese Funktion ein wichtiges Kriterium bei der individuellen Auswahl der Linux-Variante dar: Erfüllt die Oberfläche die eigenen Ansprüche und gibt es die benötigte Software als distributionsspezifische Pakete? Eine pauschale Antwort darauf gibt es nicht, aber wer eher seltene Programme braucht, sollte vor der Entscheidung für eine Distribution die Paketliste auf ihrer Homepage überprüfen. (csc)

Infos
[1] RPM: http://www.rpm.org
[2] Red Hat: http://www.redhat.com
[3] Novell: http://www.novell.com
[4] Debian: http://www.debian.org
[5] Ubuntu: http://www.ubuntulinux.org
[6] Knoppix: http://www.knopper.net/knoppix
[7] Yellow Dog Linux: http://www.yellowdoglinux.com
[8] YUM: http://linux.duke.edu/projects/yum
[9] Fedora Core Linux: http://fedora.redhat.com
[10] Xandros Linux: http://www.xandros.com
[11] Linspire Linux: http://www.linspire.com

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2017 COMPUTEC MEDIA GmbH | Last modified: 2007-04-05 11:10

Nutzungsbasierte Onlinewerbung

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]