J'utilise un serveur MySQL et je souhaite le maintenir à jour avec apt-upgrades. Je ne veux pas que MySQL soit mis à jour à moins que je ne le fasse pendant les temps morts planifiés! Comment modifier mes préférences apt pour que cela ne se produise pas?
J'ai essayé d'ajouter ceci à un fichier en tant que /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
Cela indique ensuite que les paquets sont épinglés avec "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
Cependant ... lancer aptitude safe-upgrade vient de mettre à jour MySQL ... qu'est-ce que je fais de travers?
Si vous souhaitez empêcher la mise à niveau d'un paquet, épingler n'est pas la solution. Ce dont vous avez besoin s’appelle attente, et vous pouvez savoir comment le faire sur cette page de l’aide en ligne Ubunt
Holding semble être la voie à suivre, bien que je ne sois pas tout à fait sûr de la différence entre dpkg et aptitude.
Quoi qu'il en soit, le script suivant fait ce que je veux et exclut une liste de paquets d'une mise à niveau d'aptitude safe.
#!/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
Sans faire la ligne de maintien aptitude, aptitude essaierait toujours de mettre à jour les paquets marqués avec la commande dpkg --set-selections
et je pense l'inverse s'applique également.
FYI - cela empêche également l’image du noyau de se mettre à jour tout le temps. Cette mise à jour ne m'intéresse que si c'est pour des raisons de sécurité hautement prioritaires car elle est toujours accompagnée d'un redémarrage attaché.