8.4.3. 校验和,配置文件
除了前面几节中已经提到的维护者脚本和控制数据之外, 控制.tar.gz Debian 软件包的存档可能包含其他有趣的文件:
# ar p /var/cache/apt/archives/bash_4.4-2_amd64.deb control.tar.gz | tar -tzf -
./
./配置文件
。/控制
./md5sums
./postinst
./postrm
./预加载
./普雷姆
./
./配置文件
。/控制
./md5sums
./postinst
./postrm
./预加载
./普雷姆
首先-md5sums— 包含所有包文件的 MD5 校验和。 它的主要优点是它允许 dpkg --验证 检查这些文件自安装以来是否已被修改。 注意,当这个文件不存在时, 的dpkg 将在安装时动态生成它(并将其存储在 dpkg 数据库中,就像其他控制文件一样)。
conffiles 列出必须作为配置文件处理的包文件。 管理员可以修改配置文件,并且 dpkg 会在软件包更新期间尝试保留这些更改。
实际上,在这种情况下, 的dpkg 行为尽可能智能:如果标准配置文件在两个版本之间没有改变,它什么都不做。 但是,如果文件已更改,它将尝试更新此文件。 可能有两种情况:要么管理员没有接触过这个配置文件,在这种情况下 的dpkg 自动安装新版本; 或者文件已被修改,在这种情况下 的dpkg 询问管理员他们希望使用哪个版本(经过修改的旧版本,或随包提供的新版本)。 为协助做出此决定, 的dpkg 提供显示一个 差异 这显示了两个版本之间的差异。 如果您选择保留旧版本,新版本将存储在一个文件中的相同位置 .dpkg-dist 后缀。 如果您选择新版本,旧版本将保留在一个文件中 .dpkg-旧 后缀。 另一个可用的动作是暂时打断 的dpkg 编辑文件并尝试恢复相关修改(以前标识为 差异).
dpkg 处理配置文件更新,但在此过程中,它会定期中断其工作以请求管理员输入。 这可能是耗时且不方便的。 幸运的是,您可以指示 dpkg 自动响应这些提示。 --force-confold 选项保留文件的旧版本,而 --force-confnew 将使用新版本。 即使管理员没有更改文件,也会尊重这些选择,这很少会产生预期的效果。 添加 --force-confdef 选项告诉 dpkg 在可能的情况下自行决定(换句话说,当原始配置文件没有被触及时),并且仅在其他情况下使用 --force-confnew 或 --force-confold 。
这些选项适用于 的dpkg,但大多数时候管理员将直接与 能力倾向 or 根据 程式。 因此,有必要了解用于指示要传递给 的dpkg 命令(它们的命令行界面非常相似)。
# apt -o DPkg::options::=”--force-confdef” -o DPkg::options::=”--force-confold” 全-
➥ 升级
# apt -o DPkg::options::=”--force-confdef” -o DPkg::options::=”--force-confold” 全-
➥ 升级
这些选项可以直接存储在 根据的配置。 为此,只需在 /etc/apt/apt.conf.d/local 文件:
DPkg::options {“--force-confdef”; ”--force-confold”; }
DPkg::options {“--force-confdef”; ”--force-confold”; }
在配置文件中包含这个选项意味着它也将用于图形界面,例如 能力倾向.
相反,您也可以强制 的dpkg 问配置文件问题。 这 --强制会议 选项指示 的dpkg 显示有关配置文件的问题,即使在通常不需要的情况下也是如此。 因此,当使用此选项重新安装软件包时, 的dpkg 将对管理员修改的所有配置文件再次提问。 这很方便,特别是如果原来的配置文件已经被删除并且没有其他副本可以重新安装:正常的重新安装是行不通的,因为 的dpkg 将删除视为合法修改的一种形式,因此不会安装所需的配置文件。