如何强制Debian包覆盖权限



我已经构建了一个debian包,它只需将文件放在/etc/sensu/plugins中,这样我的检查就可以这样分发了。

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

所以我制作了文件+x并再次构建了包,但当我在任何地方安装它时,它不会覆盖该文件的权限。

我该如何强迫它这样做?

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

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

从packager的角度来看,您可以修复postinst脚本中的权限,这样升级包就会修复权限。作为替代方案,您也可以按照此处的说明调整conffiles:一旦安装了新软件包,权限将设置为软件包中文件的权限。

通常,您可能还想检查dh_fixperms是否在打包过程中更改了文件的权限,并最终使其不对这些文件采取行动(事实并非如此)。

最新更新