Colocar um pacote em espera não funciona (muito bem) para conseguir isso. Não cobre todas as ferramentas de maneira satisfatória. Por exemplo, o aptitude na linha de comando ignora completamente a invocação anterior de aptitude hold somepackage
, a instalação de um pacote também instala as dependências, mesmo que estejam em espera.
A melhor maneira na minha opinião é criar um pacote falso (chamado por exemplo "unwanted-pkg") que entre em conflito com todos os pacotes que você não quer e instalá-lo (com dpkg -i
). E então você coloca este pacote em espera para evitar sua remoção.
Você pode usar uma ferramenta como "equivs" para criar facilmente o pacote falso. Veja equivs-control
e equivs-build
. Um campo de conflitos se parece com isso:
Conflicts: xserver-xorg-video-2, xserver-xorg-core
Você pode entrar em conflito com as dependências de baixo nível comuns a todos os pacotes indesejados para evitar listar cada pacote individual (ou usar um pacote virtual como xserver-xorg-video-2).
Observe que a fixação não funciona para resolver esse problema. Se você usar aptitude install xorg
, ele instalará muitos pacotes xserver-xorg- * apesar da marcação negativa. BTW, para o pinning ser reconhecido pelo apt (verifique com apt-cache policy <package>
) você tem que usar uma sintaxe como esta:
$ cat /etc/apt/preferences
Package: xserver-xorg-video-vga
Pin: version *
Pin-Priority: -100
$ LANG=C apt-cache policy xserver-xorg-video-vga
xserver-xorg-video-vga:
Installed: (none)
Candidate: 1:4.1.0-8
Package pin: 1:4.1.0-8
Version table:
1:4.1.0-8 -100
500 http://localhost lenny/main Packages
O uso de um regexp no campo Package não funciona (exceto para "*" sozinho, caso em que você tem alguns outros requisitos no campo Pin).