特定のパッケージのサービス単位ファイルを私のバージョンに置き換える方法が気になります。つまり、このサービス単位ファイルでいくつかの問題を見つけて修正しました。ただし、次のパッケージ更新では変更が失われます。
元のパッケージを修正して固定などを使用できることを知っています。しかし、この場合は複雑すぎるようで、一般的な方法でそのパッケージの更新を受けたいと思います。これは変更されたバージョンで維持したいサービス単位ファイルです。
私は次の解決策を思いついた。
- /lib/systemd/system/daemon.service を /etc/systemd/system/my-daemon.service にコピーします。
- 障害を負うそしてマスクdaemon.service は systemd が起動しなくなり、パッケージの更新によって再度有効にされないことを願っています。
- my-daemon.serviceで適切に修正してください。
- my-daemon.serviceを有効にする
これは合理的なアプローチですか?この問題に対する「正式な」解決策はありますか?
答え1
デフォルトでは、systemdはのサービス単位を使用します/usr/lib/systemd/system/daemon.service
。ただし、 でサービス単位を見つけると、/etc/systemd/system/daemon.service
自動的にその単位を使用し、基本単位を無視します。
だから基本的に
cp /usr/lib/systemd/system/daemon.service /etc/systemd/system/daemon.service
ファイルで必要なものを変更します/etc/systemd/system/daemon.service
。
代替方法:
これが気に入らない場合や、少し編集が必要な場合は、そこでsystemctl edit daemon.service
実行して変更できます。これらの変更はマージサービスユニットsystemdは、ユニットが存在するか/usr/lib/...
どうかに関係なく実行を試みます/etc/...
。
利点:
パッケージに付属する単位ファイルが更新されると、これらの変更は自動的に調整とマージされます。
欠点:
パッケージに付属する単位ファイルが更新されると、これらの変更は自動的に調整とマージされます。 (冗談ではありません。時には本当に欲しくない場合もあります。)
醜いです。 systemdは/etc/systemd/system/daemon.overrides.d/
変更を含むディレクトリを作成します。ちょっと珍しくて見逃しやすいので、後には気になるかもしれません。
この方法でコンテンツを置き換えることはできず、上書きがセルにマージされるため、新しいコンテンツを追加するだけです。 (確かではありませんが、この機能を最後に使用したのは少し前でした。)