GNU/Linux >> Linux の 問題 >  >> Debian

Debianパッケージングを介してSystemdファイルを条件付きで有効にしますか?

サービスをインストールするdebパッケージを作成しました。

組み込みデバイスでは、このパッケージでサービスが自動的に有効になります。私たちの開発者ワークステーションでは、開発者に systemctl start fooを実行してもらいたいです。 手動で(これは重いサービスであるため、デスクトップ環境で常に実行するとリソースを消費するだけです)。

apt-get中にユーザーに決定を促すにはどうすればよいですか。 ステップ?それが最善の解決策ですか?

dh_makeを使用してパッケージを作成したことに注意してください およびdebhelper 有効にしたもの:

%:
    dh [email protected] --with=systemd

override_dh_systemd_enable:
    dh_systemd_enable --name=foo foo.service

承認された回答:

systemdプリセットを使用して、インストール時にsystemdサービスがデフォルトで有効になるか無効になるかに影響を与えることができます。

Debianプリセットは、インストール時にすべてのサービスを有効にするようにデフォルト設定されているため、 /などのファイルを出荷することにより、プリセットを開発ワークステーションに出荷するだけで済みます(デフォルトの動作は本番環境で実行したいものと一致します)。 etc / systemd / system-preset / 80-foo.preset

という行が含まれています
disable foo.service

Puppet、Chef、Ansibleなどのシステムを使用して開発者ワークステーションを管理している場合は、それらを使用して、このようなsystemdプリセット構成を出荷できます。これにより、ポリシーを開発者ワークステーションのみに適用し、本番環境には適用しにくくなります。マシン。

.debパッケージは、systemctlプリセットを使用する必要があります コマンドは事前設定された構成を尊重するため、サービスを有効にするコマンド。

@JdeBPと@sourcejediが指摘しているように、deb-helpersのDebianマクロ( dh_systemd_enable など) )すでにそれを行って、彼らは deb-systemd-helperを呼び出します systemctlプリセットを使用します デフォルトでは(パッケージを削除して(ただし、パージしないで)、後で再インストールすると、プリセットファイルを削除しても、サービスが有効にならないという小さな注意が必要です)。 deb-systemd-helper のenable 操作:

    # We use 'systemctl preset' on the initial installation only.
    # On upgrade, we manually add the missing symlinks only if the
    # service already has some links installed. Using 'systemctl
    # preset' allows administrators and downstreams to alter the
    # enable policy using systemd-native tools.

プリセットのsystemd機能の詳細については、systemdプリセットのマニュアルページおよびコマンドsystemctlプリセットを参照してください。 それを実装します。

関連:Debian –DNSがDebianLinuxで正しく設定されていませんか?
Debian
  1. Debian10で複数のファイルを同時に解凍または解凍します

  2. Debianセキュリティ/etcパーミッション?

  3. 一連のSystemdサービスファイルのユーザーを変更するにはどうすればよいですか?

  1. 基本的なSystemdサービスファイルを作成しますか?

  2. Debian –サービスはアクティブですが(終了しました)?

  3. systemd サービスを停止する方法

  1. Debian –このSystemdユニットファイルの始まりがわからない?

  2. Debian – SystemdでOnfailureを使用する適切な方法は?

  3. Debian – Systemd:サービスはExecstart=とExecstop=の両方の設定を欠いています。拒否しますか?