升级到新版本的 Ubuntu 时,.deb 包的 postinst 脚本是否保证运行?

升级到新版本的 Ubuntu 时,.deb 包的 postinst 脚本是否保证运行?

我的 .deb 包包含一个postinst根据用户的操作系统修改包的脚本。

我想确保postinst当用户升级其 Ubuntu 版本时重新运行此脚本。这能保证发生吗,还是我需要配置脚本以确保它再次运行?

答案1

postinst当安装或升级特定包时,脚本会运行。

它在其他任何时间都不会运行。

确保脚本在发布升级期间运行的通常方法是通过增加版本号来升级软件包。

所以...

 Release A = Version 1.1a
 Release B = Version 1.1b (still version 1.1, but different to apt)
 Release C = Version 1.2a (new upstream release version 1.2)

是的,这意味着您要维护多个版本。但在基于 Debian 的系统中,这是最简单的解决方案。还有其他使用其他打包系统的替代方案,每个系统都有各自的优点和缺点。

答案2

在最佳情况下,您可以在软件包中的“/etc/os-release”上放置一个触发器,每当此文件被另一个软件包更改时,它就会触发您的软件包。

如果软件包在前/后脚本中或通过“ucf”或“config-package”等机制更改了“/etc/os-release”,则此方法不起作用。

由于“/etc/os-release”是“base-files”包的一部分,因此触发器通常可以按预期工作。

相关内容