クリーンアップ後に空のディレクトリを削除しないDebianパッケージを作成しようとしています。特に私は私が信頼するいくつかのCA証明書を含む独自のパッケージを作成しています。
私はDebianが提案した証明書のインストール方法に従います/usr/local/share/ca-certificates
。私が経験している問題は、ca-certificates
パッケージがインストール時に作成され、/usr/local/share/ca-certificates
パッケージをクリアしたときにそのディレクトリを維持したいということです。
私の目標は信頼チェーンをインストールすることですが、/usr/local/share/ca-certificates/mychain
Debianパッケージが削除されたらdpkgが次のことを行うことができるようにしたいと思います。いいえ/usr/local/share/ca-certificates
ディレクトリが空の場合、パッケージはca-certificates
明示的に作成されたため削除されます。
明確な答えを見つけるためにあちこちを見つけましたが、見つけたのは長いフォーラムの投稿と電子メールスレッドだけでした。
答え1
スクリプトを追加postrm
:
#!/bin/sh
set -e
case "$1" in
purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
# Recreate the /usr/local/share/ca-certificates directory, since we are
# ignoring Debian Policy by intentionally installing here. Removal of
# ca-certificates-local removes this directory if empty.
if [ ! -e /usr/local/share/ca-certificates ]; then
if mkdir /usr/local/share/ca-certificates 2>/dev/null; then
chown root:staff /usr/local/share/ca-certificates
chmod 2775 /usr/local/share/ca-certificates
fi
fi
;;
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#
exit 0
このコードは以下で提供されます。ca - 証明書 - ローカル:
これは、ローカル/ディレクトリに仮想CA証明書を含むサンプルスタブパッケージです。仮想証明書を削除し、信頼できるローカルルートCA(PEM形式、「.crt」で終わるファイル名)をlocal /ディレクトリにコピーし、必要に応じてdebian /ディレクトリのファイルを編集して、カスタムパッケージをビルドします。します。
バラより閲覧ファイル、この例に基づいてカスタムローカルルートCAパッケージをビルドするには
したがって、これらのパッケージを作成してインストールする簡単な方法は次のとおりです。
git clone git://anonscm.debian.org/collab-maint/ca-certificates.git ~/ca-certificates
cd ~/ca-certificates/examples/ca-certificates-local/
rm local/Local_Root_CA.crt
cp <path-to-your-cert> local/
# edit debian/control: change package-name, description, etc
# install build dependencies: http://unix.stackexchange.com/questions/177505/how-to-install-parse-build-dependencies-from-debian-control/211319#211319
dpkg-buildpackage
dpkg -i ../<package-name-version>.deb
答え2
別のローカルパスにインストールし、postinst
スクリプトを作成してディレクトリを作成し、/usr/local
そこにファイルをコピーします。
想像できるように、これはDebianポリシーの内容と精神に違反する可能性があります。しかし、それはネットワーク、ルール、ユーザー(そして簡単に発見できる解決策)です。
より使いやすくするために、これらのファイルを構成ファイルとしてマークしてパッケージを消去すると、少なくとも削除されますが、削除するだけでそのまま残すことができます。
最も重要なのは、ファイルがdpkg
不明で削除できないことです。