Я должен создать 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
, сценарий, но решение все еще немного хитер. Я использую dh
подстановочный знак в debian/rules
:
#!/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 файле. Но все еще существует один прием. Debhelper содержит сценарий dh_fixperms, который зафиксировал бы владение назад для укоренения, таким образом, мы должны переопределить также:
override_dh_fixperms:
dh_fixperms --exclude data
Это - все. Следует иметь в виду, что dir данных не рассчитывает как conffile, таким образом, он будет удален на пакете, удаляют. Если необходимо сделать это conffile, это - другая история.