私はすべてを/opt
にインストールするRPMSを(CMakeのCPackを使用して)作成しています。その後、ポストインストールスクリプトがサービス定義ファイルを/etc/systemd/system
にコピーします。
RPMのpostinstallスクリプトとpreuninstallスクリプトでサービスの開始と停止をいじってみましたが、yum
はpreuninstallスクリプトの前にpostinstallスクリプトを実行するため、これは良い考えではないようです。つまり、サービスをアップグレードしようとすると、サービスが実行されなくなるということです。有効化/無効化でも同じ問題があるようです。
だから私が持っている2つの質問
/etc/systemd
に直接インストールすることをお勧めしますか、それとも/opt
から/etc/systemd
にポストインストールコピーする必要がありますか? cp
の後にsystemctl daemon-reload
が続いているのは、サービスファイルをインストールする「正しい」方法ですか?
RPMからのstarting/stopping/enable/disable
サービスのクリーンな方法はありますか、またはこれはRPMから除外した方が良いですか?
Debianに関連する質問(回答なし):
参照: https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_systemd
スクリプトレットでは、$ 1変数を使用して、それがアップグレードかクリーンインストールか、パッケージのアップグレードまたは削除かを検出できます。変数の値はここで定義されています: https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_syntax