我正在制作一个 deb 包来安装自定义应用程序。我将所有文件/文件夹的所有权更改为 root,以避免在安装过程中收到警告,并且在 Ubuntu 中一切都运行顺利,因为 Ubuntu 将文件/文件夹的所有权更改为安装包的用户。
但当我在 Debian 上安装时,root 仍然是所有者。应用程序使用文件夹写入数据,问题就在这里。以标准用户身份运行的应用程序无权在该文件夹上写入。
现在,我该如何处理这个问题呢?我应该在 deb 包上制作一个安装后脚本,执行以下操作吗chmod o+w
?我应该打包已经设置了这些权限的目录吗?
或者有什么方法可以将文件的所有者设置为自动安装应用程序的用户(就像 Ubuntu 那样)?
答案1
我不确定 Ubuntu 中的行为是什么,但一般来说,对于.deb
包含具有非标准权限的文件或目录的包,您需要确保设置这些权限后 dh_fixperms
正在运行。如果您使用dh
-style rules
,则可以按如下方式执行此操作:
override_dh_fixperms:
dh_fixperms
chmod 777 yourfolder
或者
execute_after_dh_fixperms:
chmod 777 yourfolder
您还可以在以下位置执行此操作postinst
:
if [ "$1" = "configure" ]; then
chmod 777 yourfolder
fi
但rules
方法更简单(至少,我更喜欢这样做而不是依赖维护者脚本)。
答案2
我没有资格发表评论,所以我提供另一个答案。
我使用 dh_installdirs 创建了一个目录,但无法让“override_dh_fixperms”或较新的“execute_after_dh_fixperms”规则起作用。我尝试了各种路径,包括“debian/<package_name>/path/to/dir”,按照“https://manpages.debian.org/testing/debhelper/dh.1.en.html”
最终,唯一有效的方法是提供“postinst”脚本。我更愿意在“规则”中指定权限,但有时您只需要执行所需的操作即可。