Debian で apt-get でパッケージをインストールした後、systemd のサービスがデフォルトで有効になっていることを確認しました。ただし、Arch Linuxなどの他のディストリビューションでは、このパッケージのサービスはデフォルトで無効になっています。
私の質問は次のとおりです
- この行動は何に依存しますか?有効にするかどうかを決定するのは、パッケージマネージャまたはパッケージ自体の一部の設定ですか?
Debian では、インストール後に実行されるように見えますsystemctl enable docker.service
。 Arch-linuxではdocker.service
無効になっています。
- どのように変更できますか?
答え1
systemdの基本説明に記載されているように、これはディーラーが選択したポリシーです。
Fedoraではデフォルトですべてのサービスがオフになっているため、パッケージをインストールしてもサービスは有効になりません(一部例外あり)。 Debian では、デフォルトですべてのサービスがすぐに有効になるため、パッケージをインストールするとそのサービスがすぐに有効になります。
systemctl preset
理論的には、システム展開は、パッケージのインストール後にメンテナンススクリプトを実行するのではなく、基本システムを使用してサービスを有効にするかどうかを決定します。systemctl enable
展開ポリシーにローカルオーバーライドを適用することは、高優先順位プリセットで独自の更新を作成するのと同じです。同様に簡単です/etc/systemd/system-preset/
。 (Arch docoには誤解があります。一般的なシナリオは、特定のサービスを処理するために別々のローカルプリセットファイルを作成することです。)
実際、systemdディストリビューションの中にはデフォルトのシステムを使用せず、systemdにローカルオーバーライドを適用するのはディストリビューション独自のメカニズムを使用することです(実際にそのようなメカニズムがある場合)。
追加読書
- ラファエル・ヘルゾグ(2014-12-08)。deb-systemd-helper はシステムの基本ファイルを尊重しません。。 Debianのバグ#772555。
- 」インストールされたデバイスはデフォルトで有効になっています。」。システム。アーチウィキ。
答え2
1)この行動は何によって異なりますか?有効にするかどうかを決定するのは、パッケージマネージャまたはパッケージ自体の一部の設定ですか?
各ディストリビューションは、Debian の apt や Arch Linux の pacman などの他のパッケージマネージャを使用できます。これを行うには、ソフトウェア開発者および/またはパッケージマネージャがさまざまな(しばしば分離された)方法でパッケージを準備する必要があります。これらの違いはパッケージ内の設定に関連している可能性がありますが、ターゲットシステムでsystemdを使用すると仮定してパッケージが準備されていない場合があります。
2)どのように変更できますか?
展開用の特定のパッケージがどのように準備され維持されているのか、そして誰がそのパッケージを担当しているのかを理解します。オープンソースの場合は、インストールソースから直接動作を変更できます。ソフトウェア開発者/メンテナンスコミュニティに連絡して変更を提案することもできます。