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?
linux
package-management
rpm
dpkg
alkabary
quelle
quelle
alien
zum Konvertieren von Paketen in .tgz-Dateien funktionieren :) Wenn Sie die Quell-Debs oder RPMs verwenden, könnte LFS dies ebenfalls tun.Antworten:
Bedrock Linux macht das. Ich sage nicht, dass ich das getan habe oder dass es eine gute Idee ist, aber es wird getan.
quelle
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.deb
und.rpm
Paketen 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
.deb
oder 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.
quelle
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.d
vs./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.quelle
Nun, es gibt
alien
( Manpage ), die zwischen umwandeln könnenrpm
,deb
usw., 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
dpkg
weiß, wie man die Datenbanken liestrpm
und umgekehrt.)quelle
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.
quelle
Ja, und die meisten .deb-basierten Distributionen machen das bereits, aber ...
Zumindest auf Debian und verwandten Familien,
alien
die 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.
quelle
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.
quelle