Ubuntu 8.04(Hardy):如何自动 apt-get / aptitude 升级软件包以修复错误/安全问题?

Ubuntu 8.04(Hardy):如何自动 apt-get / aptitude 升级软件包以修复错误/安全问题?

我的实验室里满是运行 Ubuntu 8.04(Hardy Heron)的工作站。我的前任制作了一个 cron 脚本,用于每日更新、升级和清理。我喜欢它不需要任何关注的事实,但希望尽可能接近发行版支持的方法,以便未来的管理员可以轻松找到并理解它。具体来说,Ubuntu 中似乎有基础设施可以更干净地完成这项工作,所以我宁愿使用它。这意味着什么?

这个问题的灵感来自这个,答案不错,但很零散。根据文档,底线是什么?

答案1

该答案基于阅读以下文件:

/etc/cron.daily/apt
/etc/apt/apt.conf.d/10periodic
/etc/apt/apt.conf.d/50unattended-upgrades
/usr/share/doc/unattended-upgrades/README

unattended-upgrades它们是标准 Ubuntu 安装中包含的软件包(包括和)的一部分update-notifier-common。发行版中还有其他工具可以实现相同的目的,例如apticroncron-apt


在文件中/etc/apt/apt.conf.d/10periodic,添加一行

APT::Periodic::Unattended-Upgrade "1";

这将配置 Apt 的定期脚本以每天运行无人值守升级。如需更长的间隔,请将 增加到1更大的数字。此变量的 A0表示“已禁用”。

与此同时,autoclean应通过替换以下行来启用该行0

APT::Periodic::AutocleanInterval "1";

默认情况下,Ubuntu 8.04 仅配置从存档自动无人值守升级hardy-security。这将为您防范安全漏洞,但不适用于一般的错误修复版本。为此,您需要hardy-updates在以下位置启用存档/etc/apt/apt.conf.d/50unattended-upgrades

// Uncomment the line that reads as follows:
        "Ubuntu hardy-updates";

Ubuntu 对该功能的规范出现在维基页面。请注意,Debian 系统似乎具有完全相同的基础架构,显然是从该功能向上游迁移而来。

答案2

虽然使用 Novelocrat 建议的解决方案或使用 apticron 或 cronapt 之类的工具来自动升级 Debian 或 Ubuntu 系统是完全可能的,但我不得不质疑这是否合理。您链接的问题中提到了这一点,但您需要决定是否反对服务在升级时自动重新启动时可能发生的停机时间。通常,升级的软件包越多,您的服务停机时间就越长。这是由于软件包在安装之前错误地停止了服务,然后在安装完成后重新启动。许多软件包在安装后重新启动是正确的。这可能是一个特殊的问题,例如 MySQL,Debian 软件包在启动时会运行表检查,如果您有一个大型数据库,这可能会导致您的表锁定,直到完成。自动升级也不会让您有机会检查软件包是否存在问题。

我们的做法是,在需要时使用 Puppet 安装 99% 的软件包。我在所有服务器上运行 apticron,每天早上运行一个脚本,该脚本读取这些邮件,删除列入黑名单的升级程序(如 MySQL、Tomcat 和 PostgreSQL),并使用软件包名称和版本更新清单文件。当此清单被推送时,它会升级这些软件包。然后,我们必须在可以承受停机时间时手动执行列入黑名单的程序。

答案3

无需做任何复杂的事情。只需转到系统 > 管理 > Synaptic 包管理器 > 设置 > 存储库 > 更新,然后选择安装安全更新而不通知。

就是这样

相关内容