사용자 정의 응용 프로그램을 설치하기 위해 deb 패키지를 만들고 있습니다. 설치 중에 경고가 표시되지 않도록 모든 파일/폴더의 소유권을 루트로 변경했으며 Ubuntu가 파일/폴더의 소유권을 패키지를 설치한 사용자로 변경하기 때문에 Ubuntu에서 모든 것이 원활하게 작동했습니다.
하지만 데비안에 설치할 때 루트는 여전히 소유자입니다. 응용 프로그램은 폴더를 사용하여 데이터를 쓰는데 거기에 문제가 있습니다. 표준 사용자로 실행되는 애플리케이션에는 이 폴더에 쓸 수 있는 권한이 없습니다.
이제 이 문제를 어떻게 처리해야 할까요? 다음을 수행하는 deb 패키지에 설치 후 스크립트를 만들어야 합니까 chmod o+w
? 이미 이러한 권한이 설정된 디렉터리를 패키지해야 합니까?
아니면 (Ubuntu처럼) 응용 프로그램을 자동으로 설치한 사용자에게 파일 소유자를 설정하는 방법이 있습니까?
답변1
Ubuntu에서 동작이 무엇인지 잘 모르겠지만 일반적으로 .deb
비표준 권한이 있는 파일이나 디렉터리가 포함된 패키지의 경우 해당 권한이 설정되어 있는지 확인해야 합니다.뒤쪽에 dh_fixperms
달리기. dh
-style을 사용하면 rules
다음과 같이 이를 수행할 수 있습니다.
override_dh_fixperms:
dh_fixperms
chmod 777 yourfolder
또는
execute_after_dh_fixperms:
chmod 777 yourfolder
다음 사이트에서도 이 작업을 수행할 수 있습니다 postinst
.
if [ "$1" = "configure" ]; then
chmod 777 yourfolder
fi
하지만 rules
방법은 더 간단합니다. (적어도 유지관리자 스크립트에 의존하는 것보다 이 방법을 선호합니다.)
답변2
제가 댓글을 달 자격이 없어서 다른 답변을 드리겠습니다.
dh_installdirs를 사용하여 디렉토리를 생성했지만 "override_dh_fixperms" 또는 최신 "execute_after_dh_fixperms" 규칙이 작동하도록 할 수 없습니다. "https://manpages.debian.org/testing/debhelper/dh.1.en.html"에 따라 "debian/<package_name>/path/to/dir"을 포함한 다양한 경로를 시도했습니다.
궁극적으로 유일하게 효과가 있었던 것은 "postinst" 스크립트를 제공하는 것이었습니다. "규칙"에서 권한을 지정하는 것을 선호하지만 때로는 원하는 대로 수행해야 하는 경우도 있습니다.