如稍早提过的 (见专栏 ), 可在不必确认的情况下取代原来的配置档 (以 --force-confdef --force-confold
选项运行该功能)。然而,有三个交互来源:有些来自 APT 自身、有些由 debconf
处理、还有的是由软件包配置脚本运行。
APT 的例子很简单:-y
选项 (或 --assume-yes
) 告诉 APT 面对所有的问题时,答案都是 “yes”。
需要较详细的说明。此程序原本的设计就是控制给用户看到的相关性及数量,以及显示的方法。问题需有最小的优先权;拥有最小优先权以上的问题才显示。debconf
缺省的答案 (由软件包维护者设置) 会略过。
其他的相关配置元素是前端用到的接口。若选择 noninteractive
,就停用所有的用户交互。若软件包试图显示信息性说明,则以电子邮件送给管理者。
最后一个交互来源,以及最难摆脱的,是 dpkg
运行的配置脚本。不幸的是,没有标准的解法且没有较佳的答案。
通常的做法是,把标准的输入由空白内容的 /dev/null
文件转向给 *命令* </dev/null
,或由新的键入字符串取代。以上的方法都不是 100 % 可靠,但它们可以转至缺省的答案,因为大部分的脚本已考量到无默认值的答案。
把前述的元素组合起来,就可能设计出一个可处理自动升级的小而可靠脚本。
例 6.4. 无交互升级脚本
Falcot 公司采用异质系统电脑,运行多种功能。管理者必须为每部电脑挑选最适合的解决方案。
事实上,安装 Jessie 的服务器脑采用上述的 “奇特组合”,并且自动更新。只有最挑剔的服务器 (如防火墙) 才以 设置,所以总是在管理员的监控下更新。
办公室的桌机也可安装 Jessie,但加装 gnome-packagekit,所以用户可以自行更新。没有用户介入的更新,电脑可能出现无预期的结果,可能让用户摸不清头绪。
在实验室里,有些安装 测试版 — 就是使用最新版的软件 — 的电脑也不会自动更新。管理者必须配置 APT 才能更新它们;决定更新时 (手动),列出重新加载软件包清单并避免下载繁琐的部件,管理者就能专注在真正有用的部件。