
私はDebianパッケージを作成し、/home/user/myapp
代わりにこのディレクトリにファイルをインストールしたいと思います。/usr/bin
しかし、debをインストールした後、所有者/home/user/myapp
はrootです。
debをインストールした後、所有者がユーザーになりたいので、postinstを追加してポストアクションを実行します。
#postinst
chown -R user /home/user/myapp
ただし、常に「chown:...操作は許可されていません」というエラーが発生します。
どんなアイデアがありますか?
答え1
全体的なよりDebian パッケージは、システム全体のソフトウェアをインストールするために使用されます。考えてみてください。複数のユーザーがこのパッケージを自分の/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
あなたがそれを使用できることを願っています。