È possibile creare una distro Linux che supporti sia i pacchetti RPM che .deb?


29

Mi chiedo se sia teoricamente possibile costruire una distro Linux in grado di supportare sia pacchetti rpm che debian.

Ci sono distro live che supportano entrambi?

E se no è anche possibile?


4
A meno che non consideriamo i pacchetti con un numero non calcolabile di dipendenze, non vedo come installarli possa essere teoricamente impossibile.
Dmitry Grigoryev il

2
Sarebbe possibile se si lasciasse la risoluzione delle dipendenze all'utente :)
rackandboneman il

@rackandboneman in quel caso, Slackware plus alienper convertire i pacchetti in file .tgz funzionerebbe :) Se si usano i debs di sorgente o rpms, anche LFS potrebbe farlo.
Ivanivan,

@DmitryGrigoryev IIRC, la risoluzione delle dipendenze è NP-completa quando si consentono dipendenze negative (conflitti).
user253751

@immibis NP-complete implica calcolabile. Non calcolabile significa ad esempio "se questo programma si blocca con libc5, installare libc6".
Dmitry Grigoryev il

Risposte:



42

Non pensavo che ci fossero distribuzioni là fuori che supportano entrambi nativamente, ma si scopre che ce n'è uno in sviluppo, Bedrock Linux (grazie a iMalinowski per l'informazione). Su altre distribuzioni puoi usare strumenti di conversione come alienconvertire da un formato all'altro. Tutto ciò che è basato su software è fattibile, dato abbastanza tempo ed energia, quindi sarebbe possibile costruire una tale distribuzione (ma date le differenze tra le capacità di .debe i .rpmpacchetti, abbastanza difficile).

Tuttavia, tutto ciò probabilmente deriva dall'idea che il supporto di entrambi i formati di pacchetto semplificherebbe la vita, poiché è possibile installare pacchetti da qualsiasi luogo (bene, ovunque fornendo un .debo .rpm). Filosoficamente, è imperfetto. Una distribuzione è un insieme coerente di pacchetti; se si desidera fornire software per tale distribuzione, è necessario indirizzarlo in modo specifico, che include l'utilizzo del formato del pacchetto (e, soprattutto, dei metadati). Non ha senso supportare nativamente più formati di pacchetto.

(Nel mondo Debian, i pacchetti possono lavorare su varianti che non sono il loro obiettivo principale, perché la nomenclatura dei pacchetti è piuttosto omogenea e perché la maggior parte delle distribuzioni si inserisce in un albero di ereditarietà. Questo non è vero nel mondo RPM. In entrambi i casi mescolando e la corrispondenza è una cattiva idea.)

Dovresti considerare la tua distribuzione come una base su cui costruire il tuo sistema desiderato, attenendoti alle regole e all'ecosistema della tua distribuzione, senza mescolare le cose da altre distribuzioni. Sono necessarie astrazioni di livello superiore per supportare il mixaggio e il matching (o meglio, per fornire ambienti di distribuzione incrociata): Steam runtime, Flatpak, ecc.


10

No, un tale mostro non dovrebbe essere costruito. A differenza, diciamo, di un pacchetto di applicazioni MacOS, che in genere include tutto ciò di cui l'applicazione ha bisogno per funzionare sul sistema operativo, i pacchetti RPM e .deb dipendono quasi sempre da altri pacchetti, come le librerie condivise. I pacchetti Linux elencano gli altri pacchetti che devono essere presenti e il gestore pacchetti aiuta a far rispettare tali requisiti. Inoltre, le distribuzioni Linux differiscono nel modo in cui le cose vengono fatte (ad es. /etc/network/interfaces.dVs. /etc/sysconfig/network-scripts).

Non dovresti nemmeno mescolare i pacchetti da repository arbitrari all'interno della stessa famiglia di formati di pacchetto. Cioè, l'installazione di pacchetti SuSE su una macchina CentOS richiede solo problemi, anche se entrambi usano RPM. Non installarei nemmeno i pacchetti destinati a una versione diversa dello stesso sistema operativo (ad esempio i pacchetti Ubuntu 14.04 su un sistema 16.04) a meno che non sapessi esattamente cosa stavo facendo.

Quindi, provare a supportare sia RPM che .deb sullo stesso sistema è fuori discussione. In determinate situazioni disperate, è possibile convertire pacchetti specifici utilizzando alien, ma ci si dovrebbe aspettare di impegnarsi molto nella risoluzione dei problemi che potrebbero inevitabilmente derivare da tali hack.


3
Anche per le distribuzioni provenienti dalla stessa famiglia, mescolare i pacchetti può essere una cattiva idea. Ad esempio Debian e Ubuntu sono entrambi basati su .deb ma Ubuntu ha preso alcune decisioni di progettazione che differiscono da Debian, quindi l'utilizzo dei pacchetti Ubuntu in Debian potrebbe non funzionare sempre.
Slebetman,

1
Anche mescolare le versioni della distro Debian è una cattiva idea: wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian
stanri,

Poi c'è Mint basato su Ubuntu basato su Debian ... :-)
DevSolar il

1
Non ho intenzione di dire che penso sia una buona idea. Allo stesso tempo, non riesco a capire perché sia ​​un'idea così orribile. Penso che questi problemi potrebbero essere superati - è solo che non esiste una vera ricompensa per farlo.
emory

9

Bene, c'è alien( pagina man ) che può convertire tra rpm, debecc., Ma presumo che i problemi reali provengano dalla gestione delle dipendenze (nomi di pacchetti diversi per il software) e dalle posizioni dei file di configurazione.

Naturalmente, se intendi dire che entrambi i tipi di pacchetti potrebbero provenire dalla stessa distribuzione, ciò potrebbe eventualmente essere risolto, ma allora perché qualcuno dovrebbe farlo ... (E avresti comunque bisogno di convertire tutto in uno o l'altro , poiché non credo dpkgsappia leggere i database di rpme viceversa.)


3

Sì, è possibile, ma rovina la distribuzione.

I pacchetti non sono solo il formato, che può essere facilmente trasferito da un formato all'altro.

Nota: gli strumenti di installazione dei pacchetti devono essere portati, perché si vorrebbe avere un elenco centralizzato di tutti i pacchetti, versioni, dipendenze, file di configurazione, script pre e post installazione (se si sostituisce un pacchetto con un altro, in un altro pacchetto formato, ci si aspetta che gli script di disinstallazione (vecchio formato) vengano eseguiti dal nuovo sistema di pacchetti.

Ma una distribuzione e pacchetti sono molto più di un formato di pacchetti. Ad esempio per Debian: vogliamo mettere i file nella posizione corretta, vogliamo fornire la pagina del manuale, vogliamo avere alcuni script di deamonizzazione comuni, vogliamo che il programma sia eseguito in molte architetture, vari ambienti grafici, in modo che un utente trovi se stesso familiare all'interno di una distribuzione anche con nuovi pacchetti.pacchetti.

In Debian vogliamo che i pacchetti siano facilmente costruibili dagli utenti (da fonti), in modo che si possano personalizzare alcuni pacchetti (per lui) importanti. Ciò richiede molta infrastruttura, che la maggior parte degli autori a monte non è in grado di fornire (compilazione e test automatici su varie architetture e di volta in volta eseguiti). E anche i requisiti specifici di Debian sono i requisiti della licenza, in modo che sia più facile forkare un pacchetto o una distribuzione, senza bisogno di controllare tutti i pacchetti.

Alla fine, una distribuzione è fatta da pacchetti coerenti, non solo da pacchetti.


0

Sì e la maggior parte delle distribuzioni basate su .deb lo fanno già, ma ...

Almeno su Debian e relative famiglie, alienche ti permetteranno di installare pacchetti RPM.

Avrai gli stessi problemi quando mescoli pacchetti che non sono progettati per funzionare con la tua distribuzione quando installi pacchetti stranieri indipendentemente dal formato - se installi un RPM su un sistema basato su DEB, quell'RPM deve essere compatibile con il tuo sistema , proprio come se si stesse installando un pacchetto RPM su un sistema basato su RPM, e questo è il ma. Puoi farlo, ma probabilmente non vuoi.


0

Sì e no. deb e rpm sono solo formati. Puoi supportare entrambi i formati ma è inutile. I pacchetti non sono generalmente comparabili tra le distribuzioni, in particolare le distribuzioni che non sono basate l'una sull'altra.

Se tutte le distribuzioni avessero gli stessi requisiti di versione, tutta una distribuzione sarebbe una selezione di pacchetti. È possibile installare qualsiasi distribuzione elencando i pacchetti.

Ma le distribuzioni devono fornire software che possono supportare. Se una libreria che fa funzionare la tua applicazione non viene mantenuta e richiede essa stessa una libreria che è stata sostituita da qualcos'altro come risolvi questo conflitto? Il gestore pacchetti non può eseguire il codice di porta. Ci possono essere più successori scelti da diverse distribuzioni a.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.