/home/user에 파일을 설치하기 위해 데비안 패키지를 만드는 방법

/home/user에 파일을 설치하기 위해 데비안 패키지를 만드는 방법

나는 데비안 패키지를 만들었고 /home/user/myapp대신 이 디렉토리에 파일을 설치하고 싶습니다./usr/bin

하지만 deb를 설치한 후 소유자 /home/user/myapp는 루트입니다.

deb를 설치한 후 소유자가 사용자가 되기를 원하므로 postinst를 추가하여 사후 작업을 수행합니다.

#postinst
chown -R user /home/user/myapp

하지만 항상 "chown: ...작업이 허용되지 않습니다"라는 오류가 발생합니다.

어떤 아이디어가 있나요?

답변1

전반적인보다데비안 패키지는 시스템 전체 소프트웨어를 설치하는 데 사용됩니다. 생각해 보십시오. 여러 사용자가 이 패키지를 자신의 /home/user/myapp영역에 설치하는 경우 패키지 관리자에 무엇이 나타나야 합니까?

홈 디렉터리에 설치하려면 원본 소스(예: tarball) 배포판을 사용하세요.

답변2

사용자의 집에 넣어야 할 내용을 복사한 패키지 설치 후 루틴을 생성해야 합니다.

이 같은:

# For every user in /home/ ...
for HOME_U in /home/*?; do

# Obtain the username
USER=$( basename ${HOME_U} )

# In case the user is active (exists in /etc/shadow) ...
if [ $( grep -c "${USER}:.*:.*:.*:.*:.*:::" /etc/shadow ) == 1 ] \
&& [ $( grep -c "${USER}:.*:.*:.*:.*:.*:/bin/.*sh" /etc/passwd ) == 1 ] \
&& [ -d ${HOME_U}/.config ] \
&& [ -d ${HOME_U} ]; then

# Making sure .config/your-package/ exists
mkdir -p /home/${USER}/.config/your-package/

# with appropiate permissions
chown ${USER}:${USER} /home/${USER}/.config/your-package/

# copy what we need
cp /etc/skel/.config/your-package/x.conf /home/${USER}/.config/your-package/
cp /etc/skel/.config/your-package/y.conf /home/${USER}/.config/your-package/
cp ... /home/${USER}/.config/your-package/

# with appropiate permissions
chown ${USER}:${USER} /home/${USER}/.config/your-package/x.conf
chown ${USER}:${USER} /home/${USER}/.config/your-package/y.conf
...

fi
done

당신이 그것을 사용할 수 있기를 바랍니다.

관련 정보