Recentemente, aprendi que as distros baseadas em Debian têm essencialmente uma coleção fixa de dependências e bibliotecas comuns que qualquer aplicativo instalado por meio de um gerenciador de pacotes deve usar.
Compare isso com, digamos, Windows, onde acredito que cada aplicativo normalmente fornece suas próprias dependências - e, portanto, uma instalação do sistema operacional Windows terá instâncias das mesmas dependências/bibliotecas instaladas muitas vezes e cada aplicativo precisará gerenciar a atualização dessas dependências em seu ter.
Eu sei que alguns desenvolvedores desenvolvem seus softwares para serem compatíveis com o gerenciador de pacotes APT, mas imagino que deva haver muitos aplicativos onde os desenvolvedores criaram o software no modo "Windows".
Então, minha pergunta é: se os desenvolvedores originais criaram seu software com a intenção de distribuir uma grande instalação monolítica completa com dependências agrupadas, os mantenedores do pacote APT precisam reescrever o código-fonte para que o software use a coleção comum de dependências em vez do local dependências?
Se sim, isso ocorre com frequência e é uma tarefa importante para os mantenedores de pacotes?
Responder1
Então, minha pergunta é: se os desenvolvedores originais criaram seu software com a intenção de distribuir uma grande instalação monolítica completa com dependências agrupadas, os mantenedores do pacote APT precisam reescrever o código-fonte para que o software use a coleção comum de dependências em vez do local dependências?
Não necessariamente, desde que a instalação monolítica nãoconflitocom uma biblioteca ou nome de arquivo existente. Ou seja, se o sistema já possui uma /lib/foobar
(versão 12) e o pacote monolítico requer e empacota foobar
v. 9, esse pacote monolítico não pode armazenar sua foobar
v./lib/foobar
poderiausar /lib/foobar_v9
, ou talvez .../monolithic_app_dir/lib/foobar
.
Se sim, isso ocorre com frequência e é uma tarefa importante para os mantenedores de pacotes?
Sim, prevenindo e se necessárioseparandovários níveis de inferno de dependência são muito do que os mantenedores de pacotes fazem.
Responder2
Política Debiané que bibliotecas, ferramentas, etc. empacotadas com um programa devem ser desagregadas dele ao criar um pacote debian. A política do Debian também exige que as bibliotecas sejam divididas em pelo menos um pacote de tempo de execução (por exemplo, libfoo-version
) e uma versão de desenvolvimento com a biblioteca estática e cabeçalhos (por exemplo, libfoo-version-dev
).
O que você faz em seu próprio sistema é da sua conta, mas espera-se que qualquer desenvolvedor Debian (DD) empacotando um aplicativo monolítico se separe - o que significa depender das bibliotecas existentes no Debian ou criar pacotes para elas, caso ainda não existam .
Outras distros podem ter políticas diferentes, mas a maioria exigirá que os pacotes nos repositórios oficiais sejam desagregados - porque o empacotamento subverte o objetivo do empacotamento e torna mais difícil, por exemplo, aplicar atualizações de segurança da biblioteca a todos os programas que usam uma biblioteca específica.