如何固定特定的MySQL版本以避免不必要的升级?

我正在运行MySQL服务器,并希望通过常规的apt升级来保持最新状态。 除非我在计划停机期间这样做,否则我不希望这会导致MySQL升级! 如何改变我的apt-preferences以便不会发生这种情况?

我已经尝试将其添加到文件中作为/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 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 

但是……运行aptitude安全升级只是更新了MySQL …我做错了什么?

如果您想阻止软件包升级,那么固定不是可行的方法。 你需要的是什么叫做hold,你可以在Ubuntu在线帮助中找到如何在这个页面上做到这一点

虽然我不太确定dpkg和aptitude之间的差异,但看起来似乎是要走的路。

无论如何 – 以下脚本正在执行我想要的操作并从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 

如果不执行aptitude保持行,aptitude仍会尝试更新使用dpkg --set-selections命令标记的包, 我认为相反也适用。

仅供参考 – 这也会阻止内核映像一直更新。 我只对这个更新感兴趣,如果它是出于高优先级的安全原因,因为它总是附带重启。