私のアプリケーションは3つの異なるパッケージにあり、ファイルを作成し、インストールが期待どおりrpm
に.spec
機能し、dnf remove
パッケージを削除し、設定ファイルをクリーンアップし、必要に応じて依存関係をインポートしました。しかし、dnf upgrade
これは古いファイルを新しいファイルで上書きしますが(予想どおり)、私の設定ファイルも削除されます。私の理解は、dnf upgrade
パッケージが削除された後にインストールされず、新しいファイルが古いファイルの上にインストールされることです。以下はトランザクションログですdnf
。
Running transaction
Preparing : 1/1
Running scriptlet: my-app-libs-0.1.0.0-0071.x86_64 1/1
Upgrading : my-app-libs-0.1.0.0-0071.x86_64 1/6
Upgrading : my-app-hooks-0.1.0.0-0071.x86_64 2/6
Upgrading : my-app-0.1.0.0-0071.x86_64 3/6
Running scriptlet: my-app-0.1.0.0-0071.x86_64 3/6
Running scriptlet: my-app-0.1.0.0-0048.x86_64 4/6
Cleanup : my-app-0.1.0.0-0048.x86_64 4/6
Running scriptlet: my-app-0.1.0.0-0048.x86_64 4/6
Cleanup : my-app-hooks-0.1.0.0-0048.x86_64 5/6
Cleanup : my-app-libs-0.1.0.0-0048.x86_64 6/6
Running scriptlet: my-app-libs-0.1.0.0-0048.x86_64 6/6
Verifying : my-app-libs-0.1.0.0-0071.x86_64 1/6
Verifying : my-app-libs-0.1.0.0-0048.x86_64 2/6
Verifying : my-app-hooks-0.1.0.0-0071.x86_64 3/6
Verifying : my-app-hooks-0.1.0.0-0048.x86_64 4/6
Verifying : my-app-0.1.0.0-0071.x86_64 5/6
Verifying : my-app-0.1.0.0-0048.x86_6 6/6
何か知りたい掃除する上記の手順が完了しています。そしてスクリプトの役割スクリプトの実行実際に電話しましたか?
答え1
インストール、アップグレード、およびアンインストール中にトリガーが呼び出されます。 「アップグレード」とは、実際に古いバージョンを削除してから新しいバージョンをインストールすることを意味します。トリガーには、$1
アップグレードするかどうかを示すフラグ()があります。完全な説明は次の場所にあります。https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/
仕様ファイルで以下を使用します。
%post
if [ $1 == 1 ]
then
# first time install, rather than upgrade
fi
%postun
if [ $1 == 0 ]
then
# actual uninstall, rather than upgrade
fi