deb 패키지를 사용하여 디렉토리를 만들고 소유자를 변경하는 방법


11

로그 디렉토리를 만들 deb 패키지를 만들어야합니다. 디렉토리를 만들고 /var/logs/my_package소유자를로 변경 하고 싶습니다 my_user.

에서 워드 프로세서 정보가 나는 파일을 만들 수는 debian/dir. 그러나 이것이 최선의 방법은 아니라는 정보가 있습니다. 그리고 디렉토리 소유자를 어떻게 변경 해야하는지에 대한 정보가 없습니다 ( 파일에 명령 chown my_user.my_user /var/logs/my_package을 넣는 것에 대해 생각 하고 debian/postinst있습니다).

deb 패키지로 디렉토리를 만드는 권장 방법은 무엇입니까?


Ask Ubuntu에 오신 것을 환영합니다. , 당신은 읽을 시간의 일부를 둘 수 있었다하시기 바랍니다 askubuntu.com/help/someone-answers을
실뱅 피노

답변:


9

당신이 옳았습니다. 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.


1
정말 죄송하지만이 질문에 대한 답변이 아닙니다.
bessarabov

이 postinst 스크립트가 원래 질문에 대답하지 않는 이유를 설명하십시오. 나는 조금 당황했다.
Sylvain Pineau

올바른 방법으로 설명하지 않아서 죄송합니다. 귀하의 솔루션은 잘 작동하며 이것이 내가 구현 한 것입니다. 그러나 문서This generally means there is a problem with the Makefile. 는 다른 방법이 있다는 메시지를 이해 한다고 말합니다 . 그리고이 작업을 수행하는 데 권장되는 방법이 무엇인지 알고 싶습니다.
bessarabov

1
디렉토리 생성에서 수행 할 수있는 debian/rules이는이 Makefile데비안 패키지. 나는 당신을 몰랐기 때문에 debian/rules단일 파일을 기반으로 솔루션을 제안하는 것을 선호했습니다. 그러나 chown명령은 설치 후 프로세스 여야합니다. 데비안 / 디렉토리는 피해야하지만 초기 답변은 완벽합니다. 투표 해 주셔서 감사합니다.
Sylvain Pineau

3

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로 만들어야한다면 또 다른 이야기입니다.


패키지가 구축 된 시스템에 사용자와 그룹이 있어야합니까? 그렇다면, 데비안 기반 메커니즘으로이를 보장 할 수있는 방법이 있습니까?
moritz

패키지가 설치된 시스템이 아니라 데비안 패키지를 빌드하는 데 사용되는 디렉토리가 시스템에 생성 됩니다.
gerardw
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.