如何使用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它是另一个故事。