为什么这个安装命令返回 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 的初学者,我了解到回显$?给了我最后一个语句退出代码(就此而言,运行 ls 并回显 $? 返回 0,运行上面的 install 语句并回显 $? 返回 1)。

跑步errno 1给予EPERM 1 Operation not permitted

我想问题可能出在写入 /opt 上。将目标文件夹更改为 /home 中的某个文件夹,仍然得到相同的结果。

我该如何继续?我怎样才能知道这个安装语句出了什么问题?我在某处读到必须安装该软件包。我运行dpkg-deb -I myApp,但它返回error: failed to read archive 'myApp': No such file or directory,我相信这表明该软件包尚未安装。

请善待并拯救生命!

答案1

构建包时,您需要将它们安装到“编组”区域,而不是将文件安装到其最终位置。在 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

答案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

相关内容