Como eu posso distribuir privativamente um pacote Ubuntu (Debian) que substitui qualquer lançamento oficial?

2

Ocasionalmente, eu preciso fazer pequenas modificações nos pacotes padrão do Ubuntu para uso em uma coleção de servidores que eu gerencio. Eu gostaria de publicá-los em um PPA (como launchpad.net) para que eu possa instalar e mantê-los atualizados através de todos os mecanismos usuais (atualizações autônomas, por exemplo). Qual é a maneira correta de garantir que um determinado pacote no meu PPA substitua qualquer release oficial? Isso não parece ser um trabalho para manter ou fixar, como eu essencialmente quero ramificar a seqüência de lançamento, não incluir ou excluir versões específicas. Com meu conhecimento limitado, posso especular sobre algumas direções possíveis.

  1. A opção mais correta seria de alguma forma instruir o apt para ignorar um pacote em particular nos repositórios oficiais, como se nunca tivesse existido. Eu não encontrei este tipo de controle refinado no apt.

  2. A segunda opção é manipular o número da versão, de modo que meu pacote tenha uma versão maior do que qualquer versão oficial. Isso seria possível - pelo menos com uma probabilidade muito alta - abusando do componente de época do número da versão? E quanta vergonha privada eu teria que suportar?

  3. A opção menos atraente é renomear os pacotes existentes com um sufixo privado (libfoo-mycompany) para torná-los completamente independentes. Devido às strongs convenções de nomenclatura usadas pelo gerenciador de pacotes Debian, isto pode ser um exercício para pacotes não-triviais. É isso que estou tentando evitar.

  4. A opção quatro é a solução óbvia que ignorei completamente, mesmo depois de horas pesquisando documentos e que alguém aqui está morrendo de vontade de apontar.

Obrigado

    
por psagers 03.02.2012 / 01:01

1 resposta

4

O ajuste de pinos deve ser realmente o que você deseja; você só precisará definir a prioridade acima de mil para que suas versões sempre tenham precedência, mesmo em um pacote numerado com uma versão mais alta do repo principal.

Coloque isso em /etc/apt/preferences . Se você hospeda seu próprio repo construído com algo como reprepro , então você pode direcionar seu hostname:

Package: *
Pin: origin your.repo.hostname
Pin-Priority: 1001

Ou com um PPA do Launchpad, você pode segmentar as propriedades da versão:

Package: *
Pin: release o=LP-PPA-your-ppa-name
Pin-Priority: 1001
    
por 03.02.2012 / 01:20