【发布时间】:2016-05-15 07:16:57
【问题描述】:
我已经构建了一个 debian 包,它只是将文件放入 /etc/sensu/plugins 以便我的检查以这种方式分发。
现在我写了一个新的检查,构建了包并将它安装在任何地方,但我发现我忘记了文件 +x。
所以我创建了文件 +x 并再次构建了包,但是当我在任何地方安装它时,它不会覆盖该文件的权限。
我如何强制它这样做?
【问题讨论】:
标签: debian package packages file-permissions
我已经构建了一个 debian 包,它只是将文件放入 /etc/sensu/plugins 以便我的检查以这种方式分发。
现在我写了一个新的检查,构建了包并将它安装在任何地方,但我发现我忘记了文件 +x。
所以我创建了文件 +x 并再次构建了包,但是当我在任何地方安装它时,它不会覆盖该文件的权限。
我如何强制它这样做?
【问题讨论】:
标签: debian package packages file-permissions
主要问题是 /etc 中的文件被 dh_installdeb 视为 conffiles,您可能在包构建期间使用这些文件,因此打包系统以特定方式处理,因为假设用户可以编辑这些文件并且应该保留这些更改。因此,除非您明确清除它们,否则它们不会随包一起删除,并且它们将保留其权限。我不知道有什么方法可以让您将配置文件的权限更改为包中相同文件的权限(例如,dpkg 的--force-confnew 选项不起作用)。
从管理员的角度来看,您应该清除软件包(以便删除配置文件)然后重新安装软件包或手动更改权限。
从打包者的角度来看,你可以在postinst脚本中修复权限,这样升级包就会修复权限。作为替代方案,您也可以按照here 的说明调整配置文件:安装新包后,权限将设置为包中文件的权限。
一般情况下,您可能还想检查dh_fixperms 是否在打包过程中更改了您的文件的权限,并最终使其不作用于这些文件(事实并非如此)。
【讨论】: