Normalmente, no meu Ubuntu 16.04 LTS, bloqueio versões de pacotes com a funcionalidade APT-pin.
Por exemplo, se eu quiser pin meld
para a versão 1.5.3-1ubuntu1 eu crio o seguinte arquivo pin:
cat <<EOF | sudo tee /etc/apt/preferences.d/pin-meld
Package: meld
Pin: version 1.5.3-1ubuntu1
Pin-Priority: 1337
EOF
Este arquivo aplica configurações em todo o sistema: as ferramentas apt
, apt-get
, aptitude
e GUI, como synaptic
e muon
, respeitam isso.
Eu conheço outro mecanismo - apt-mark
. Vamos assumir.
Meu ponto de partida - eu instalei manualmente meld_1.5.3-1ubuntu1 , seu pin foi removido.
$ apt-mark showhold
$ apt-cache policy meld
meld:
Installed: 1.5.3-1ubuntu1
Candidate: 3.14.2-1
Version table:
3.14.2-1 500
500 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
500 http://archive.ubuntu.com/ubuntu xenial/universe i386 Packages
*** 1.5.3-1ubuntu1 100
100 /var/lib/dpkg/status
Então eu mantenho a versão instalada.
$ sudo apt-mark hold meld
meld set on hold.
$ dpkg -l | grep meld
hi meld 1.5.3-1ubuntu1 all graphical tool to diff and merge files
O APT-mark mostra que está em espera. Mas apt-cache policy meld
não tem alterações
$ apt-cache policy meld
meld:
Installed: 1.5.3-1ubuntu1
Candidate: 3.14.2-1
Version table:
3.14.2-1 500
500 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
500 http://archive.ubuntu.com/ubuntu xenial/universe i386 Packages
*** 1.5.3-1ubuntu1 100
100 /var/lib/dpkg/status
apt-get upgrade
informa que meld
é retido :
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
meld
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Mas se eu iniciar o aptitude
no modo interativo, tenho meld
em Pacotes atualizáveis :
Actions Undo Package Resolver Search Options Views Help
C-T: Menu ?: Help q: Quit u: Update g: Preview/Download/Install/Remove Pkgs
aptitude 0.7.4
--\ Upgradable Packages (1)
--\ gnome - The GNOME Desktop Environment (1)
--\ universe - Unsupported Free Software. (1)
ih meld 1.5.3-1ubuntu1 3.14.2-1
e se eu acidentalmente selecionar Ações - > Cancelar ações pendentes a retenção será removida.
Até onde eu posso entender, synaptic
ignora apt-mark
marcações, sua versão de bloqueio funciona de maneira diferente.
meld
está listado aqui como Instalado (atualizável) . O botão Marcar todas as atualizações não o seleciona automaticamente, mas o pacote pode ser atualizado acidentalmente por Marcar para atualização .
O Muon funciona da mesma maneira com pacotes, mantido por apt-mark
. Mas o que é interessante é que a opção Bloquear na versão atual escreve o arquivo PIN em /etc/apt/preferences.d/meld
.
Estou entendendo que o pino APT é mais confiável do que apt-mark
?