6.9. 自动升级
Falcot Corp 虽有多部电脑但人力有限,其管理者试图尽可能地自动升级。必须在无人为介入情况下处理升级事宜。
6.9.1. 配置 dpkg
As we have already mentioned (see sidebar 更进一步 避免配置文件问题), dpkg
can be instructed not to ask for confirmation when replacing a configuration file (with the --force-confdef --force-confold
options). Interactions can, however, have three other sources: some come from APT itself, some are handled by debconf
, and some happen on the command line due to package configuration scripts (sometimes handled by ucf).
6.9.2. 配置 APT
APT 的例子很简单:-y
选项 (或 --assume-yes
) 告诉 APT 面对所有的问题时,答案都是 “yes”。
6.9.3. 配置 debconf
debconf
需要较详细的说明。此程序原本的设计就是控制给用户看到的相关性及数量,以及显示的方法。问题需有最小的优先权;拥有最小优先权以上的问题才显示。debconf
缺省的答案 (由软件包维护者设置) 会略过。
其他的相关配置元素是前端用到的接口。若选择 noninteractive
,就停用所有的用户交互。若软件包试图显示信息性说明,则以电子邮件送给管理者。
配置 debconf
时,用到 dpkg-reconfigure
工具,它是来自 debconf 软件包;相关的命令是 dpkg-reconfigure debconf
。配置值可能是在需要时暂时取代的环境变量 (例如,DEBIAN_FRONTEND
控制接口,如同在 debconf(7) 手册页面所述)。
6.9.4. 处理命令行接口
最后一个交互来源,以及最难摆脱的,是 dpkg
运行的配置脚本。不幸的是,没有标准的解法且没有较佳的答案。
通常的做法是,把标准的输入由空白内容的 /dev/null
文件转向给 *命令* </dev/null
,或由新的键入字符串取代。以上的方法都不是 100 % 可靠,但它们可以转至缺省的答案,因为大部分的脚本已考量到无默认值的答案。
6.9.5. 神奇的组合
把前述的元素组合起来,就可能设计出一个可处理自动升级的小而可靠脚本。
例 6.5. 无交互升级脚本
- export DEBIAN_FRONTEND=noninteractive
- yes '' | apt-get -y -o DPkg::options::="--force-confdef" -o DPkg::options::="--force-confold" dist-upgrade
实务 Falcot Corp 个案
Falcot 公司采用异质系统电脑,运行多种功能。管理者必须为每部电脑挑选最适合的解决方案。
In practice, the servers running Buster are configured with the “miracle combination” above, and are kept up to date automatically. Only the most critical servers (the firewalls, for instances) are set up with apticron
, so that upgrades always happen under the supervision of an administrator.
The office workstations in the administrative services also run Buster, but they are equipped with gnome-packagekit, so that users trigger the upgrades themselves. The rationale for this decision is that if upgrades happen without an explicit action, the behavior of the computer might change unexpectedly, which could cause confusion for the main users.
在实验室里,有些安装 测试版 — 就是使用最新版的软件 — 的电脑也不会自动更新。管理者必须配置 APT 才能更新它们;决定更新时 (手动),列出重新加载软件包清单并避免下载繁琐的部件,管理者就能专注在真正有用的部件。