Não Desinstalar Flag no Apt?

3

A infra-estrutura do pacote Debian / Ubuntu tem alguma forma de marcar os pacotes de forma que eles nunca sejam desinstalados, não importando a fixação de outros pacotes?

Meu problema é que, às vezes, pacotes instalados pelo Puppet (vindos de repositórios não padrão, é claro) fazem com que outros pacotes sejam desinstalados - em particular, openssh- {server, client}.

A maneira como isso acontece é que o pacote A e B dependem de diferentes versões do pacote C. Se A está instalado e alguém pede para instalar B, então a versão de C muda. A nova versão do C é incompatível com A, portanto, A é desinstalado.

O engraçado é que o processo é então invertido, pois, na próxima execução, o Puppet percebe que A não está instalado e tenta instalá-lo.

Então, basicamente, quero ter certeza de que A never será desinstalado, o que impediria a instalação do B. Isso seria relatado como um erro, tornando-me ciente do problema.

Se alguém se importa, o Puppet usa o seguinte comando para instalar pacotes:

/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install <package>
    
por Daniel C. Sobral 21.05.2012 / 15:30

2 respostas

3

Você precisa "manter" os pacotes de forma que apt-get upgrade never os remova como parte da atualização para uma versão mais recente.

echo "package-name hold" | sudo dpkg --set-selections

No entanto, observe que, explicitamente, fazer um apt-get install package-name WILL substituirá o bloqueio, enquanto um apt-get remove package-name desinstalará o pacote.

Se você atribuí-lo a uma versão específica com prioridade de 1001 ou superior, até apt-get install NÃO fará o upgrade, mas ainda poderá ser removido.

    
por ish 21.05.2012 / 15:55
1

Isso provavelmente pode ser resolvido adicionando isto ao apt.conf [.d]:

Aptitude::Always-Use-Safe-Resolver "true";

E para o site.pp no fantoche:

Package { provider => 'aptitude' }

Ainda não testamos isso corretamente.

    
por user67212 30.05.2012 / 17:55