web-dev-qa-db-ja.com

パッケージのインストール時にdpkg-divertを使用してシンボリックリンクを一時的に削除/置換するにはどうすればよいですか?

デフォルトのnginxパッケージは、sites-enabledディレクトリにdefaultという名前のシンボリックリンクを作成します。これは、sites-availableのデフォルトの設定ファイルを指します。現在、Nginxの上にあるアプリのパッケージを作成していますが、defaultシンボリックリンクを削除または削除して、パッケージの構成ファイルに置き換えたいと考えています。理想的には、パッケージが削除された場合、元のdefaultシンボリックリンクが復元されます。

dpkg-divertのマンページと例を読んでいますが、これができるかどうかはよくわかりません。これはdpkg-divertで達成できますか、それとも別の方法を考える必要がありますか?

4
Suan

別のパッケージが所有するファイルを流用する場合:

  • あなたのpreinstで、ファイルをそらしてください。

    dpkg-divert --add --package $your_package_name --rename \
       --divert /etc/nginx/sites-available/default.disabled \
                /etc/nginx/sites-available/default
    
  • あなたのpostrmで、ファイルを元に戻します。

    dpkg-divert --remove --package $your_package_name --rename \
                /etc/nginx/sites-available/default
    

これはシンボリックリンクでは機能しません/etc/nginx/sites-enabled/default、パッケージの一部ではなく、nginxパッケージのpostinstによって作成されるためです。シンボリックリンクはパッケージの一部であるため、名前をmvに変更するだけです。これがDebianパッケージポリシーに準拠しているかどうかはわかりません。これがあなたにとって重要な場合、これはかなり専門的な質問なので、 debian-devel で検索または質問することをお勧めします。