Ist es möglich, eine Linux-Distribution zu erstellen, die sowohl RPM- als auch .deb-Pakete unterstützt?


29

Ich frage mich, ob es theoretisch möglich ist, eine Linux-Distribution zu erstellen, die sowohl rpm- als auch debian-Pakete unterstützt.

Gibt es Distributionen, die beide unterstützen?

Und wenn nicht, ist das überhaupt möglich?


4
Wenn wir keine Pakete mit einer nicht berechenbaren Anzahl von Abhängigkeiten berücksichtigen, sehe ich nicht, wie deren Installation theoretisch unmöglich sein kann.
Dmitry Grigoryev

2
Es wäre möglich, wenn Sie die Abhängigkeitsauflösung dem Benutzer
überlassen würden

@rackandboneman in diesem Fall würde Slackware plus alienzum Konvertieren von Paketen in .tgz-Dateien funktionieren :) Wenn Sie die Quell-Debs oder RPMs verwenden, könnte LFS dies ebenfalls tun.
Ivanivan

@DmitryGrigoryev IIRC, die Abhängigkeitsauflösung ist NP-vollständig, wenn Sie negative Abhängigkeiten (Konflikte) berücksichtigen.
user253751

@immibis NP-complete impliziert berechenbar. Nicht berechenbar bedeutet zB "Wenn dieses Programm mit libc5 aufhängt, installiere libc6".
Dmitry Grigoryev

Antworten:



42

Ich habe nicht gedacht, dass es Distributionen gibt, die beide nativ unterstützen, aber es stellt sich heraus, dass sich eine in der Entwicklung befindet, Bedrock Linux (danke an iMalinowski für die Informationen). Bei anderen Distributionen können Sie Konvertierungstools verwenden alien, um beispielsweise ein Format in ein anderes zu konvertieren. Alles, was softwarebasiert ist, ist mit genügend Zeit und Energie machbar, so dass es möglich wäre, eine solche Distribution zu erstellen (aber angesichts der Unterschiede zwischen den Fähigkeiten .debund .rpmPaketen ziemlich schwierig).

Dies alles beruht jedoch wahrscheinlich auf der Idee, dass die Unterstützung beider Paketformate das Leben einfacher machen würde, da Sie Pakete dann von jedem Ort aus installieren könnten (also von jedem Ort, an dem ein .deboder bereitgestellt wird .rpm). Philosophisch ist das mangelhaft. Eine Distribution ist eine zusammenhängende Menge von Paketen. Wenn Sie Software für diese Distribution bereitstellen möchten, müssen Sie sie wirklich gezielt einsetzen, einschließlich der Verwendung des Paketformats (und vor allem der Metadaten). Es hat keinen Sinn, mehrere Paketformate nativ zu unterstützen.

(In der Debian-Welt können Pakete mit Varianten arbeiten, die nicht ihr Hauptziel sind, weil die Paketnomenklatur ziemlich homogen ist und weil die meisten Distributionen in einen Vererbungsbaum passen. Dies ist in der RPM-Welt nicht der Fall. In beiden Fällen mischen und Matching ist eine schlechte Idee.)

Sie sollten Ihre Distribution als Basis betrachten, auf der Sie Ihr gewünschtes System aufbauen können. Dabei sollten Sie die Regeln und das Ökosystem Ihrer Distribution einhalten, ohne die Dinge anderer Distributionen zu vermischen. Sie benötigen Abstraktionen auf höherer Ebene, um Mixing und Matching zu unterstützen (oder vielmehr, um verteilungsübergreifende Umgebungen bereitzustellen): Steam-Laufzeit, Flatpak usw.


10

Nein, ein solches Monster sollte nicht gebaut werden. Anders als beispielsweise ein MacOS-Anwendungspaket, das normalerweise alles enthält, was die Anwendung zum Ausführen auf dem Betriebssystem benötigt, sind RPM- und .deb-Pakete fast immer von anderen Paketen abhängig, z. B. von gemeinsam genutzten Bibliotheken. In Linux-Paketen werden die anderen Pakete aufgelistet, die vorhanden sein müssen, und der Paketmanager hilft bei der Durchsetzung dieser Anforderungen. Außerdem unterscheiden sich Linux-Distributionen in der Art und Weise, wie Dinge erledigt werden (z . B. /etc/network/interfaces.dvs. /etc/sysconfig/network-scripts).

Sie sollten nicht einmal Pakete aus beliebigen Repositorys innerhalb derselben Paketformatfamilie mischen. Das heißt, die Installation von SuSE-Paketen auf einem CentOS-Computer ist problematisch, obwohl beide RPM verwenden. Ich würde nicht einmal Pakete installieren, die für eine andere Version desselben Betriebssystems bestimmt sind (z. B. Ubuntu 14.04-Pakete auf einem 16.04-System), wenn ich nicht genau wüsste, was ich tue.

Der Versuch, RPM und .deb auf demselben System zu unterstützen, kommt also nicht in Frage. In bestimmten verzweifelten Situationen könnten Sie bestimmte Pakete mithilfe von konvertieren alien, aber Sie sollten damit rechnen, viel Aufwand in die Fehlerbehebung zu stecken, die unvermeidlich durch solche Hacks entstehen würden.


3
Selbst für Distributionen, die aus derselben Familie stammen, kann das Mischen von Paketen eine schlechte Idee sein. Zum Beispiel sind Debian und Ubuntu beide .deb-basiert, aber Ubuntu hat einige Designentscheidungen getroffen, die sich von Debian unterscheiden, so dass die Verwendung von Ubuntu-Paketen in Debian möglicherweise nicht immer funktioniert.
Slebetman

1
Sogar das Mischen von Debian-Distributionsversionen ist eine schlechte Idee: wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian
stanri

Dann gibt es Mint, das auf Ubuntu basiert, das auf Debian basiert ... :-)
DevSolar

1
Ich werde nicht sagen, dass ich das für eine gute Idee halte. Gleichzeitig verstehe ich nicht, warum es eine so schreckliche Idee ist. Ich denke, diese Probleme könnten überwunden werden - es gibt nur keine wirkliche Belohnung dafür.
Emory

9

Nun, es gibt alien( Manpage ), die zwischen umwandeln können rpm, debusw., aber ich würde die tatsächlichen Probleme beim Umgang mit Abhängigkeiten (verschiedene Paketnamen für die Software), und die Standorte der Konfigurationsdateien kommen nehmen.

Natürlich, wenn Sie meinen, dass beide Pakettypen von der Distribution selbst stammen könnten, könnte dies möglicherweise umgangen werden, aber warum sollte dann jemand das tun ... (Und Sie müssten immer noch alles in das eine oder andere konvertieren , da ich glaube nicht dpkgweiß, wie man die Datenbanken liest rpmund umgekehrt.)


3

Ja, es ist möglich, aber es ruiniert die Distribution.

Pakete sind nicht nur das Format, das einfach von einem Format zum anderen portiert werden kann.

Hinweis: Paketinstallationstools müssen portiert werden, da eine zentrale Liste aller Pakete, Versionen, Abhängigkeiten, Konfigurationsdateien sowie Skripts vor und nach der Installation erstellt werden soll (wenn Sie ein Paket durch ein anderes ersetzen, in einem anderen Paket) Format erwarten Sie, dass die Deinstallationsskripte (altes Format) von einem neuen Paketsystem ausgeführt werden.

Eine Distribution und Pakete sind jedoch viel mehr als nur ein Paketformat. ZB für Debian: Wir wollen Dateien an der richtigen Stelle ablegen, wir wollen die Handbuchseite bereitstellen, wir wollen einige gemeinsame Desaminierungsskripte haben, wir wollen, dass das Programm in vielen Architekturen und verschiedenen grafischen Umgebungen läuft, so dass ein Benutzer findet sich in einer Distribution auch mit neuen packages.packages auskennen.

In Debian möchten wir, dass Pakete leicht von Benutzern (aus Quellen) erstellt werden können, so dass man einige wichtige (für ihn) Pakete anpassen kann. Dies erfordert viel Infrastruktur, die die meisten Autoren nicht bereitstellen können (automatisches Erstellen und Testen auf verschiedenen Architekturen, und dies wird von Zeit zu Zeit durchgeführt). Und auch Debian-spezifisch sind die Anforderungen der Lizenz, so dass es einfacher ist, ein Paket oder eine Distribution zu forken, ohne dass alle Pakete überprüft werden müssen.

Am Ende erfolgt eine Verteilung durch konsistente Pakete, nicht nur durch Pakete.


0

Ja, und die meisten .deb-basierten Distributionen machen das bereits, aber ...

Zumindest auf Debian und verwandten Familien, aliendie es Ihnen ermöglichen, RPM-Pakete zu installieren.

Sie werden die gleichen Probleme haben, wenn Sie Pakete mischen, die nicht für Ihre Distribution entwickelt wurden, wenn Sie fremde Pakete unabhängig vom Format installieren. Wenn Sie eine RPM auf einem DEB-basierten System installieren, muss diese RPM mit Ihrem System kompatibel sein , als ob Sie ein RPM-Paket auf einem RPM-basierten System installieren, und das ist das A und O. Du kannst es schaffen, aber du willst es wahrscheinlich nicht.


0

Ja und nein. deb und rpm sind nur Formate. Sie können beide Formate unterstützen, aber es ist sinnlos. Pakete sind im Allgemeinen nicht zwischen Distributionen vergleichbar, insbesondere zwischen Distributionen, die nicht aufeinander basieren.

Wenn alle Distributionen die gleichen Versionsanforderungen hätten, wäre jede Distribution eine Paketauswahl. Sie können eine beliebige Distribution installieren, indem Sie die Pakete auflisten.

Distributionen müssen jedoch Software bereitstellen, die sie unterstützen können. Wenn eine Bibliothek, die Ihre Anwendung funktionsfähig macht, nicht verwaltet wird und selbst eine Bibliothek benötigt, die von etwas anderem abgelöst wurde, wie können Sie diesen Konflikt lösen? Der Paketmanager kann keinen Portcode. Es kann mehrere Nachfolger geben, die von verschiedenen Distributionen ausgewählt werden.

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.