Dpkg

為什麼這個安裝命令返回 1?

  • October 21, 2020

我快淹死了,我們中的任何一個人能不能及時給我一個救生員…… :)

我正在冒險在 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 的初學者,我了解到 echoing$?為我提供了最後一條語句退出程式碼(就此而言,執行 ls 並回顯 $ ? returns 0, running the install statement above and echoing $ ? 返回 1)。

執行errno 1EPERM 1 Operation not permitted

我想也許問題出在寫給 /opt 上。將目標文件夾更改為 /home 中的某個文件夾,仍然得到相同的結果。

我該如何從這裡開始?我怎麼知道這個安裝語句出了什麼問題?我在某處讀到必須安裝該軟體包。我執行dpkg-deb -I myApp,但它返回error: failed to read archive 'myApp': No such file or directory,我認為這表明該軟體包未安裝。

請善待並挽救生命!

建構包時,您需要將它們安裝到“編組”區域,而不是將文件安裝到它們的最終位置。在與二進制包同名的目錄中的 Debian 包中,內部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

引用自:https://unix.stackexchange.com/questions/615665