软件包维护者预安装脚本“安装”与“升级”

软件包维护者预安装脚本“安装”与“升级”

根据 Debian 软件包维护者脚本文档install,可以使用第一个参数或第一个参数调用预安装脚本upgrade

preinst脚本可以通过以下方式调用:

  • new-preinst安装
  • new-preinst安装旧版本 新版本
  • new-preinst升级旧版本 新版本

install old-version new-version和 和有什么区别upgrade old-version new-version?第一种形式(只是install)似乎很清楚,但我不明白旧版本号和新版本号之间的区别install以及指定的位置。upgrade

答案1

这在中进行了解释“详细信息”部分:

  • 如果软件包已经完全安装,则使用旧版本和新版本preinst进行调用;upgrade
  • 如果该软件包之前已安装,并且仍然具有其配置文件(处于“Config-Files”状态,IE它显示为rcdpkg -l输出),preinstinstall和 旧版本和新版本调用;
  • 如果软件包是新安装的,或者之前被清除的,preinst则调用时install不带版本信息。

由于preinst在解包阶段之前运行,upgrade表示包内容的先前版本可用,而install表示包内容不存在任何版本(配置文件除外)。另外,如果提供版本信息,则表明可能有配置文件需要处理。

upgrade和之间的差异并不install显着,但确实令人想到的一种情况是涉及导出数据的升级。例如,在upgrade模式下,slapd导出preinst其数据库;它无法在install模式下执行此操作,因为不存在适当的工具。

答案2

考虑:

  1. 您安装软件包 A,版本 x。
  2. 您删除了软件包 A,但没有清除,因此配置文件、用户、组等仍然存在。
  3. 您安装软件包 A,版本 y。

现在维护者脚本需要处理这些配置文件、用户、组等,尽管严格来说,您不是在升级,而只是在安装。您可以在第二个流程图中看到这一点:“安装之前已删除但未清除的软件包”

相关内容