Por que diferentes distribuições Linux precisam corrigir pacotes?

6

Eu sei que diferentes distribuições corrigem os pacotes que estão disponíveis nos respectivos repositórios, mas eu nunca entendi por que existe a necessidade de fazê-lo. Eu apreciaria se alguém pudesse me explicar ou me indicar a documentação relevante on-line. Obrigado.

    
por siphr 03.11.2017 / 11:40

5 respostas

17

Demorou algumas tentativas, mas acho que compreendo o que você está perguntando agora.

Existem várias razões possíveis para uma distribuição corrigir o software fornecido antes do empacotamento. Vou tentar e dar uma lista não exclusiva; Tenho certeza de que existem outras razões possíveis.

Para os fins desta discussão, "upstream" refere-se ao código-fonte original dos desenvolvedores oficiais do software

  1. Patches que o upstream não incorporou (ou ainda não) em seu branch principal por qualquer motivo ou por motivos. Geralmente porque o mantenedor do pacote de distribuição para aquele pacote acredita que os ditos patches valem a pena, ou porque eles são necessários para manter a continuidade na distribuição (suponha que você tenha um servidor web e depois de uma atualização de rotina para php estava confiando em não funcionar mais, ou ele é incapaz de ler um arquivo de configuração do estilo antigo)

  2. As distribuições tendem a gostar de padrões padronizados para sua hierarquia de sistema de arquivos em /etc/ ; Cada desenvolvedor de software pode ou não ter suas próprias ideias para o que constitui os padrões apropriados. Portanto, uma das primeiras coisas que um mantenedor de pacotes de distribuição tende a fazer é corrigir os scripts de construção para configurar e esperar que os arquivos de configuração em um padrão de hierarquia correspondam ao resto da distribuição.

  3. Continuando com o tópico de configuração, um dos primeiros "patches" tende a ser um conjunto de arquivos de configuração padrão que funcionará com o resto da distribuição "out of the box", por assim dizer, permitindo usuário final para começar imediatamente após a instalação, em vez de ter que classificar manualmente uma configuração de trabalho.

Isso é apenas fora do topo da minha cabeça. Pode muito bem haver outros, mas espero que isso lhe dê uma ideia.

    
por 03.11.2017 / 12:00
10

Do topo da minha cabeça, além da resposta do @ Shadur:

  • Algumas distribuições desencorajam o uso de bibliotecas incorporadas ou arquivos fornecidos por outro pacote. Por exemplo, muitos softwares contêm JQuery embutido, mas o Debian tem um pacote libjs-jquery que o fornece.
  • Geralmente, o upstream mescla os patches de segurança e as alterações incompatíveis com versões anteriores, por exemplo, depende de bibliotecas mais novas. Para evitar alterações extensas a toda a distribuição apenas para obter uma verificação de certificado mais correta, o mantenedor do pacote pode optar por apenas selecionar os patches de segurança.
  • O software upstream pode entrar em conflito com outro software, por exemplo, eles podem fornecer um arquivo com o mesmo caminho, mas conteúdo diferente. Para resolver este conflito, o patch pode ser necessário para procurar o arquivo em outro lugar.
  • O Upstream geralmente se contenta com instruções para adicionar manualmente algo a outro arquivo de configuração de software, que é propenso a erros ao instalar e desinstalar pacotes, portanto a distro pode preferir usar arquivos fragmentados em um diretório * .d.
  • Algumas partes do upstream podem ser incompatíveis com a licença da distribuição, então o mantenedor do pacote pode decidir remendar as partes problemáticas.
  • O Upstream usa caminhos com uma suposição de um outro software específico (por exemplo, Apache), mas o mantenedor gostaria que ele desse suporte a um servidor da Web genérico.
  • Às vezes, o desenvolvedor do upstream não se comunica mais e os bitrots do software, portanto, um patch é necessário para mantê-lo funcionando.
por 03.11.2017 / 18:21
5

Existem várias razões:

  1. Não existe software perfeito
  2. Não há software de empacotamento universal no Linux:

  3. Por causa do bifurcação

  4. Por causa das diferentes interpretações da Bíblia FHS
  5. Por causa do ego
por 03.11.2017 / 12:01
4

O motivo mais premente: Construa erros.

  • Talvez você não queira esperar que o upstream corrija (digamos que a correção é óbvia).
  • Talvez o upstream não aceite sua correção por qualquer motivo, mesmo que você obviamente precise disso.
  • Talvez não seja mantido.
por 03.11.2017 / 16:43
4

Um motivo comum, pelo menos para o Debian, é que o pacote esteja de acordo com a Política Debian. Sem dúvida, outras distribuições têm critérios semelhantes aos que desejam que sua embalagem satisfaça. Como o Debian Policy é um mestre exigente, esses patches podem ter vários formatos e atender a uma variedade de propósitos, incluindo:

  • modificando o sistema de compilação para torná-lo são ou mais flexível. Às vezes, o sistema de compilação não é flexível o suficiente para manipular a criação de um pacote Debian. Como alternativa, altere o sistema de construção para que os arquivos sejam colocados em locais em conformidade com a Política e / ou o FHS.

  • adicionando uma página man ( a política do Debian requer que cada pacote tenha uma página man ).

  • Removendo arquivos que têm uma licença não-livre ou sem licença clara.

Corrigindo o software (incluindo possivelmente o sistema de compilação) para que ele seja compilado com pacotes que estão realmente disponíveis naquela versão do Debian.

Correções específicas da arquitetura. O Debian se baseia em uma variedade de arquiteturas, algumas das quais os escritores do software podem nunca ter tentado usá-lo.

    
por 03.11.2017 / 22:42