ログ用のディレクトリを作成するdebパッケージを作成する必要があります。ディレクトリ/var/logs/my_package
を作成し、その所有者をmy_user
に変更したい。
ドキュメントには情報があります では、ファイルdebian/dir
を作成できます。しかし、これが最善の方法ではないという情報があります。また、ディレクトリの所有者をどのように変更するかについての情報はありません(chown my_user.my_user /var/logs/my_package
itコマンドを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/<package_name>/var/www/<something>/data
データディレクトリは* .dirsファイルにある必要はありません。しかし、まだ1つのトリックがあります。 Debhelperには、所有権をルートに戻すスクリプトdh_fixpermsが含まれているため、オーバーライドする必要があります。
override_dh_fixperms:
dh_fixperms --exclude data
それで全部です。データディレクトリはconffileとしてカウントされないため、パッケージの削除時に削除されることに注意してください。 conffileにする必要がある場合は、別の話です。