이 설치 명령이 1을 반환하는 이유는 무엇입니까?

이 설치 명령이 1을 반환하는 이유는 무엇입니까?

물에 빠져 죽고 있어요. 제때에 구명 조끼를 줄 수 있는 사람이 있나요? :)

Linux에 .NET Core Worker Service 애플리케이션을 배포하려고 합니다. 이에 대한 패키지를 만들려고 합니다.

이 기사내가 달성하고 싶은 것을 정확하게 해결하는 것 같습니다. 따라했지만 dpkg-buildpackage -b --no-sign아래 설치 문에서 알 수 있는 한 실패했습니다. ( 설치 문은 install -D -m 755 bin/Debug/netcoreapp3.1/linux-x64/publish/* /opt/myApp이 기사의 지침을 rules실행한 후 만든 파일의 일부 입니다.)dh_make

rules파일:

#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
#export DH_VERBOSE = 1


# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append CFLAGS
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic
# package maintainers to append LDFLAGS
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed


%:
    dh $@ --with=systemd

override_dh_auto_build:
    dotnet publish -r linux-x64 --self-contained true -p:PublishTrimmed=true

override_dh_auto_install:
    # install application
    mkdir -p /home/myUserName/myApp
    echo 'Log Message 1'
    install -D -m 755 bin/Debug/netcoreapp3.1/linux-x64/publish/* /home/myUserName/myApp
    echo 'Log Message 2'
    rm /home/myUserName/myApp/*.pdb #delete pdb

    # install debug symbols
    mkdir -p /home/myUserName/debug/myApp
    install -D -m 644 bin/Debug/netcoreapp3.1/linux-x64/publish/*.pdb /home/myUserName/debug/myApp
    dotnet-symbol --symbols bin/Debug/netcoreapp3.1/linux-x64/publish/ -o  /home/myUserName/debug/myApp
    # auto-install disabled

override_dh_shlibdeps:
    # shilbdeps disabled

override_dh_strip:
    # strip disabled

# dh_make generated override targets
# This is example for Cmake (See https://bugs.debian.org/641051 )
#override_dh_auto_configure:
#   dh_auto_configure -- #  -DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)

단독으로 실행하고 자세한 플래그(-v)를 추가하면 오류 메시지가 표시되지 않습니다(시도했지만 | grep -i error아무 것도 표시되지 않음). 저는 Linux를 처음 접했고 echo가 마지막 명령문 종료 코드를 제공한다는 것을 알게 되었습니다 $?(이 문제에 대해 ls를 실행하고 $?를 에코하면 0을 반환하고, 위의 install 문을 실행하고 $?를 에코하면 1을 반환합니다).

달리는errno 1EPERM 1 Operation not permitted

문제는 /opt에 쓰는 것일 수도 있다고 생각합니다. 대상 폴더를 /home의 폴더로 변경해도 여전히 동일한 결과가 나타납니다.

어떻게 진행하나요? 이 설치 명령문의 문제점을 어떻게 알 수 있습니까? 이 패키지를 설치해야 한다는 내용을 어디선가 읽었습니다. 실행했지만 패키지가 아직 설치되지 않았음을 나타내는 dpkg-deb -I myApp반환이 발생했습니다 .error: failed to read archive 'myApp': No such file or directory

친절하게 대하고 생명을 구해주세요!

답변1

패키지를 빌드할 때 파일을 최종 위치에 설치하는 대신 "마샬링" 영역에 설치해야 합니다. 데비안 패키지에서는 바이너리 패키지와 이름이 같은 디렉터리에 있습니다 debian.

install -D -m 755 bin/Debug/netcoreapp3.1/linux-x64/publish/* debian/netcoreapp/opt/myApp

(패키지가 이라고 가정 netcoreapp) 그러나 이는 현재 발생한 문제를 설명하지 않으며 install문제를 해결하지 못할 수도 있습니다.

이 문제를 수동으로 해결하는 대신당신은 사용해야합니다dh_install바꾸다 install:

dh_install bin/Debug/netcoreapp3.1/linux-x64/publish/* opt/myApp

답변2

패키지가 myApp이라고 가정하고 다음을 시도해 보세요.

override_dh_auto_install:
    # install application
    mkdir -p debian/myApp/opt/myApp
    install -D -m 755 bin/Debug/netcoreapp3.1/linux-x64/publish/* debian/myApp/opt/myApp/myApp
    rm debian/myApp/opt/myApp/*.pdb #delete pdb

    # install debug symbols
    mkdir -p debian/myApp-dbg/opt/myApp
    install -D -m 644 bin/Debug/netcoreapp3.1/linux-x64/publish/*.pdb debian/myApp-dbg/opt/myApp
    dotnet-symbol --symbols bin/Debug/netcoreapp3.1/linux-x64/publish/ -o  debian/myApp-dbg/opt/myApp
    # auto-install disabled

dpkg-buildpackage -b --no-sign명령은 아무것도 설치하지 않습니다. 단지 deb 패키지를 생성합니다. 그 후에는 를 사용하여 설치할 수 있습니다 dpkg -i yourpackagename.deb.

관련 정보