바이너리를 사용하여 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.

관련 정보