Login
Newsletter
Werbung

So, 1. April 2012, 10:39

Software::Systemverwaltung

Poettering: Paketverwaltung endlich einmal richtig machen

Mehr Softwarepakete, aktuellere Versionen, schnellere Updates und einige Vorteile mehr erhofft sich Lennart Poettering, der Erfinder von PulseAudio und Systemd, von einem neuartigen Ansatz.

Nur wenige würden sich es zutrauen, ein solch komplexes Thema wie die Paketverwaltung unter Linux anzugehen. Aber wer wäre besser dafür geeignet als Poettering, der mit seinen bisherigen Entwicklungen stets den Nerv der Zeit traf?

Unter Linux konnte sich historisch bedingt nie ein einheitliches Paketsystem durchsetzen. Stattdessen existiert eine Vielzahl von Lösungen, die in teils ganz unterschiedliche Richtungen gehen. Obwohl dadurch mit vielerlei Innovationen experimentiert wird, bedauern viele Beobachter, dass durch die Erstellung von Paketen für dieselbe Software für viele ganz unterschiedliche Paketsysteme eine große Menge an Arbeit mehrfach geleistet wird, die vielleicht besser anderweitig eingesetzt würde.

Auch Lennart Poettering von Red Hat, der Erfinder von PulseAudio und Systemd, gehört zu den Kritikern des Status Quo. In einer Präsentation analysiert er die bestehenden Paketsysteme gründlich, auch unter Einbeziehung bisheriger Ansätze, die Paketerstellung weitgehend zu automatisieren. Offensichtlich war keiner dieser Ansätze befriedigend, da sich keiner bisher durchsetzen konnte.

Um das Problem anzugehen, definiert Poettering zunächst ein Basissystem. Das Basissystem sind »die ca. 300 Pakete, ohne die keine moderne Distribution auskommt«. Warum aber sollte man sich damit plagen, dieses Basissystem in Form von Paketen zu verwalten? Das muss nicht sein, bei Windows ist es ja auch nicht so. Individuelle Anpassungen durch normale Benutzer wären im Normalfall unnötig, aber weiterhin möglich, beispielsweise das Löschen unnötiger Dateien wie /bin/vi. Das Basissystem hätte einige große Vorteile. Bei der Installation könnte einfach ein Abbild des Systems kopiert werden, was deutlich schneller ist als das Auspacken von Paketen; manche Distributionen verwenden dieses Verfahren schon. Updates könnten deutlich kleiner werden, da nur die betroffenen Dateien zu ersetzen wären, und das sind meist weit weniger als ein vollständiges Paket. Durch die Verwendung binärer Deltas könnte diese Größe sogar noch weiter schrumpfen.

Ein solches Basissystem zu erstellen, ist laut Poettering kein Problem. Es muss nicht einmal neu geschaffen werden, denn »wir stehen auf den Schultern von Riesen. Als Basis können wir einfach Slackware nehmen, ohne die zwei, drei Slackware-spezifischen Dateien«. Das System könnte von allen Distributionen gemeinsam gepflegt werden, ähnlich wie heute viele Distributionen schon die gleiche Kernel-Version einsetzen, mit recht geringen Unterschieden.

Der zweite Teil der Neuerung sind die Pakete, die zusätzlich zum Basissystem installiert werden. »Ein wesentliches Merkmal von Open Source ist, dass der Quellcode zur Verfügung steht. Der Ausgangspunkt ist also in jedem Fall ein Quellcode-Paket«, schreibt Poettering. »Wenn der Benutzer ein Quellcode-Archiv herunterlädt, muss alles weitere automatisch gehen.«

Hier kommt nun Systemd ins Spiel. Der Daemon soll das Dateisystem auf neue Dateien überwachen. Systemd erkennt, dass ein neues Quellcodearchiv abgespeichert wird, und löst im Hintergrund die nötigen Aktionen aus, es zu installieren. Der naive Ansatz wäre kein Problem mit Perl oder Python, stößt jedoch unmittelbar auf Schwierigkeiten, wenn der Quellcode beispielsweise C oder C++ ist. Von Ubuntu-Benutzern kann schließlich nicht erwartet werden, dass sie einen Compiler installieren. Wieder ist die Lösung naheliegend: Statt den Quellcode lokal zu compilieren, wird er zu einem Server gesendet, der den Compiler bereitstellt, die Binärpakete erstellt und das Resultat zurückschickt. Die erste Implementierung nutzt den Build-Service von Opensuse. Künftig könnten aber unabhängige Organisationen, vielleicht kernel.org, diesen Service übernehmen.

Der Vorteil des Compilierens auf dem Server ist auch, dass dieser durch Parallelisierung sehr schnell sein kann. Außerdem kann er die Ergebnisse cachen und dadurch fast verzögerungsfrei zur Verfügung stellen. Zudem könnte das System Regeln enthalten, mit Spezialfällen für alle Pakete, die sich mit den Standardregeln nicht generieren lassen. Es müssen nicht bereits am Anfang Regeln für die hunderttausende von Open-Source-Projekten, die es gibt, bereitstehen, sondern das wäre ein inkrementeller Prozess.

Die erzeugten Binärpakete im nativen Format der Distribution (RPM, DEB, tar.gz usw.) sollen im Hintergrund installiert werden, sobald sie vom Server eintreffen. Nach hoffentlich im Durchschnitt sehr kurzer Zeit erhält der Benutzer eine Benachrichtigung von Systemd, wenn das Paket komplett installiert ist. Dazu wird ein passender Sound über PulseAudio abgespielt. »PulseAudio wäre nicht nötig gewesen, aber ich wollte nicht, dass eines meiner Programme ungenutzt verkommt«, so Poettering.

Auch wenn die Erweiterung für Systemd laut Poettering bereits recht zuverlässig arbeitet, gibt es noch viel zu tun. Probleme bereitet unter anderem noch das Erkennen, dass ein Benutzer Quellcode aus Verwaltungssystemen wie Git, SVN oder gar - brrr! - CVS ausgecheckt hat. Das größte Fragezeichen steht allerdings momentan noch hinter der Akzeptanz der Ideen durch die Distributionen.

Update: Bei dieser Nachricht handelt es sich um einen Aprilscherz

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung