A Bedrock Linux faz isso. Não estou dizendo que fiz isso, ou que é uma boa ideia, mas está sendo feito.
Eu estou querendo saber se é teoricamente possível construir uma distribuição Linux que possa suportar rpm e pacotes debian.
Existem distros que suportam os dois?
E, se não, é possível?
A Bedrock Linux faz isso. Não estou dizendo que fiz isso, ou que é uma boa ideia, mas está sendo feito.
Eu não achei que existissem distribuições que suportassem nativamente, mas acaba é um em desenvolvimento, Bedrock Linux (graças a iMalinowski para a informação). Em outras distribuições, você pode usar ferramentas de conversão como alien
para converter de um formato para outro. Qualquer coisa baseada em software é factível, com tempo e energia suficientes, por isso seria possível construir tal distribuição (mas dadas as diferenças entre as capacidades dos pacotes .deb
e .rpm
, bastante difícil).
.deb
ou .rpm
). Filosoficamente, isso é falho. Uma distribuição é um conjunto coerente de pacotes; Se você quiser fornecer software para essa distribuição, você realmente precisa direcioná-lo especificamente, o que inclui o uso de seu formato de pacote (e mais importante, metadados). Não faz sentido apoiar vários formatos de pacote nativamente.
(No mundo Debian, os pacotes podem trabalhar em variantes que não são o seu alvo principal, porque a nomenclatura do pacote é bastante homogênea, e porque a maioria das distribuições se encaixa em uma árvore de herança. Isso não é verdade no mundo RPM. casos misturando e combinando é uma má idéia.)
Você deve considerar sua distribuição como uma base sobre a qual construir seu sistema desejado, seguindo as regras e o ecossistema da sua distribuição, sem misturar as coisas de outras distribuições. Você precisa de abstrações de nível mais alto para suportar mixagem e correspondência (ou melhor, para fornecer ambientes de distribuição cruzada): o tempo de execução do Steam, o Flatpak, etc.
Não, esse monstro não deve ser construído. Ao contrário, digamos, de um pacote de aplicativos MacOS, que normalmente inclui tudo que o aplicativo precisa para executar no sistema operacional, os pacotes RPM e .deb quase sempre dependem de outros pacotes, como bibliotecas compartilhadas. Os pacotes do Linux listam os outros pacotes que precisam estar presentes, e o gerenciador de pacotes ajuda a impor esses requisitos. Além disso, as distribuições do Linux diferem na forma como as coisas são feitas (por exemplo, /etc/network/interfaces.d
vs. /etc/sysconfig/network-scripts
).
Você não deve nem mesmo misturar pacotes de repositórios arbitrários dentro da mesma família de formatos de pacotes. Isto é, a instalação de pacotes SuSE em uma máquina CentOS está apenas causando problemas, mesmo que ambos usem o RPM. Eu nem mesmo instalaria pacotes destinados a uma versão diferente do mesmo sistema operacional (por exemplo, pacotes do Ubuntu 14.04 em um sistema 16.04), a menos que eu soubesse exatamente o que estava fazendo.
Portanto, tentar suportar o RPM e o .deb no mesmo sistema está fora de questão. Em certas situações desesperadas, você poderia converter pacotes específicos usando alien
, mas você deve esperar muito esforço para solucionar problemas que inevitavelmente surgiriam de tais hacks.
Bem, há alien
( página do manual ), que pode converter entre rpm
, deb
etc., mas eu suponho que os problemas reais vêm de lidar com dependências (diferentes nomes de pacotes para o software ) e locais de arquivos de configuração.
Claro, se você quer dizer que ambos os tipos de pacotes poderiam vir da própria distribuição, isso poderia ser contornado, mas então por que alguém faria isso ... (E você ainda precisaria converter tudo em um ou o outro, já que não acho que dpkg
saiba como ler os bancos de dados de rpm
e vice-versa.)
Sim, é possível, mas estraga a distribuição.
Os pacotes não são apenas o formato, que pode ser facilmente transferido de um formato para outro.
Nota: as ferramentas de instalação de pacotes precisam ser portadas, porque se deseja ter uma lista centralizada de todos os pacotes, versões, dependências, arquivos de configuração, scripts de pré e pós-instalação (se você substituir um pacote por outro, em Em outro formato de pacote, você espera que os scripts de desinstalação (formato antigo) sejam executados no novo sistema de pacotes.
Mas uma distribuição e pacotes são muito mais que um formato de pacotes. Por exemplo. para o Debian: queremos colocar arquivos no lugar correto, queremos fornecer a página de manual, queremos ter alguns scripts de deamonização comuns, queremos que o programa seja executado em muitas arquiteturas, em vários ambientes gráficos, para que um usuário se encontre familiarizado dentro de uma distribuição também com novos packages.packages.
No Debian, queremos que os pacotes sejam facilmente compilados pelos usuários (a partir de fontes), para que se possa customizar alguns pacotes importantes (para ele). Isso requer muita infraestrutura, que a maioria dos autores de upstream não pode fornecer (construção e teste automáticos em várias arquiteturas e feita de tempos em tempos). E também específico do Debian são os requisitos de licença, para que seja mais fácil distribuir um pacote ou distribuição, sem precisar verificar todos os pacotes.
No final, uma distribuição é feita por pacotes consistentes, não apenas por pacotes.
No Debian e nas famílias relacionadas, pelo menos, você tem alien
, o que lhe permitirá instalar pacotes RPM.
Você terá os mesmos problemas ao misturar pacotes que não foram projetados para trabalhar com sua distro quando você instalar pacotes externos, independentemente do formato - se você instalar um RPM em um sistema baseado em DEB, esse RPM deverá ser compatível com o seu sistema, como se você estivesse instalando um pacote RPM em um sistema baseado em RPM, e esse é o mas. Você pode fazer isso, mas provavelmente não quer.
Sim e não. deb e rpm são apenas formatos. Você pode suportar ambos os formatos, mas é inútil. Pacotes não são geralmente comparáveis entre distribuições, especialmente distribuições que não são baseadas umas nas outras.
Se todas as distribuições tivessem os mesmos requisitos de versão, tudo o que uma distribuição seria seria uma seleção de pacotes. Você poderia instalar qualquer distribuição listando os pacotes.
Mas as distribuições devem fornecer software que possam suportar. Se uma biblioteca que faz seu aplicativo funcionar não é mantida e ela mesma requer uma biblioteca que foi substituída por outra coisa, como você resolve esse conflito? O gerenciador de pacotes não pode portar o código. Pode haver vários sucessores escolhidos por diferentes distribuições para.
Tags package-management dpkg rpm linux