Impedir a desinstalação de um pacote no APT

8

Em resumo, eu quero poder configurar o pacote abcpara que:

  1. apt-get remove abc deve falhar.
  2. apt-get purge abc deve falhar.
  3. apt-get upgrade abc Deveria trabalhar.

Se as dependências do pacote mudarem para que abcdevam ser desinstaladas durante um dist-upgrade, fico feliz em ser forçado a fazer alguma coisa e depois dist-upgradenovamente.

Excluído
fonte
Criei um metapackage essencial que depende abc, mas ele foi removido de qualquer maneira ... Eu acho que você tem que recompilar o abcambiente Essential: yese Priority: requiredemdebian/control
Teresa e Junior
@TeresaeJunior Strange, um pacote essencial, defdependendo de, abcdeveria ter funcionado. Foi defremovido? Ajuda se você fizer def Priority: required?
Gilles 'SO- stop be evil'
@Gilles Exatamente, eu definir tanto Essential: yese Priority: requirede foi removido com nenhum aviso. Eu criei este pequeno script para fazer o pacote, se você quiser dar uma olhada: paste.org/44184
Teresa e Junior
Vejo que isso Essential: yesfoi ignorado, então equivsnão é suficiente para isso ... Talvez se o pacote for criado com debuild, eu tentarei.
Teresa e Junior

Respostas:

5

Não há realmente nada para 'fixar' um pacote para impedir a remoção, mas permitir a atualização.

Você pode martelar um pico em um pacote, não pode ser excluído, eliminado, atualizado, lambido, qualquer coisa ...

Mas é um pouco mais complicado do que a maioria das coisas.

Por exemplo, desejamos definir o firefox: (você usaria o nome completo adequado do pacote, é claro)

echo firefox hold | dpkg --set-selections

o que tornaria o ' firefox ' imortal. MAS , também não pode ser atualizado nesse estado.

Remover o status de espera é um pouco mais fácil, mas é uma espécie de gesto abrangente:

dpkg --clear-selections

remove o status HOLD de TUDO! Portanto, se você quiser armazenar alguns pacotes, é melhor manter uma lista para se inscrever mais tarde

Na verdade, é bastante agradável e fácil de executar usando o aptitude ou synaptics , pois eles têm opções de menu para reter / reter um pacote, cuidando de toda a contabilidade dos bastidores para você. Eu recomendo o uso de um desses (ou qualquer um dos inúmeros outros gerenciadores de pacotes que você pode encontrar)

Com o Aptitude, o uso da linha de comando também é possível:

aptitude hold <package>
aptitude unhold <package>

Lembre-se, porém, você precisará ' desatrelar ' algo se quiser atualizar. Embora se você usar o lado da GUI do Aptitude, ele deve informar se algo que é mantido é atualizável

lornix
fonte
1
apt-getfelizmente desinstalará um pacote retido.
bahamat