Disallow virtual package no / etc / apt / preferences do Debian

3

Eu sei que posso desautorizar um pacote em particular no Debian, adicionando /etc/apt/preferences com:

Package: *x11*
Pin: release
Pin-Priority: -1

Mas como posso fazer isso para um pacote virtual como httpd ? Eu gostaria de proibir a instalação de todos os pacotes que fornecem este virtual httpd , mas o um selecionado por mim. Existe uma maneira (simples) de fazer isso?

O motivo: recentemente, um apt-get dist-upgrade removeu nginx e instalou lighttpd , porque algum outro pacote ( phppgadmin AFAIR ) dependia de httpd e algo nginx iniciado dependendo de que a atualização não foi instalável. Eu realmente gostaria que a atualização inteira falhasse nesse caso, em vez de colocar o serviço http inativo. Além disso: é possível tornar um pacote "desinstalável"? Essa seria uma boa solução também.

    
por Michal Rus 22.06.2013 / 17:07

1 resposta

0

Prefiro criar um meta-pacote pequeno com equivs com Conflicts e talvez Depends . Isso permite um controle mais refinado sobre qual pacote precisa ser instalado e qual pode não ser instalado.

Pinning é mais para escolher a versão correta de um pacote (e até muito recentemente, o pacote virtual não poderia ter uma versão) e não instalar um ou outro pacote - embora isso deva ser possível na teoria.

Outra possibilidade é usar uma ferramenta que mantenha todos os pacotes em uma lista instalados ou desinstalados, por exemplo, aptitude-robot . (Pode haver outros, mas o aptitude-robot é o que eu uso para isso.) Aptitude-robot embora apenas aplique as suas listas de pacotes configuradas quando é usado para atualizar pacotes, não se aplica ao normal aptitude ou apt-get corre.

Se você usa apenas aptitude , uma terceira possibilidade pode ser usar o recurso forbid-version (Shift-F) do Aptitude em uma situação como em seu exemplo. No entanto, isso não será aplicável se você usar novamente apt-get novamente.

    
por 08.01.2015 / 14:33