Answers:
没错,您需要一个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
。
This generally means there is a problem with the Makefile.
我明白这个信息,还有其他方法可以做到。我想找出执行此任务的推荐方法。
debian/rules
这是Makefile
为Debian软件包。由于我不认识您,因此debian/rules
我更愿意提出一个基于单个文件的解决方案。但是该chown
命令必须是安装后的过程。应该避免使用debian / dirs,但我的最初回答是完全可以的。请投票并接受它,谢谢。
不需要创建postinst
脚本,但是解决方案仍然有些棘手。我在中使用dh
通配符debian/rules
:
#!/usr/bin/make -f
%:
dh $@
binary:
dh $@
可以完成所有必要的工作。但是我需要重写某些目录的所有权(我们称其为数据)。所以我必须做一些例外,我使用特殊指令(这是一个例子):
override_dh_install:
dh_install #calls default *.install and *.dirs installation
install -d -o www-data -g www-data $(CURDIR)/debian/<package_name>/var/www/<something>/data
数据目录不需要在* .dirs文件中。但是仍然有一个窍门。Debhelper包含脚本dh_fixperms,该脚本可以将所有权重新确定为根,因此我们也需要覆盖它:
override_dh_fixperms:
dh_fixperms --exclude data
就这样。请记住,数据目录不算作conffile,因此在删除包时将其删除。如果您需要将其设置为conffile,那就另当别论了。