Est-il possible de construire une distribution Linux prenant en charge les packages RPM et .deb?

29

Je me demande s'il est théoriquement possible de construire une distribution Linux qui peut à la fois prendre en charge les packages rpm et debian.

Y a-t-il des distributions en direct qui soutiennent les deux?

Et sinon, est-ce même possible?

Alcabary
la source
4
À moins que nous ne considérions les packages avec un nombre de dépendances non calculable, je ne vois pas comment leur installation peut être théoriquement impossible.
Dmitry Grigoryev,
2
Ce serait possible si vous
laissiez la
@rackandboneman dans ce cas, Slackware plus alienpour convertir les paquets en fichiers .tgz fonctionnerait :) Si vous utilisez les debs ou rpms source, LFS pourrait le faire aussi.
ivanivan
@DmitryGrigoryev IIRC, la résolution des dépendances est NP-complete lorsque vous autorisez les dépendances négatives (conflits).
user253751
@immibis NP-complete implique calculable. Non calculable signifie par exemple "si ce programme raccroche avec libc5, installez libc6".
Dmitry Grigoryev

Réponses:

42

Je ne pensais pas qu'il existe des distributions qui prennent en charge les deux nativement, mais il s'avère qu'il y en a une en développement, Bedrock Linux (grâce à iMalinowski pour l'information). Sur d'autres distributions, vous pouvez utiliser des outils de conversion tels que alienpour convertir d'un format à l'autre. Tout ce qui est basé sur un logiciel est faisable, étant donné suffisamment de temps et d'énergie, il serait donc possible de construire une telle distribution (mais étant donné les différences entre les capacités de .debet les .rpmpackages, assez difficile).

Cependant, tout cela découle probablement de l'idée que la prise en charge des deux formats de package simplifierait la vie, car vous pourriez alors installer des packages de n'importe où (enfin, n'importe où fournissant un .debou .rpm). Philosophiquement, c'est imparfait. Une distribution est un ensemble cohérent de packages; si vous souhaitez fournir un logiciel pour cette distribution, vous devez vraiment le cibler spécifiquement, ce qui inclut l'utilisation de son format de package (et plus important encore, les métadonnées). Il est inutile de prendre en charge plusieurs formats de package en mode natif.

(Dans le monde Debian, les packages peuvent fonctionner sur des variantes qui ne sont pas leur cible principale, car la nomenclature des packages est plutôt homogène et parce que la plupart des distributions tiennent dans un arbre d'héritage. Ce n'est pas vrai dans le monde RPM. Dans les deux cas, le mélange et l'appariement est une mauvaise idée.)

Vous devriez considérer votre distribution comme une base sur laquelle construire votre système souhaité, en vous en tenant aux règles et à l'écosystème de votre distribution, sans mélanger les choses à partir d'autres distributions. Vous avez besoin d'abstractions de niveau supérieur pour prendre en charge le mixage et l'appariement (ou plutôt, pour fournir des environnements de distribution croisée): le runtime Steam, Flatpak, etc.

Stephen Kitt
la source
10

Non, un tel monstre ne devrait pas être construit. Contrairement, disons, à un ensemble d'applications MacOS, qui comprend généralement tout ce dont l'application a besoin pour fonctionner sur le système d'exploitation, les packages RPM et .deb dépendent presque toujours d'autres packages, tels que les bibliothèques partagées. Les packages Linux répertorient les autres packages qui doivent être présents, et le gestionnaire de packages aide à appliquer ces exigences. De plus, les distributions Linux diffèrent dans la façon dont les choses sont faites (par exemple, /etc/network/interfaces.dvs./etc/sysconfig/network-scripts ).

Vous ne devriez même pas mélanger des packages provenant de référentiels arbitraires au sein de la même famille de formats de packages. Autrement dit, l'installation de packages SuSE sur une machine CentOS ne fait que poser des problèmes, même s'ils utilisent tous les deux RPM. Je n'installerais même pas de packages destinés à une version différente du même système d'exploitation (par exemple des packages Ubuntu 14.04 sur un système 16.04) à moins de savoir exactement ce que je faisais.

Il n'est donc pas question d'essayer de prendre en charge RPM et .deb sur le même système. Dans certaines situations désespérées, vous pouvez convertir des packages spécifiques en utilisant alien, mais vous devez vous attendre à consacrer beaucoup d'efforts à la résolution des problèmes qui pourraient inévitablement découler de tels hacks.

200_success
la source
3
Même pour les distributions provenant de la même famille, mélanger des paquets peut être une mauvaise idée. Par exemple, Debian et Ubuntu sont tous deux basés sur .deb mais Ubuntu a pris des décisions de conception qui diffèrent de Debian, donc l'utilisation de paquets Ubuntu dans Debian peut ne pas toujours fonctionner.
slebetman
1
Même mélanger les versions de distribution de Debian est une mauvaise idée: wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian
stanri
Ensuite, il y a Mint qui est basé sur Ubuntu qui est basé sur Debian ... :-)
DevSolar
1
Je ne vais pas dire que je pense que c'est une bonne idée. En même temps, je ne vois pas pourquoi c'est une idée si horrible. Je pense que ces problèmes pourraient être surmontés - c'est juste qu'il n'y a pas de réelle récompense pour cela.
emory
9

Eh bien, il y a alien( page de manuel ), qui peut convertir entre rpm, debetc., mais je suppose que les problèmes réels proviennent de la gestion des dépendances (différents noms de packages pour le logiciel) et des emplacements des fichiers de configuration.

Bien sûr, si vous voulez dire que les deux types de packages peuvent provenir de la distribution elle-même, cela pourrait éventuellement être contourné, mais alors pourquoi quelqu'un ferait-il cela ... (Et vous auriez encore besoin de tout convertir en l'un ou l'autre) , car je ne pense pas dpkgsavoir lire les bases de données de rpmet vice versa.)

ilkkachu
la source
3

Oui, c'est possible, mais cela ruine la distribution.

Les packages ne sont pas seulement le format, qui peut être facilement transféré d'un format à l'autre.

Remarque: les outils d'installation de packages doivent être portés, car on souhaite disposer d'une liste centralisée de tous les packages, versions, dépendances, fichiers de configuration, scripts de pré et post-installation (si vous remplacez un package par un autre, dans un autre package format, vous vous attendez à ce que les scripts de désinstallation (ancien format) soient exécutés à partir du nouveau système de packages.

Mais une distribution et des packages sont bien plus qu'un format de packages. Par exemple pour Debian: nous voulons mettre les fichiers au bon endroit, nous voulons fournir la page de manuel, nous voulons avoir des scripts de démonisation communs, nous voulons que le programme s'exécute dans de nombreuses architectures, divers environnements graphiques, afin qu'un utilisateur trouve lui-même familier à l'intérieur d'une distribution avec de nouveaux packages.packages.

Dans Debian, nous voulons que les paquets soient facilement constructibles par les utilisateurs (à partir des sources), afin que l'on puisse personnaliser certains paquets importants (pour lui). Cela nécessite beaucoup d'infrastructure, que la plupart des auteurs en amont ne peuvent pas fournir (construction et test automatiques sur diverses architectures, et effectués de temps en temps). Et les exigences de licence sont spécifiques à Debian, de sorte qu'il est plus facile de bifurquer un paquet ou une distribution, sans avoir besoin de vérifier tous les paquets.

À la fin, une distribution est faite par des packages cohérents, pas seulement par des packages.

Giacomo Catenazzi
la source
0

Oui et la plupart des distributions basées sur .deb le font déjà, mais ...

Sur Debian et les familles apparentées, vous en avez au moins, ce alienqui vous permettra d'installer des paquets RPM.

Vous rencontrez les mêmes problèmes lorsque vous mélangez des packages qui ne sont pas conçus pour fonctionner avec votre distribution lorsque vous installez des packages étrangers quel que soit le format - si vous installez un RPM sur un système basé sur DEB, ce RPM doit être compatible avec votre système , tout comme si vous installez un package RPM sur un système basé sur RPM, et c'est le mais. Vous pouvez le faire, mais vous ne voulez probablement pas.

Plus clair
la source
0

Oui et non. deb et rpm ne sont que des formats. Vous pouvez prendre en charge les deux formats, mais c'est inutile. Les packages ne sont généralement pas comparables entre les distributions, en particulier les distributions qui ne sont pas basées les unes sur les autres.

Si toutes les distributions avaient les mêmes exigences de version, alors une distribution serait une sélection de packages. Vous pouvez installer n'importe quelle distribution en répertoriant les packages.

Mais les distributions doivent fournir des logiciels qu'elles peuvent prendre en charge. Si une bibliothèque qui fait fonctionner votre application n'est pas maintenue et nécessite elle-même une bibliothèque qui a été remplacée par autre chose, comment résolvez-vous ce conflit? Le gestionnaire de packages ne peut pas porter de code. Il peut y avoir plusieurs successeurs choisis par différentes distributions pour.

jdwolf
la source