Por que não existe um gerenciador de pacotes verdadeiramente unificado para Linux?

31

Por que não há um gerente unificado pacote que atua como uma interface entre o usuário final e o gerenciador de pacotes de baixo nível subjacente ( apt, yast, pacman, etc.)?

É difícil de fazer e, portanto, não é prático, ou existe um obstáculo genuíno que torna impossível fazer isso?

vonPetrushev
fonte
14
Meu palpite é que teremos uma teoria do campo unificado muito antes de obter um gerenciador de pacotes unificado ...
2
Pelo mesmo motivo, não queremos uma única distribuição - gosto da maneira como minha distribuição o faz. Caso contrário, você pode usar outro ou escrever o seu. Antes que você perceba, você tem tantos gerenciadores de pacotes quanto programadores.
new123456
2
você não quer dizer os gerenciadores de pacotes de baixo nível rpm, dep, source? Os que você listou são eles próprios front-end.
Frogstarr78

Respostas:

35

Primeiro de tudo, existe. O problema não é que não haja um gerenciador de pacotes unificado, o problema é que existem dez deles - sério.

Vamos dar o meu favorito: poldek. É um front end do usuário para gerenciamento de pacotes que pode ser executado em várias distros diferentes e gerenciar um rpmou mais debpacotes. O Poldek não faz o que o rpm faz (deixa isso para o rpm) e envia os comandos certos sem que o usuário precise descobrir toda essa bagunça.

Mas os problemas não param por aí. Todo mundo tem uma idéia diferente de como deve ser o front end do usuário e como ele deve funcionar e quais opções ele deve expor. Então, outras pessoas escreveram as suas próprias. Atualmente, muitos dos gerentes de front-end de pacotes que as pessoas usam em distros comuns hoje são capazes de lidar com mais de um back-end.

No final, no entanto, o problema (ou vantagem) é que as pessoas gostam que as coisas funcionem exatamente da maneira que desejam, não de uma forma meta que tente satisfazer a todos, apenas para deixar de realmente fazer alguém feliz. Esta é a razão pela qual temos dezenas de distros de gazilhões em primeiro lugar. É a razão pela qual temos tantos ambientes de desktop e gerenciadores de janelas diferentes (e o fato de que esses são realmente diferentes tipos de coisas).

Ainda existem propostas pendentes sobre como escrever pacotes universais ou ter um gerente que os entenda todos ou ter uma API para converter um para o outro ... mas no final o Unix é melhor quando usado de acordo com sua filosofia ... cada ferramenta faz uma coisa e faz bem .

Sempre que você tem uma ferramenta que tenta fazer mais de uma coisa, ela acaba não sendo tão boa em uma delas. Por exemplo, poldeké uma droga lidar com dependências de pacotes deb.

Caleb
fonte
1
Praticamente o que eu ia dizer. E, francamente, desde que as coisas interoperem decentemente sob o capô (por exemplo, aderindo aos padrões da LSB), então eu realmente não vejo o problema.
Shadur 31/10/11
10
++ para "UNIX é melhor quando ... cada ferramenta faz uma coisa e faz bem". Às vezes eu acho que muitas ferramentas estão longe nesse caminho ...
KTF
Coloque um link para poldek.pld-linux.org --- poderia ser útil para investigar algo que tinha última atualização em 2005.
Sorin
10

Em resumo: porque cada distribuição usa uma abordagem diferente para o gerenciamento de pacotes. Eles simplesmente não são compatíveis. A estratégia de gerenciamento que funciona melhor para o Ubuntu terá pouco sentido no Arch etc. Um gerenciador de pacotes "universal" (independente da distribuição) seria apenas uma camada adicional da interface do usuário, que nunca funcionaria tão bem quanto o gerente específico de cada distribuição.

Portanto, usando suas próprias palavras, é difícil de fazer e, portanto, não é prático - também porque dificilmente alguém se beneficiaria com isso.

rozcietrzewiacz
fonte
As soluções de gerenciamento de pacotes são portáteis para outros sistemas. eu vi o portage no debian. No entanto, o nome do jogo é encontrar algo que funcione para o usuário, por exemplo. não faz muito sentido tornar o portage o padrão no ubuntu. Parece que estamos indo muito bem até agora de qualquer maneira.
Silverfire
8

Razões históricas, principalmente. Vários sistemas de gerenciamento de pacotes foram estabelecidos ao mesmo tempo - particularmente .rpm e .deb. Cada um tem seus adeptos e é bom o suficiente para que nenhum gerenciador de pacotes único tenha uma vantagem atraente. Os distribuidores certamente não perceberão o ponto em uma reconstrução inicial de seu sistema para implementar um gerenciador de pacotes diferente.

Isso também exigiria que cada pacote dentro do sistema (10.000 no caso do debian) fosse reconstruído. Também exigiria a implementação de um sistema de migração suave, para que os usuários do sistema pudessem passar do antigo para o novo gerenciador de pacotes. O esforço para migrar seria incomensuravelmente grande e exponencialmente maior para testar a migração, de modo que você certamente teria muitas quebras. Isso geraria muitos apostadores irados.

Cada distribuição mantém seu próprio conjunto de dependências com base no que foi criado para esse lançamento. Um repositório universal de pacotes será muito difícil de coordenar entre as distribuições, pois é quase certo que surgirão conflitos de dependência. Portanto, o benefício real de um sistema unificado de gerenciamento de pacotes (pacotes universais) será impossível de ser realizado na prática de qualquer maneira.

Por fim, quem escolhe o gerenciador de pacotes padrão universal? A história em quadrinhos do XKCD mencionada nos comentários sobre o OP resume o modo de falha usual nesse tipo de exercício. Padronizar esse tipo de coisa seria muito político e provavelmente resultaria em algo que não é utilizável, ou tão profundamente defeituoso que gera mais uma rodada de discussões sobre padrões - se as partes puderem chegar a um acordo.

Então, basicamente, tudo se resume a: muito político, muito difícil, muito arriscado e nenhum benefício a ser alcançado ao fazê-lo.

ConcernedOfTunbridgeWells
fonte
8

O que você descreveu,

que atua como uma interface entre o usuário final e o gerenciador de pacotes de baixa alavanca subjacente

soa um pouco como PackageKit para mim, ou seja ,

O PackageKit é um sistema projetado para facilitar a instalação e atualização do software no seu computador. O objetivo principal do projeto é unificar todas as ferramentas gráficas de software usadas em diferentes distribuições e usar algumas das tecnologias mais recentes, como o PolicyKit, para diminuir o processo.

Editar: veja aqui para obter uma lista de back-end suportados. Edit2: Removido comentário inútil.

sr_
fonte
6

Primeiro, entenda que "Linux" não é um sistema operacional. É um núcleo. Um gerenciador de pacotes é um conceito no nível do SO, não no nível do kernel. Portanto, solicitar um gerenciador de pacotes unificado para Linux não é realmente sensato.

No entanto, se você está perguntando por que os vários sistemas operacionais que usam o kernel Linux não têm gerenciadores de pacotes compatíveis, também é possível perguntar por que Windows e Macs não têm gerenciadores de pacotes compatíveis. Ou quaisquer outros dois sistemas operacionais.

Diferentes sistemas operacionais atendem às necessidades de diferentes usuários, e o gerenciador de pacotes faz parte dele. Por que nem todas as distribuições Linux têm o mesmo gerenciador de janelas? Ou vem com o mesmo software pré-instalado?

Resposta: Traços diferentes para pessoas diferentes.

jwd
fonte
1
+1 para '"Linux" não é um sistema operacional' '
Silverfire 31/10