나는 데비안 패키지를 만들었고 /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
당신이 그것을 사용할 수 있기를 바랍니다.