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스크립트 를 만들 필요 는 없지만 솔루션은 여전히 ​​까다 롭습니다. 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로 만들어야한다면 또 다른 이야기입니다.