AA_PO-26264.jpg

© scanrail, 123RF

Praxisnahe Paketverwaltung unter Debian

Lagerhaltung

Technologien wie Flatpak und Snap suggerieren, bisherige Paketverwaltungskonzepte hätten ausgedient. Ein Blick auf den aktuellen Stand der Softwareverwaltung unter Linux zeigt, dass dieser Eindruck täuscht.

In den letzten Monaten gab es wieder einmal kräftiges Gebrüll im Zoo der Paketformate für Linux: Canonical verkündete lautstark seinen Neuzugang – die distributionsübergreifende Entwicklung [1] und Verfügbarkeit seines Snap-Formats [2]. Dass sich das Ganze auf sehr dünnem Eis bewegt, unter einer proprietären Lizenz steht und sich derzeit lediglich auf Ubuntu ohne die Unterstützung seiner Derivate bezieht, fiel in der Pressemitteilung unter den Tisch. Vor den Augen aufmerksamer Tester [3] ließ sich das jedoch nicht wirklich verbergen [4].

Als ähnliche sommerlochfüllende Presse-Ente erwies sich in den vergangenen Jahren auch die Ankündigung für Click-Pakete [5], rückblickend eine Art Vorgänger der Snaps, deren Bedeutung für Linux-Systeme sich bis heute in engen Grenzen hält. Das muss mit Snap nicht ebenso laufen – vielleicht etabliert sich das Format ja für einen bestimmten Anwendungsbereich. Allerdings haben bislang alle von Canonical mit großem Tamtam angekündigten Formate stets viele Ressourcen gebunden und verschwanden trotzdem nach kurzer Zeit wieder in der Versenkung.

Bevor Sie auf den nächsten möglichen Hype aufspringen, sollten Sie sich daher vergegenwärtigen, wie gut die bestehenden Paketsysteme durchdacht sind und was diese derzeit eigentlich alles für Sie leisten. Danach fällt es Ihnen leichter zu beurteilen, ob Sie die seit über 20 Jahren bestehenden Formate RPM und DEB nur in die Kategorie "Oldtimer" einsortieren, sie womöglich schon ganz in Rente schicken oder ihnen weiterhin treu bleiben.

In Bezug auf die Möglichkeiten zur Paketverwaltung legen beide Formate die Messlatte sehr hoch. Die gewünschten Informationen zum Paketstatus mit den Werkzeugen jedoch herauszukitzeln [6], gleicht häufig dem Stöbern in einem verwunschenen Garten [7]. In diesem Beitrag zeigen wir Ihnen anhand des DEB-Formats und ausgesuchter Anwendungsbeispiele, was abseits der ausgetretenen Pfade alles möglich ist. Alle nachfolgenden Beispiele passen für Debian und größtenteils auch für die entsprechenden Derivate wie etwa Ubuntu, Linux Mint und Armbian.

Paketmanagement-Grundlagen

Eine Zusammenstellung zum Debian-Paketformat mit ausführlicher Beschreibung der einzelnen Werkzeuge und Schalter erhalten Sie im Buch "Debian-Paketmanagement – Konzepte, Werkzeuge und Praxis" [14]. Sie finden es in den Formaten HTML, PDF, EPUB und MOBI auf dem Datenträger zu diesem Heft. Es unterliegt der Creative-Commons-Lizenz (CC-BY-SA 4.0) und steht ab Debian 9 "Stretch" auch als reguläres Debian-Paket [15] zur Verfügung.

Bestehende Container-Paketformate

Grundsätzlich erscheint die Idee begrüßenswert, die bereits bestehenden Paketformate weiterzuentwickeln und die Bereitstellung von Anwendungen distributionsübergreifend zu vereinheitlichen und zu erleichtern. Neben den jüngst in einem Artikel [16] vorgestellten Formaten Snap [1] und Flatpak [17] existieren seit Längerem ähnliche Ideen in variierenden Entwicklungsstadien, die eine einzelne Anwendung in einem in sich abgeschlossenen Container kapseln. Analog zu Googles Webbrowser Chrome umfasst der Container bei Snap und Flatpak auch eine Sandbox. Das zielt darauf ab, die Anwendung und die Betriebssystemumgebung voneinander abzuschirmen und die Schnittstellen zur Kommunikation der Anwendung nach draußen gezielt freizugeben. Zur weiteren Auswahl steht in dieser Kategorie neben einer Chroot-Umgebung die Virtualisierung in diversen Geschmacksrichtungen. In die letztere Kategorie fallen das Docker-Framework [18], das Open Container Format OCF [19], App Container Images (kurz "ACI" oder "appc") [20], Rocket [21] sowie Java Virtual Machines (JVM). Dass sich der Bewegungsspielraum von Anwendungen auch anders und insbesondere ohne viel Overhead eingrenzen lässt, beweisen Firejails [22].

Snap vs. Flatpak

Snap und Flatpak setzen unterschiedliche Schwerpunkte [23]: Während sich Snap als Paketformat für Server sieht, zielt Flatpak auf den Desktop. Weiterhin steht Snap derzeit ausschließlich über ein zentrales Repository bereit, während Flatpak auf die Verbreitung über individuelle, verteilte Archive setzt. Zudem hängen Snap und Flatpak an den distributionsspezifischen Display-Servern Mir beziehungsweise Wayland. Da die Firmen Canonical respektive Red Hat die Formate vorantreiben, zeigen sich beide stark kommerziell angehaucht und liegen im Grenzbereich von freier Software.

Softwareverteilung

Unter Linux kommt bisher das Prinzip zur Anwendung, Software komponentenweise zu zerlegen und in Form separater Pakete bereitzustellen. Welche Pakete zusammengehören und einander bedingen, legt der Entwickler beziehungsweise Maintainer durch die Angabe der Paketabhängigkeiten in der Beschreibung zum Paket fest. Das ermöglicht nicht nur eine dezentrale Entwicklung, sondern sorgt auch für einen optimalen Umgang mit Speicherplatz: Keine Komponente liegt mehrfach auf dem System vor, und nur selten in unterschiedlichen Versionen. Identischer Programmcode wird mehrfach benutzt.

Treten Fehler in einer Komponente auf, beispielsweise einer Library ("Bibliothek"), betrifft das alle Programme, die diese benutzen. Umgekehrt wirken sich Bereinigungen und Verbesserungen sofort positiv auf alle Komponenten aus. Als Entwickler setzt das voraus, dass Sie wissen, was Sie an Komponenten brauchen und welche davon bereits existieren. Dieser Blick über den Tellerrand des eigenen Projekts ist nie verkehrt.

Hinter den "neuen" Entwicklungen für containerbasierte Paketformate steckt der Wunsch, Software durch ein geändertes, an die Idee der Virtualisierung anknüpfendes Konzept bereitzustellen. Dieser unscheinbar wirkende Prinzipienwechsel hat weitreichende Folgen (siehe Kasten "Veränderte Softwareverteilung"). Die Parallele im Alltag stellt die Konsumgüterwegwerfgesellschaft dar: Die verfügbaren technischen Mittel machen diese Denkweise populär ("klappt doch"), nachhaltig geht anders.

Dabei vergessen die Befürworter häufig, dass sich der Bedarf an Softwarekomponenten sowie sich diese selbst ändern und man sie von Zeit zu Zeit an die sich wechselnden Bedingungen anpassen muss. Nicht immer ist es wirklich einfacher, alles neu auszurollen. Wer Konfigurationsdateien sowie Benutzer- und Protokolldaten vor einer Aktualisierung zusammengesammelt, gesichert und danach wieder eingespielt hat, kann ein Lied vom damit verbundenen Aufwand singen. Bestandswahrer hingegen tauschen nur das Nötigste aus. Beide Modelle haben je nach Situation ihre Berechtigung – wann welche Variante sinnvoll ist, entscheiden Sie von Fall zu Fall. Eine präzise Vorhersage gelingt nur selten.

Veränderte Softwareverteilung

Containerformate verändern die Prozesse für das Ausrollen und Betreuen von Software. Ein Container ("App") ermöglicht das Bereitstellen einer vorbereiteten Softwarelösung inklusive aller Abhängigkeiten in einer abgeschlossenen Umgebung ("Applikationsvirtualisierung"). Das minimiert den Zeitaufwand für Installation und Konfiguration, senkt jedoch das Sicherheitsniveau: Der Benutzer erkennt weder, was der Container enthält, noch, was fehlt, und schon gar nicht, was "nebenbei" noch so mitkommt und für Ärger sorgt. In den letzten Jahren wurde das Vertrauen in Software zu oft strapaziert, als dass Sie sich als Benutzer Binärcode ungeprüft unterjubeln lassen sollten. Die Mechanismen mit Prüfsummen über Softwarepakete und Dateien bestehen ja nicht grundlos.

Zudem geht schnell der Überblick verloren. Insbesondere müssen Sie jeden einzelnen Container im Blick behalten und dessen Installationsstand kennen. Container bilden zudem größere Binary Large Objects ("Blobs"), die nicht so feinkörnig wie Pakete ausfallen. Zudem erfordern sie aufgrund der potenziellen Duplizierung der mitgelieferten, spezifischen Abhängigkeiten mehr Plattenplatz und Bandbreite beim Bezug.

Andererseits versprechen Container, die Software in einer Sandbox abzuschließen und auf ausgewählte Schnittstellen zur Kommunikation (Ports, Programme, Kanäle, Ressourcen) zu begrenzen. Daneben sollen sie das Problem der offenen, unaufgelösten Paketabhängigkeiten lösen und stets die aktuellsten Komponenten zum Einsatz bringen. Die Erfahrung zeigt, dass Letzteres im Vergleich zu erprobter, etwas "abgehangener" Software mitnichten ein Garant für höhere Stabilität und Fehlerfreiheit ist.

Die Verantwortung über alle gelieferten Komponenten liegt bei demjenigen, der den Container bereitstellt. Es erfordert Wissen über die eigentliche Software und alle zusätzlichen Bestandteile (Abhängigkeiten) sowie deren bekannte Sicherheitslücken und Programmierfehler. Der Lieferant weiß zwar, was er bereitstellt, kennt sich aber meist nur mit der eigenen Software aus. Zudem kommt Software mehrfach vor – pro Container, in unterschiedlichen Versionen mit verschiedenen Bugs, die es alle im Auge zu behalten gilt.

Die Softwarezusammenstellung in einem Container zielt häufig auf einen ganz bestimmten Anwendungsfall ab. Dass die Paketierer das Gesamtkunstwerk häufig als "Wegwerfcontainer" konzipieren, erschwert das Aktualisieren, wenn Sie den Container länger einsetzen. Das separate Einspielen von Security-Patches für die genutzten Komponenten ist nicht vorgesehen – stattdessen aktualisieren Sie den Container lediglich als Ganzes [24].

Finde die Plattensau

Je mehr Software Sie auf einem System installieren, umso mehr Plattenplatz läuft voll. Mit den beiden Werkzeugen Dpkg (via -s) und Dlocate (via -du) und dem Paketnamen ermitteln Sie, wieviel Platz das angegebene Paket benötigt.

Listing 1 kombiniert Dpkg mit Fgrep sowie Dlocate mit Tail und Cut, um aus der letzten Zeile der Ausgabe lediglich die erste Spalte mit der Gesamtsumme zu extrahieren. Beispielhaft zeigen wir dies für das Paket chromium mit dem Ausgabewert in KByte. Die weitere Umrechnung in MByte erfordert etwas Shell-Skripting und die Hilfe des Kommandozeilentaschenrechners Bc; die Ausgabe der Maßeinheit erfolgt via Echo (vorletzte Zeile).

Listing 1

$ dpkg -s chromium | fgrep Installed-Size:
Installed-Size: 155388
$ dlocate -du chromium | tail -1 | cut -f1
155464
$ echo $(echo $(dlocate -du chromium | tail -1 | cut -f1) / 1024 | bc) "MByte"
151 MByte

Beim Ermitteln derjenigen Pakete, die am meisten Speicherplatz belegen, hilft Ihnen Dpigs ("diskspace pigs") aus dem Paket debian-goodies. Listing 2 gibt die fünf größten installierten Pakete in absteigender Reihenfolge aus, jeweils samt Größe und Paketname. Mithilfe des Schalters -H rechnen Sie die Maßeinheit in verständliche Größen um. Die Angabe -n5 begrenzt die Ausgabe auf fünf Pakete.

Listing 2

$ dpigs -H -n5
 436.7M texlive-latex-extra-doc
 155.8M linux-image-3.16.0-4-amd64
 151.7M chromium
 120.9M libreoffice-core
 106.8M texlive-pstricks-doc

Für noch nicht installierte Pakete hilft Aptitude über den Schalter -Z beim Berechnen des Platzbedarfs, wobei es sogar die Abhängigkeiten berücksichtigt. Das Unterkommando install mit dem Schalter --simulate sorgt für eine Simulation des gesamten Vorgangs. Listing 3 zeigt die Ausgabe anhand des entsprechenden Pakets für den Webserver Nginx. Benötigt der Vorgang mehrere Pakete, zeigt Aptitude nach dem Berechnen einen Prompt, an dem Sie [N] drücken, um den Vorgang abzubrechen.

Listing 3

$ aptitude -Z install --simulate nginx
Die folgenden NEUEN Pakete werden zusätzlich installiert:
  nginx <+101 kB>  nginx-common{a} <+250 kB>  nginx-full{a} <+1.059 kB>
0 Pakete aktualisiert, 3 zusätzlich installiert, 0 werden entfernt und 11 nicht aktualisiert.
589 kB an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 1.410 kB zusätzlich belegt sein.
Möchten Sie fortsetzen? [Y/n/?] n
Abbruch.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 8 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Frisch gebacken
    Flatpaks und Snaps – was wie neue Knusperriegel klingt, schickt sich an, die Installation von Software zu revolutionieren.
  • Volle Kontrolle
    Mit dem interaktiven Tool Htop finden Sie spielend leicht die Ressourcenfresser im System.
  • Pakete mit Schnappverschluss
    Ubuntu hat mit Snap ein neues Paketformat vorgestellt, das sich nicht nur für den Einsatz auf Servern eignet. Worum geht es bei Snap und warum ist das neue Ubuntu-Format nützlich? Wir geben einen Überblick.
  • Top, Htop, Atop und Glances im Vergleich
    Erfahrene Anwender schätzen den Systemmonitor Top als probates Hilfsmittel zum Aufspüren von Systemklemmern. Die Alternativen Htop, Atop und Glances erweitern dessen Möglichkeiten.
  • Alternative Paketverwaltung Flatpak mit zahlreichen Änderungen
    Die unter anderem bereits in Fedora zum Einsatz kommende Paketverwaltung Flatpak (ehemals XDG-Apps) liegt in einer neuen Version vor. Obwohl sich nur die letzte Ziffer erhöht, gibt es dennoch zahlreiche grundlegende Neuerungen und vor allem auch Änderungen.
Kommentare

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 3 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...