サービスをインストールする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プリセット
を参照してください。 それを実装します。