Warum gibt es keinen wirklich einheitlichen Paketmanager für Linux?


31

Warum gibt es einen einheitlichen Paket - Manager , die zwischen dem Endbenutzer und dem darunter liegenden Low-Level - Paket - Manager als Schnittstelle fungiert ( apt, yast, pacman, etc.)?

Ist es schwierig und daher nicht praktikabel, oder gibt es ein echtes Hindernis, das dies unmöglich macht?


14
Meine Vermutung ist, dass wir eine einheitliche Feldtheorie bekommen werden, lange bevor wir einen einheitlichen Paketmanager bekommen ...


2
Aus genau dem gleichen Grund wollen wir keine einzige Distribution - ich mag die Art und Weise, wie meine Distribution das macht. Wenn Sie dies nicht tun, können Sie einen anderen verwenden oder einen eigenen schreiben. Bevor Sie es wissen, haben Sie so viele Paketmanager wie Programmierer.
new123456 31.10.11

2
Meinen Sie nicht die Low-Level-Paketmanager rpm, dep, source? Die von Ihnen aufgelisteten sind selbst Frontends.
Frogstarr78

Antworten:


35

Zuallererst gibt es. Das Problem ist nicht, dass es keinen einheitlichen Paketmanager gibt, das Problem ist, dass es zehn gibt - im Ernst.

Lassen Sie uns meine Lieblings nehmen: poldek. Es ist ein Benutzer-Frontend für die Paketverwaltung, das auf mehreren verschiedenen Distributionen ausgeführt werden kann und entweder Pakete rpmoder debPakete verwaltet. Poldek macht nicht das, was rpm macht (das überlässt es rpm) und sendet einfach die richtigen Befehle, ohne dass der Benutzer all diese Unordnung herausfinden muss.

Aber die Probleme hören hier nicht auf. Jeder hat eine andere Vorstellung davon, wie ein Benutzer-Frontend aussehen soll, wie es funktionieren soll und welche Optionen es bieten soll. Also haben andere Leute ihre eigenen geschrieben. Tatsächlich können viele der Paket-Front-End-Manager, die heute in gängigen Distributionen verwendet werden, mehr als ein Back-End verwalten.

Letztendlich besteht das Problem (oder der Vorteil) jedoch darin, dass die Leute Dinge so mögen, wie sie wollen, und nicht in einer Meta-Weise, die versucht, alle zufriedenzustellen, nur um niemanden wirklich glücklich zu machen. Dies ist der Grund, warum wir in erster Linie zig Millionen Distros haben. Dies ist der Grund, warum wir so viele verschiedene Desktop-Umgebungen und Fenstermanager haben (und die Tatsache, dass dies tatsächlich überhaupt verschiedene Arten von Dingen sind).

Es gibt immer noch ausstehende Vorschläge für das Schreiben von universellen Paketen oder für die Verwendung eines Managers, der sie alle versteht, oder für die Konvertierung einer API in eine andere. Letztendlich ist Unix das Beste, wenn es gemäß seiner Philosophie verwendet wird. Jedes Tool macht eine Sache und macht es gut .

Jedes Mal, wenn Sie ein Tool haben, das versucht, mehr als eine Sache zu tun, ist es in einem davon nicht so gut. Zum Beispiel poldeknervt es, mit Deb-Paketabhängigkeiten umzugehen.


1
Ziemlich genau das, was ich sagen wollte. Und ehrlich gesagt, sehe ich das Problem nicht wirklich, solange Dinge anständig unter der Haube zusammenarbeiten (indem ich mich an die LSB-Standards halte).
Shadur

10
++ für "UNIX ist am besten, wenn ... jedes Tool eins tut und es gut macht". Manchmal denke ich, dass zu viele Werkzeuge von diesem Weg
abweichen

Setzen Sie einen Link zu poldek.pld-linux.org --- könnte nützlich sein, um etwas zu untersuchen, das zuletzt im Jahr 2005 aktualisiert wurde.
Sorin

10

Kurz gesagt: Jede Distribution verwendet einen anderen Ansatz für die Paketverwaltung. Sie sind einfach nicht kompatibel. Eine Verwaltungsstrategie, die für Ubuntu am besten funktioniert, hat für Arch usw. wenig Sinn. Ein "universeller" (verteilungsunabhängiger) Paketmanager wäre nur eine zusätzliche Ebene der Benutzeroberfläche, die niemals so gut funktionieren würde wie der spezifische Manager jeder Distribution.

Mit eigenen Worten ist es also schwierig und daher nicht praktikabel - auch weil kaum jemand davon profitieren würde.


Paketverwaltungslösungen können auf andere Systeme übertragen werden. Ich habe Portage auf Debian gesehen. Der Name des Spiels ist jedoch, etwas zu finden, das für den Benutzer funktioniert, z. Es macht wenig Sinn, Portage zum Standard für Ubuntu zu machen. Uns scheint es ohnehin ziemlich gut zu gehen.
Silverfire

8

Hauptsächlich historische Gründe. Etwa zur gleichen Zeit haben sich mehrere Paketverwaltungssysteme etabliert - insbesondere .rpm und .deb. Jeder hat seine Anhänger und jeder ist gut genug, dass kein einzelner Paketmanager einen überzeugenden Vorteil hat. Die Distributoren werden es sicherlich nicht für sinnvoll halten, ihr System von Grund auf neu aufzubauen, um einen anderen Paketmanager zu implementieren.

Dies würde auch erfordern, dass jedes Paket innerhalb des Systems (10.000 im Fall von Debian) neu erstellt wird. Außerdem müsste ein reibungsloses Migrationssystem implementiert werden, damit Benutzer des Systems vom alten zum neuen Paketmanager wechseln können. Der Migrationsaufwand wäre unüberschaubar und zum Testen der Migration exponentiell höher, sodass mit ziemlicher Sicherheit viele Brüche auftreten würden. Dies würde viele zornige Börsenspekulanten erzeugen.

Jede Distribution unterhält ihre eigenen Abhängigkeiten, basierend auf dem, was für diese Version erstellt wurde. Ein universelles Paket-Repository ist zu schwierig, um zwischen den Verteilungen zu koordinieren, da Abhängigkeitskonflikte mit ziemlicher Sicherheit auftreten werden. Daher ist der tatsächliche Nutzen eines einheitlichen Paketverwaltungssystems (universelle Pakete) in der Praxis ohnehin nicht realisierbar.

Wer darf sich schließlich für den universellen Standardpaket-Manager entscheiden? Der XKCD-Comic, auf den in den Kommentaren zum OP verwiesen wird, fasst den üblichen Fehlermodus für diese Art von Übung zusammen. Eine Standardisierung dieser Art von Dingen wäre sehr politisch und würde wahrscheinlich zu etwas führen, das nicht brauchbar oder so fehlerhaft ist, dass es zu einer weiteren Runde der Überarbeitung von Standards kommt - wenn die Parteien überhaupt zu einer Einigung kommen können.

Im Grunde kommt es also darauf an: zu politisch, zu hart, zu riskant und kein Nutzen, um dadurch realisiert zu werden.


8

Was du beschrieben hast,

Dies fungiert als Schnittstelle zwischen dem Endbenutzer und dem zugrunde liegenden Low-Lever-Paketmanager

klingt ein bisschen wie PackageKit für mich, das heißt ,

PackageKit ist ein System, das die Installation und Aktualisierung von Software auf Ihrem Computer vereinfacht. Das primäre Entwurfsziel besteht darin, alle grafischen Softwaretools, die in verschiedenen Distributionen verwendet werden, zu vereinheitlichen und einige der neuesten Technologien wie PolicyKit zu verwenden, um den Prozess weniger störanfällig zu machen.

Bearbeiten: Hier finden Sie eine Liste der unterstützten Backends. Edit2: Nutzlose Bemerkung entfernt.


6

Verstehen Sie zunächst, dass "Linux" kein Betriebssystem ist. Es ist ein Kernel. Ein Paketmanager ist ein Konzept auf Betriebssystemebene, kein Konzept auf Kernelebene. Daher ist es nicht wirklich sinnvoll, nach einem einheitlichen Paketmanager für Linux zu fragen.

Wenn Sie sich jedoch fragen, warum die verschiedenen Betriebssysteme, die den Linux-Kernel verwenden, keine kompatiblen Paketmanager haben, können Sie sich auch fragen, warum Windows und Macs keine kompatiblen Paketmanager haben. Oder zwei andere Betriebssysteme.

Unterschiedliche Betriebssysteme erfüllen unterschiedliche Benutzeranforderungen, und der Paketmanager ist Teil davon. Warum haben nicht alle Linux-Distributionen den gleichen Fenstermanager? Oder mit der gleichen vorinstallierten Software kommen?

Antwort: Verschiedene Schläge für verschiedene Leute.


1
+1 für '"Linux" ist kein Betriebssystem'
Silverfire
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.