如何强制 Debian 包覆盖权限?

How to force a Debian package to overwrite permissions?

我构建了一个 debian 软件包,它只是将文件放入 /etc/sensu/plugins,以便我的支票以这种方式分发。

现在我写了一个新的支票,构建了包并将它安装到各处,但我注意到我忘了制作文件 +x。

所以我创建了文件 +x 并再次构建了程序包,但是当我在任何地方安装它时它并没有覆盖该文件的权限。

如何强制它这样做?

主要问题是 /etc 中的文件被 dh_installdeb 视为配置文件,您可能在构建包期间使用这些文件,因此打包系统以特定方式处理,因为它假定用户可以编辑这些文件并且应该保留这些更改。因此,除非您明确清除它们,否则它们不会随包一起删除,并且它们将保留其权限。我不知道有什么方法可以让您更改配置文件的权限与包中相同文件的权限(例如,dpkg--force-confnew 选项不起作用)。

从管理员的角度来看,您应该清除包(以便删除配置文件)然后重新安装包或手动更改权限。

从打包者的角度来看,您可以修复postinst script, so that upgrading the package will fix the permissions. As an alternative you may also tweak the conffiles as explained here中的权限:安装新包后,权限将设置为包中文件的权限。

一般来说,您可能还想检查一下dh_fixperms是否在打包过程中改变了您的文件的权限,并最终使其不对这些文件起作用(这不是这种情况)。