Se você quiser impedir a atualização de um pacote, a fixação não é o caminho a ser seguido. O que você precisa é chamado de holding, e você pode descobrir como fazer isso nesta página no Ubuntu ajuda online
Estou executando um servidor MySQL e quero mantê-lo atualizado com apt-upgrades regulares. Eu não quero que isso faça com que o MySQL atualize a menos que eu esteja fazendo isso durante o tempo de inatividade programado! Como altero minhas preferências de apt para que isso não aconteça?
Eu tentei adicionar isso a um arquivo como /etc/apt/preferences.d/pin-mysql
Package: mysql-client-5.1
Pin: version 5.1.41-3ubuntu12.7
Pin-Priority: 1001
Package: mysql-client-core-5.1
Pin: version 5.1.41-3ubuntu12.7
Pin-Priority: 1001
Package: mysql-common
Pin: version 5.1.41-3ubuntu12.7
Pin-Priority: 1001
Package: mysql-server
Pin: version 5.1.41-3ubuntu12.7
Pin-Priority: 1001
Package: mysql-server-5.1
Pin: version 5.1.41-3ubuntu12.7
Pin-Priority: 1001
Package: mysql-server-core-5.1
Pin: version 5.1.41-3ubuntu12.7
Pin-Priority: 1001
Isso, então, indica que os pacotes são fixados com a saída "apt-cache policy":
... all package sources here
500 http://security.ubuntu.com/ubuntu/ lucid-security/universe Packages
release v=10.04,o=Ubuntu,a=lucid-security,n=lucid,l=Ubuntu,c=universe
origin security.ubuntu.com
500 http://security.ubuntu.com/ubuntu/ lucid-security/restricted Packages
release v=10.04,o=Ubuntu,a=lucid-security,n=lucid,l=Ubuntu,c=restricted
origin security.ubuntu.com
... etc
Pinned packages:
mysql-server -> 5.1.41-3ubuntu12.7
mysql-server-core-5.1 -> 5.1.41-3ubuntu12.7
mysql-client-core-5.1 -> 5.1.41-3ubuntu12.7
mysql-common -> 5.1.41-3ubuntu12.7
mysql-server-5.1 -> 5.1.41-3ubuntu12.7
mysql-client-5.1 -> 5.1.41-3ubuntu12.7
No entanto ... executando o aptitude safe-upgrade acabou de atualizar o MySQL ... o que estou fazendo errado?
Se você quiser impedir a atualização de um pacote, a fixação não é o caminho a ser seguido. O que você precisa é chamado de holding, e você pode descobrir como fazer isso nesta página no Ubuntu ajuda online
Manter parece ser o caminho a percorrer, embora eu não tenha muita certeza sobre a diferença entre o dpkg e o aptitude.
De qualquer forma - o script a seguir está fazendo o que eu quero e excluindo uma lista de pacotes de um upgrade seguro do aptitude.
#!/bin/bash
# Stop the mysql packages from upgrading!
# Must run as root! Check presence of the packages-hold.log file to avoid running repeatedly.
PACKAGES="mysql-client-5.1 mysql-client-core-5.1 mysql-common mysql-server mysql-server-5.1 mysql-server-core-5.1 linux-image-server linux-image-2.6.32-28-server"
for PACKAGE in $PACKAGES;
do
/bin/echo $PACKAGE hold | /usr/bin/dpkg --set-selections
done
/usr/bin/aptitude hold $PACKAGES
echo $PACKAGES > /var/log/packages-hold.log
Sem o hold do aptitude, o aptitude ainda tentará atualizar pacotes marcados com o comando dpkg --set-selections
e eu acho que o oposto também se aplica.
FYI - isso também bloqueia a atualização da imagem do kernel o tempo todo. Estou interessado apenas nessa atualização se for por motivos de segurança de alta prioridade, pois sempre vem com uma reinicialização anexada.