Phil Miller Asked: 2009-09-03 15:55:26 +0800 CST2009-09-03 15:55:26 +0800 CST 2009-09-03 15:55:26 +0800 CST Ubuntu 8.04 (Hardy):如何自动 apt-get / aptitude 升级包以解决错误/安全问题? 772 我有一个实验室,里面装满了运行 Ubuntu 8.04 (Hardy Heron) 的工作站。我的前辈们制作了一些 cron 脚本来每天更新、升级和清理。我喜欢它需要零注意力的事实,但希望尽可能接近发行版支持的方法,以便未来的管理员可以轻松找到并理解它。具体来说,似乎 Ubuntu 中有基础设施可以更干净地做到这一点,所以我宁愿使用它。这意味着什么? 这个问题的灵感来自这个问题,它有一个体面但分散的答案。根据文档,底线是什么? ubuntu 3 个回答 Voted Best Answer Phil Miller 2009-09-03T15:55:51+08:002009-09-03T15:55:51+08:00 该答案基于阅读以下文件: /etc/cron.daily/apt /etc/apt/apt.conf.d/10periodic /etc/apt/apt.conf.d/50unattended-upgrades /usr/share/doc/unattended-upgrades/README 它们是标准 Ubuntu 安装中包含的软件包(包括unattended-upgrades和)的一部分。update-notifier-common发行版中还有其他可用的工具可以达到相同的目的,例如apticron和cron-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 对此功能的规范出现在wiki 页面上。请注意,Debian 系统似乎具有完全相同的基础架构,显然是从这个特性向上游迁移的。 David Pashley 2009-09-03T23:21:38+08:002009-09-03T23:21:38+08:00 虽然使用 Novelocrat 建议的解决方案或使用 apticron 或 cronapt 之类的解决方案来自动升级 Debian 或 Ubuntu 系统是很可能的,但我不得不质疑这是否明智。在您链接到的问题中提到了这一点,但是您需要决定是否反对服务在升级时自动重新启动时可能发生的停机时间。通常,升级的包越多,服务中断的时间就越长。这是由于软件包在安装之前错误地停止了服务,然后再次启动它然后它已经安装。许多软件包在安装软件包后重新启动是正确的。这可能是一个特殊的问题,例如 MySQL,Debian 软件包在启动时会运行表检查,如果您有一个大型数据库,这可能会导致您的表在完成之前锁定。自动升级也不会让您有机会检查软件包是否存在问题。 我们所做的是在我们要求时使用 Puppet 安装 99% 的软件包。我在所有服务器上运行 apticron,每天早上,运行一个脚本来读取这些邮件,删除列入黑名单的升级,如 MySQL、Tomcat 和 PostgreSQL,并使用包名称和版本更新清单文件。当这个清单被推出时,它会升级这些包。然后,当我们能够承受停机时间时,我们必须手动执行列入黑名单的任务。 dmityugov 2009-09-03T20:28:12+08:002009-09-03T20:28:12+08:00 不需要做任何复杂的事情。只需转到系统 > 管理 > Synaptic 包管理器 > 设置 > 存储库 > 更新,然后选择安装安全更新而不通知。 而已
该答案基于阅读以下文件:
它们是标准 Ubuntu 安装中包含的软件包(包括
unattended-upgrades
和)的一部分。update-notifier-common
发行版中还有其他可用的工具可以达到相同的目的,例如apticron
和cron-apt
。在文件
/etc/apt/apt.conf.d/10periodic
中,添加一行这将 Apt 的定期脚本配置为每天运行无人值守升级。对于更长的间隔,将 增加到
1
更大的数字。此变量的 A0
表示“已禁用”。与此同时,
autoclean
应该通过替换0
那里来启用该行:默认情况下,Ubuntu 8.04 仅从
hardy-security
存档配置自动无人值守升级。这将保护您免受安全漏洞的影响,但不适用于一般的错误修复版本。为此,您需要在以下位置启用hardy-updates
存档/etc/apt/apt.conf.d/50unattended-upgrades
:Ubuntu 对此功能的规范出现在wiki 页面上。请注意,Debian 系统似乎具有完全相同的基础架构,显然是从这个特性向上游迁移的。
虽然使用 Novelocrat 建议的解决方案或使用 apticron 或 cronapt 之类的解决方案来自动升级 Debian 或 Ubuntu 系统是很可能的,但我不得不质疑这是否明智。在您链接到的问题中提到了这一点,但是您需要决定是否反对服务在升级时自动重新启动时可能发生的停机时间。通常,升级的包越多,服务中断的时间就越长。这是由于软件包在安装之前错误地停止了服务,然后再次启动它然后它已经安装。许多软件包在安装软件包后重新启动是正确的。这可能是一个特殊的问题,例如 MySQL,Debian 软件包在启动时会运行表检查,如果您有一个大型数据库,这可能会导致您的表在完成之前锁定。自动升级也不会让您有机会检查软件包是否存在问题。
我们所做的是在我们要求时使用 Puppet 安装 99% 的软件包。我在所有服务器上运行 apticron,每天早上,运行一个脚本来读取这些邮件,删除列入黑名单的升级,如 MySQL、Tomcat 和 PostgreSQL,并使用包名称和版本更新清单文件。当这个清单被推出时,它会升级这些包。然后,当我们能够承受停机时间时,我们必须手动执行列入黑名单的任务。
不需要做任何复杂的事情。只需转到系统 > 管理 > Synaptic 包管理器 > 设置 > 存储库 > 更新,然后选择安装安全更新而不通知。
而已