如何使用deb包创建目录并更改其所有者
我需要创建deb包来创建日志目录。 我想创建目录/var/logs/my_package
并将其所有者更改为my_user
。
在文档中有信息我可以创建文件debian/dir
。 但有消息称,这不是最好的方法。 并且没有信息应该如何更改目录所有者(我正在考虑将命令chown my_user.my_user /var/logs/my_package
放在debian/postinst
文件中)。
使用deb包创建目录的推荐方法是什么?
你是对的,你需要一个debian/my_package.postint
文件来执行这样的操作:
#!/bin/sh #DEBHELPER# set -e USER="my_user" mkdir -p /var/log/my_package/ if id -u $USER > /dev/null 2>&1; then chown ${USER}:${USER} /var/log/my_package/ fi
注意 :脚本在调用chown
之前检查用户是否存在。
哟不需要创建postinst
脚本,但解决方案仍然有点棘手。 我在debian/rules
使用dh
通配符:
#!/usr/bin/make -f %: dh $@ binary: dh $@
它可以完成所有需要的东西。 但我需要覆盖一些dir的所有权(让我们称之为数据)。 所以我必须做一些例外,我使用特殊指令(这是一个例子):
override_dh_install: dh_install #calls default *.install and *.dirs installation install -d -o www-data -g www-data $(CURDIR)/debian//var/www//data
数据目录不需要在* .dirs文件中。 但仍有一招。 Debhelper包含脚本dh_fixperms,它会将所有权修复回root,所以我们也需要覆盖:
override_dh_fixperms: dh_fixperms --exclude data
就这样。 请记住,数据目录不算作conffile,因此将在删除包时将其删除。 如果你需要使它成为一个conffile它是另一个故事。