水に落ちて死んでいます。時々救命胴衣を与えることができる人はいますか? :)
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 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
。