¿Es posible construir una distribución de Linux que soporte los paquetes RPM y .deb?

29

Me pregunto si es teóricamente posible construir una distribución de Linux que pueda soportar paquetes rpm y debian.

¿Hay alguna distribución en vivo que soporte ambas?

¿Y si no es posible?

Alkabary
fuente
44
A menos que consideremos paquetes con un número no dependiente de dependencias, no veo cómo instalarlos sea teóricamente imposible.
Dmitry Grigoryev
2
Sería posible si
dejaras la
@rackandboneman en ese caso, Slackware plus alienpara convertir paquetes a archivos .tgz funcionaría :) Si usa la fuente debs o rpms, LFS también podría hacerlo.
ivanivan
@DmitryGrigoryev IIRC, la resolución de dependencia es NP-completa cuando se permiten dependencias negativas (conflictos).
user253751
@immibis NP-complete implica computable. No computable significa, por ejemplo, "si este programa se cuelga con libc5, instale libc6".
Dmitry Grigoryev

Respuestas:

42

No pensé que haya distribuciones por ahí que sean compatibles de forma nativa, pero resulta que hay una en desarrollo, Bedrock Linux (gracias a iMalinowski por la información). En otras distribuciones, puede usar herramientas de conversión como alienconvertir de un formato a otro. Cualquier cosa basada en software es factible, dado el tiempo y la energía suficientes, por lo que sería posible construir dicha distribución (pero dadas las diferencias entre las capacidades .deby los .rpmpaquetes, es bastante difícil).

Sin embargo, todo esto probablemente se deriva de la idea de que admitir ambos formatos de paquete facilitaría la vida, ya que podría instalar paquetes desde cualquier lugar (bueno, en cualquier lugar que proporcione un .debo .rpm). Filosóficamente, eso es defectuoso. Una distribución es un conjunto coherente de paquetes; Si desea proporcionar software para esa distribución, realmente necesita apuntarlo específicamente, lo que incluye el uso de su formato de paquete (y lo más importante, los metadatos). No tiene sentido admitir múltiples formatos de paquetes de forma nativa.

(En el mundo de Debian, los paquetes pueden funcionar en variantes que no son su objetivo principal, porque la nomenclatura del paquete es bastante homogénea y porque la mayoría de las distribuciones caben en un árbol de herencia. Eso no es cierto en el mundo de RPM. En ambos casos, mezclar y emparejar es una mala idea.)

Debe considerar su distribución como una base sobre la cual construir su sistema deseado, apegándose a las reglas y al ecosistema de su distribución, sin mezclar elementos de otras distribuciones. Necesita abstracciones de nivel superior para admitir mezclas y combinaciones (o más bien, para proporcionar entornos de distribución cruzada): el tiempo de ejecución de Steam, Flatpak, etc.

Stephen Kitt
fuente
10

No, ese monstruo no debe ser construido. A diferencia de, digamos, un paquete de aplicaciones MacOS, que generalmente incluye todo lo que la aplicación necesita para ejecutarse en el sistema operativo, los paquetes RPM y .deb casi siempre dependen de otros paquetes, como las bibliotecas compartidas. Los paquetes de Linux enumeran los otros paquetes que deben estar presentes, y el administrador de paquetes ayuda a hacer cumplir esos requisitos. Además, las distribuciones de Linux difieren en la forma en que se hacen las cosas (por ejemplo, /etc/network/interfaces.dvs. /etc/sysconfig/network-scripts).

Ni siquiera debería mezclar paquetes de repositorios arbitrarios dentro de la misma familia de formatos de paquete. Es decir, la instalación de paquetes SuSE en una máquina CentOS solo es un problema, a pesar de que ambos usan RPM. Ni siquiera instalaría paquetes destinados a una versión diferente del mismo sistema operativo (por ejemplo, paquetes Ubuntu 14.04 en un sistema 16.04) a menos que supiera exactamente lo que estaba haciendo.

Por lo tanto, tratar de admitir tanto RPM como .deb en el mismo sistema está fuera de discusión. En ciertas situaciones desesperadas, puede convertir paquetes específicos usando alien, pero debe esperar hacer un gran esfuerzo para solucionar los problemas que inevitablemente surgirían de tales ataques.

200_success
fuente
3
Incluso para distribuciones originadas en la misma familia, mezclar paquetes puede ser una mala idea. Por ejemplo, Debian y Ubuntu están basados ​​en .deb, pero Ubuntu ha tomado algunas decisiones de diseño que difieren de Debian, por lo que el uso de paquetes de Ubuntu en Debian puede no funcionar siempre.
slebetman
1
Incluso mezclar versiones de distribución de Debian es una mala idea: wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian
stanri
Luego está Mint que está basado en Ubuntu que está basado en Debian ... :-)
DevSolar
1
No voy a decir que creo que es una buena idea. Al mismo tiempo, no veo por qué es una idea tan horrible. Creo que estos problemas podrían superarse, es solo que no hay una recompensa real por hacerlo.
emory
9

Bueno, hay alien( página de manual ), que puede convertir entre rpm, debetc., pero supongo que los problemas reales provienen del manejo de dependencias (diferentes nombres de paquetes para el software) y ubicaciones de archivos de configuración.

Por supuesto, si quiere decir que ambos tipos de paquetes podrían provenir de la distribución en sí, eso podría solucionarse, pero entonces, ¿por qué alguien haría eso? (Y aún necesitaría convertir todo en uno u otro , ya que no creo que dpkgsepa leer las bases de datos rpmy viceversa).

ilkkachu
fuente
3

Sí, es posible, pero arruina la distribución.

Los paquetes no son solo el formato, que se puede portar fácilmente de un formato a otro.

Nota: las herramientas de instalación de paquetes deben ser portadas, porque a uno le gustaría tener una lista centralizada de todos los paquetes, versiones, dependencias, archivos de configuración, scripts previos y posteriores a la instalación (si reemplaza un paquete con otro, en otro paquete formato, espera que los scripts de desinstalación (formato antiguo) se ejecuten desde el nuevo sistema de paquetes.

Pero una distribución y paquetes son mucho más que un formato de paquetes. Por ejemplo, para Debian: queremos colocar los archivos en el lugar correcto, queremos proporcionar la página del manual, queremos tener algunos scripts de desamonización comunes, queremos que el programa se ejecute en muchas arquitecturas, varios entornos gráficos, para que un usuario encuentre él mismo está familiarizado dentro de una distribución también con nuevos paquetes. paquetes.

En Debian queremos que los paquetes sean fácilmente construibles por los usuarios (de las fuentes), para que uno pueda personalizar algunos paquetes importantes (para él). Esto requiere una gran cantidad de infraestructura, que la mayoría de los autores no pueden proporcionar (compilación y prueba automáticas en varias arquitecturas, y de vez en cuando). Y también los requisitos de licencia de Debian son específicos, por lo que es más fácil bifurcar un paquete o distribución, sin necesidad de verificar todos los paquetes.

Al final, una distribución se realiza por paquetes consistentes, no solo por paquetes.

Giacomo Catenazzi
fuente
0

Sí, y la mayoría de las distribuciones basadas en .deb ya lo hacen, pero ...

En Debian y las familias relacionadas, al menos, tiene alien, lo que le permitirá instalar paquetes RPM.

Tendrá los mismos problemas cuando mezcle paquetes que no están diseñados para funcionar con su distribución cuando instale paquetes externos independientemente del formato; si instala un RPM en un sistema basado en DEB, ese RPM debe ser compatible con su sistema , como si estuviera instalando un paquete RPM en un sistema basado en RPM, y ese es el pero. Puedes hacerlo, pero probablemente no quieras.

Más claro
fuente
0

Si y no. deb y rpm son solo formatos. Puede admitir ambos formatos pero no tiene sentido. Los paquetes generalmente no son comparables entre las distribuciones, especialmente las distribuciones que no se basan entre sí.

Si todas las distribuciones tuvieran los mismos requisitos de versiones, entonces toda una distribución sería una selección de paquete. Puede instalar cualquier distribución enumerando los paquetes.

Pero las distribuciones deben proporcionar software que puedan soportar. Si una biblioteca que hace que su aplicación funcione no se mantiene y requiere una biblioteca que haya sido reemplazada por otra cosa, ¿cómo resuelve este conflicto? El administrador de paquetes no puede portar código. Puede haber múltiples sucesores elegidos por diferentes distribuciones para.

jdwolf
fuente