バイナリを使用してdebパッケージを自動化するには?

バイナリを使用してdebパッケージを自動化するには?

次の質問があります。

バイナリファイルにのみアクセスできます。バイナリから完全に自動化されたパッケージを作成しようとしています.deb。パッケージ化しましたが、サービスファイルを除いて機能します。

debianフォルダにサービスファイルを作成しました。

hello
-- hello
-- debian/hello.service

私のルールファイルは次のとおりです。

$ cat debian/rules

    #!/usr/bin/make -f

    %:  
             dh $@
    override_dh:install:
            dh_install hello usr/bin

パッケージは作成されていますが、サービスは開始されず、以下にサービスファイルも作成されません/etc/systemd/system/

postinst ファイルは次のようになります#!/bin/bash set -e

if [ $1 = configure] || [$1 = abort-upgrade]; then
    if [ -x /etc/init.d/hello ]; then
        update-rc.d hello defaults >/dev/null

ベストアンサー1

dh_installsystemd適切なシステムサービスヘルパー(互換性レベル12)を呼び出す必要があります。

これを達成する最も簡単な方法は、dhシーケンスに依存することです。ビルドするものがなくても正しいことを行います。

#!/usr/bin/make -f

%:
        dh $@

override_dh_install:
        dh_install hello usr/bin

これにより、systemdヘルパーを含む他のすべてのヘルパーが正しい順序で実行されます。

debhelperの互換性レベルが10未満の場合は、systemdシーケンスを明示的に有効にする必要があります。

%:
        dh $@ --with systemd

(サービスファイルは./lib/systemd/systemの代わりに.で終わります。/etc/systemd/system

次のように作成すると、上書きを完全に削除することもできます。

hello usr/bin

debian/install(またはdebian/hello.installパッケージ名がと仮定すると)hello

おすすめ記事