Diese Frage wurde mir in letzter Zeit häufiger gestellt, weshalb ich sie hier (zusammen mit der nach dem fortkommen des Listaller als XDG-Projekt) mal beantworten möchte.

Wie einige vielleicht wissen, lief einige Zeit der Versuch, den Listaller und dessen Setup-Format IPK als Freedesktop-Projekt zu erstellen. Die Anfrage wurde vom XDG-Team abgelehnt, mit der Begründung, dass es viele Anstrengungen in diese Richtung gibt und der Listaller als XDG-Projekt im Grunde das Ausrufen eines neuen Standards wäre. Man wolle daher lieber zunächst abwarten, bis eine oder zwei größere Linux-Distributionen das Projekt unterstützen. Davon abgesehen wurde ich gefragt, warum ich nicht die LSB und das RPM-Format unterstütze, und lieber noch ein neues Format entwickelt habe.

Eigentlich eine berechtigte Frage. Die LSB (=LinuxStandardsBase) der Linux-Foundation gibt in unregelmäßigen Abständen eine Liste von Komponenten heraus, die auf einem LSB-zertifizierten Linux-System enthalten sein müssen. Dazu gehören wichtige Dinge wie z.B. ein teilweise erweiterter POSIX- und SUS-Standard oder die Festlegung der Dateisystemstruktur. In der LSB sind aber auch Versionen von GUI-Widgetsets wie Qt und GTK+ und anderer Libs festgelegt, welche jedes LSB-Linux-System haben muss. Dummerweise ist die LSB selbst in der aktuellen Version 4.0 stark veraltet, da sie auf Unternehmensdistributionen abziehlt, die generell ältere Bibliotheken verwendet, die länger getestet sind. Ich würde aber auch gerne besonders die neuen Technologien unterstützen. Daher möchte ich mich nicht auf LSB-Komponenten als einzige Abhängigkeiten festlegen. IMO ist die LSB in ihrer Extremform wirklich nur für Distributionen mit komerziellem Unternehmenssupport über mehrere Jahre geeignet, für welche andere Hersteller dann Software entwickeln wollen. (Da ist eine gemeinsame Basis dann wirklich wichtig)

Die LSB hat zudem RPM als Standard für Linux-Pakete festgelegt. Daran (können und wollen) sich Systeme wie Debian und Ubuntu natürlich logischerweise nicht halten. Ich bin bestimmt nicht der Einzige, der sich daher schon überlegt hat, ein PlugIn für Debians APT-Paketmanager zu schreiben, welches RPM-Pakete wie DEB-Pakete installieren kann. (Also beides gleichzeitig auf einem System verwaltet) Leider ist das aktuell unmöglich.

Ein RPM-Paket enthält, wie DEB-Pakete auch, die zu installierenden Dateien plus Paketbeschreibung, Checksummen und eine Liste der Abhängigkeiten zu anderen Paketen sowie weitere Daten. Und da beginnt das Problem: Das RPM-Paket enthält z.B. eine Abhängigkeit zu “PackageKit” oder “Oxygen-Iconset”. Wollte man jetzt dieses Paket mittels APT installieren, würde schon die einfachsten Abhängigkeiten nicht gefunden. Das RPM-Paket “PackageKit” heist in Ubuntu/Debian nämlich “packagekit”, die Oxygen-Icons des KDE-Projektes sind unter Debian nicht im Paket “Oxygen-iconset”, sondern in “kde-icons-oxygen”. Woher soll APT wissen, wo sich die Abhängigkeiten des RPM-Paketes befinden? Und damit nicht genug: Selbst zwischen verschiedenen RPM-Basierten Distributionen wie openSUSE oder Fedora gibt es diese Unterschiede, weshalb man RPM-Pakete meistens nicht unter diesen Distributionen austauschen kann. Zudem hat RPM ein paar weitere Inkonsistenzen, da lange Zeit jeder Distributor seinen eigenen Fork davon entwickelt hat. Erst in letzter Zeit beginnt man, RPM wieder auf eine einheitliche Basis zu stellen.

Alleine schon wegen der Benennung der Abhängigkeiten ist es also quasi unmöglich, ein PlugIn für APT zu programmieren, welches RPM-Pakete verarbeiten kann. Umgekehrt kann man natürlich auch kein PlugIn für den RPM-Paketverwalter “yum” erstellen, welches mit DEB-Paketen arbeiten kann. Manche RPMs enthalten zwar auch direkte Referenzen auf die benötigten Bibliotheken, solche Pakete sind aber extrem selten.

Programme wie alien können zwar RPM-Pakete in DEB-Pakete umwandeln (und umgekehrt), dabei gehen jedoch alle Abhängigkeiten verloren. Unter Anderem deshalb kann man die installierten Anwendungen oft nicht nutzen.

Der einzige Ausweg aus diesem Problem ist z.B. das parallele installieren der Abhängigkeiten, wie es Autopackage macht. Oder aber ein Paketformat, welches keine Abhängigkeiten zu Paketen hat, sondern nur zu Bibliotheken und Dateien. So ist z.B. das Listaller-Format aufgebaut, welches nur ein “Rezept” für Abhängigkeiten enthält. Ähnlich macht es auch das Projekt Klik-Install.

Diese Probleme mit den verschiedenen Paketformaten sind ein wichtiger Grund, warum es keinen Standard für Linux-Setups gibt. Das hat also nicht – wie viele oft meinen – mit der Arroganz der Entwicklergemeinden zu tun, sondern hat schlicht technische Gründe. (Auch wenn meiner Meinung nach natürlich das DEB-Format RPM haushoch überlegen ist :-P :-D )

Zumindest in der Handhabung der Paketmanagementsysteme sind sich die Distributionen allerdings seit PackageKit näher gekommen. (Obwohl es in der Debian-Community noch immer Vorbehalte gegen das Projekt gibt)