Como faço para fixar uma versão específica do MySQL para evitar atualizações desnecessárias?

4

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?

    
por asparagino 27.01.2011 / 21:34

2 respostas

3

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

    
por user9521 27.01.2011 / 23:05
2

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.

    
por asparagino 01.02.2011 / 22:36