로그 디렉토리를 만들 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 $@
필요한 모든 작업을 수행합니다. 그러나 일부 디렉토리 소유권을 재정의해야합니다 (데이터라고 함). 그래서 나는 예외를 만들어야합니다, 나는 특별한 지시문을 사용합니다 (이것은 예입니다) :
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
그게 다야. data dir은 conffile로 계산되지 않으므로 remove 패키지에서 제거됩니다. conffile로 만들어야한다면 또 다른 이야기입니다.