20Software- und Paketverwaltung

Dieses Kapitel beschreibt, wie Sie unter Linux Software bzw. Pakete installieren und aktualisieren und welche Techniken dabei zum Einsatz kommen. Zentrale Themen dieses Kapitels sind die Paketformate RPM und DEB sowie die Paketverwaltungskommandos apt-get, aptitude, dnf, dpkg, rpm, yum und zypper.

20.1Einführung

Unter Windows ist es üblich, neue Programme aus einer MSI-Datei (Microsoft Installer) oder durch das Ausführen von setup.exe zu installieren. Das Setup-Paket enthält alle Dateien, die für das Programm erforderlich sind.

Linux verfolgt einen ganz anderen Ansatz: Mit einem Paketverwaltungssystem wird eine Datenbank verwaltet, die Informationen über alle bereits installierten Software-Pakete enthält. Neue Programme werden durch die Kommandos des Paketverwaltungssystems installiert und dabei von zentralen Paketquellen aus dem Internet heruntergeladen. Dieses Konzept hat eine Menge Vorteile:

Der Linux-Markt wird von zwei verschiedenen Paketverwaltungssystemen dominiert:

Die Kommandos zur Installation, Deinstallation und zum Update dieser Pakete (rpm, dpkg etc.) sind allerdings relativ primitiv. Sie können weder Pakete aus Paketquellen herunterladen noch Paketabhängigkeiten auflösen.

Deswegen entstanden aufbauend auf rpm bzw. dpkg neue Paketverwaltungssysteme mit einer Menge Zusatzfunktionen. Dazu zählen die automatische Installation abhängiger Pakete, die Durchführung von Updates für das gesamte System und die Berücksichtigung von Paketquellen aus dem Internet.

Beispiele für derartige Paketverwaltungssysteme sind DNF, Yum und ZYpp für RPM-Pakete sowie APT und Aptitude für DEB-Pakete (siehe Abbildung 20.1).

Low- und High-level-Paketverwaltungssysteme

Abbildung 20.1Low- und High-level-Paketverwaltungssysteme

Ergänzend zu diesen Standardprogrammen gibt es bei manchen Distributionen eigene Programme zur Paketverwaltung und zur Durchführung von Updates:

CentOS, Fedora, RHEL:

PackageKit

Debian, Ubuntu:

update-manager

SUSE:

YaST-Module der Gruppe Software

Ubuntu:

Ubuntu Software Center, gnome-language-selector

Nicht nur die Paketverwaltungswerkzeuge unterscheiden sich von Distribution zu Distribution, auch sonst gibt es trotz gemeinsamer Standards viele distributionsspezifische Eigenheiten. Diese sind in Abschnitt 20.12 zusammengefasst.

Vermeiden Sie es, Pakete unterschiedlicher Distributionen zu mischen

Die Pakete einer Linux-Distribution sind aufeinander abgestimmt. Das bedeutet, dass sie einheitliche Bibliotheken nutzen, mit demselben Compiler kompiliert wurden etc. Als Linux-Einsteiger sind Sie deshalb gut beraten, nur Pakete zu installieren, die für Ihre Distribution gedacht sind. Nicht zu empfehlen ist die Installation eines Red-Hat-Pakets unter SUSE (oder umgekehrt). Die dabei auftretenden Probleme, wie fehlende Bibliotheken oder nicht erfüllte Paketabhängigkeiten, lassen sich – wenn überhaupt – nur von Linux-Profis beheben.

Die Paketverwaltung gängiger Distributionen funktioniert gut, ist aber auch mit Nachteilen verbunden:

Wenn Sie für 50, 100 oder 1000 Linux-Rechner verantwortlich sind, wird die Administration und Paketverwaltung trotz der in diesem Kapitel vorgestellten Werkzeuge zur Qual. Sie benötigen ein Werkzeug, um zentral auf allen oder auf zuvor ausgewählten Rechnern ein Update durchzuführen, ein neues Programm zu installieren oder die Konfiguration zu verändern. Je nach Distribution bieten sich hierfür Red Hat Network, ZENworks (Novell/SUSE), m23 (diverse Distributionen) oder Landscape (Ubuntu) an.

http://rhn.redhat.com
https://www.novell.com/products/zenworks/zenworks-suite
http://m23.sourceforge.net
https://landscape.canonical.com

Das Kommando tar hilft dabei, eine Menge Dateien zu einem Archiv zusammenzufassen bzw. ein derartiges Archiv wieder auszupacken. In den Anfangszeiten von Linux, noch bevor es die Paketformate RPM und DEB gab, verwendeten die meisten Distributionen tar-Archive wie Pakete. Selbst heute gibt es noch Distributionen, die tar-Archive als Paketersatz verwenden, z.B. Slackware.

Aber auch für alle anderen Distributionen spielen tar-Archive eine gewisse Rolle im Alltag fortgeschrittener Linux-Anwender: Viele Software-Entwickler, die keine Lust dazu haben, RPM- oder DEB-Pakete zu erzeugen, stellen stattdessen einfache tar-Archive mit allen erforderlichen Dateien zur Verfügung. Das Archiv muss lediglich am richtigen Ort mit tar czf name.tgz ausgepackt werden – schon ist das Programm installiert. Allerdings führt tar an der Paketverwaltung Ihrer Distribution vorbei! Ein so installiertes Programm lässt sich schwer aktualisieren, nicht deinstallieren und kann Konflikte verursachen. Die Installation von tar-Paketen ist daher nur zu empfehlen, wenn Sie wissen, was Sie tun, und wenn das gewünschte Programm in keiner anderen Form verfügbar ist.

Die Zukunft der Paketverwaltung

Neben den in diesem Buch behandelten RPM- und DEB-Paketformaten gibt es einige weitere, die bis jetzt aber keine große Bedeutung erlangt haben. Zu den wichtigsten Zielen neuer Paketformate zählt eine höhere Distributionsunabhängigkeit sowie die Möglichkeit, Pakete bzw. Software ohne root-Rechte in lokale Benutzerverzeichnisse zu installieren. Relativ ausgereift, wenn auch kaum verbreitet, ist Zero Install:

http://0install.net

Innerhalb des Gnome-Entwickler-Teams wurden Pläne geschmiedet, wie eine Software-Verwaltung ganz ohne Pakete aussehen könnte. Das Ergebnis ist »OSTree«, gewissermaßen ein boot-fähiges Dateisystem mit versionsabhängigen Zweigen für neue Programmversionen. Seit Mitte 2014 ist es recht ruhig um diese Initiative geworden, Red Hat hat aber viele Ideen im Rahmen seines Atomic-Projekts aufgegriffen und weitergeführt (siehe unten).

https://wiki.gnome.org/action/show/Projects/OSTree

Frischer Wind in die angestaubten Ecken der Paketverwaltungssysteme bläst momentan auch aus der Virtualisierungswelt. Dort hat »Docker« in den letzten Jahren zunehmend an Bedeutung gewonnen. Docker ist ein besonders effizientes Virtualisierungssystem, bei dem Linux-Systeme in sogenannten Containern ausgeführt werden. Anstelle gewöhnlicher, aus Paketen zusammengesetzter Distributionen stehen hier aber Komplettlösungen für eine bestimmte Aufgabenstellung im Vordergrund. Diese werden als »Images« zur Verfügung gestellt. Images können en-bloc aktualisiert werden, wobei es im Hintergrund eine Git-ähnliche Versionsverwaltung gibt.

https://www.docker.com/whatisdocker

Auch das von Red Hat initiierte Projekt Atomic verwendet Docker als Basis. Zur Software-Verwaltung wird dabei aber die Eigenentwicklung rpm-ostree verwendet. Details können Sie hier nachlesen:

http://www.projectatomic.io

Bei Canonical gibt es Überlegungen, in Zukunft Snappy anstelle von Debian-Paketen als Basis für die Software-Verwaltung zu verwenden. Die Grundidee besteht darin, Software in Transaktionen aus Images zu installieren. Snappy kommt momentan nur bei der speziell für die Cloud optimierten Ubuntu-Variante »Snappy Ubuntu Core« zum Einsatz. Es ist momentan nicht abzusehen, ob bzw. wie schnell Canonical dieses Konzept auch auf die traditionellen Ubuntu-Distributionen überträgt.

https://developer.ubuntu.com/en/snappy
https://plus.google.com/+WillCooke/posts/AxfoU3N1Ezo