Как закрепить конкретную версию MySQL, чтобы избежать ненужных обновлений?

Я использую сервер MySQL и хочу регулярно обновлять apt. Я не хочу, чтобы MySQL обновлялся, если я не делаю это во время запланированного простоя! Как мне изменить мои apt-предпочтения, чтобы этого не случилось?

Я попытался добавить это в файл как /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

Это тогда заявляет, что пакеты прикреплены с выводом "политики apt-cache":

... 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

Однако... запуск aptitude safe-upgrade только что обновил MySQL... что я делаю не так?

2 ответа

Если вы хотите предотвратить обновление пакета, закрепление - не лучший способ. То, что вам нужно, называется удержанием, и вы можете узнать, как это сделать, на этой странице в онлайн-справке Ubuntu.

Похоже, удержание - это путь, хотя я не совсем уверен в разнице между удержаниями dpkg и aptitude.

В любом случае - следующий скрипт делает то, что я хочу, и исключаю список пакетов из aptitude safe-upgrade.

#!/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

Без выполнения строки удержания aptitude aptitude все равно будет пытаться обновить пакеты, помеченные dpkg --set-selections команда, и я думаю, что обратное также относится.

К вашему сведению - это также блокирует постоянное обновление образа ядра. Меня интересует только это обновление, если оно связано с соображениями безопасности с высоким приоритетом, поскольку оно всегда сопровождается перезагрузкой.

Другие вопросы по тегам