Saya mencoba mengemas aplikasi mono untuk dijalankan sebagai layanan systemd.
Saya telah mengikuti petunjuk di sini:
https://wiki.debian.org/Teams/pkg-systemd/Packaging
Saya telah menambahkan dh-systemd (>=1.5) ke build file kontrol debian saya.
Saya telah menambahkan –with=systemd ke file aturan saya sebagai berikut:
%:
dh [email protected] --with=cli --with=systemd
Saya telah menambahkan file layanan saya ke folder debian saya bernama mypackage.service dengan isi sebagai berikut:
[Unit]
Description=My Service Description
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/mono /usr/lib/mypackage/myservice.exe
[Install]
WantedBy=multi-user.target
Namun bangunan memberikan peringatan dan kesalahan lintian berikut:
Now running lintian...
E: mypackage: postrm-does-not-call-updaterc.d-for-init.d-script etc/init.d/mypackage
W: mypackage: init.d-script-not-marked-as-conffile etc/init.d/mypackage
E: mypackage: init.d-script-not-included-in-package etc/init.d/mypackage
Ini membingungkan saya karena beberapa alasan
- Peringatan ini tentang init.d yang merupakan sistem lama yang digantikan oleh systemd, apakah kesalahan dan peringatan ini hanya salah, apakah debuild mengira saya menggunakan init.d karena saya salah mengonfigurasi paket saya?
- Saya mendapat kesan bahwa –with=systemd akan membuat skrip ini untuk saya.
Perbarui
File postrm yang dihasilkan adalah sebagai berikut:
#!/bin/sh
set -e
# Automatically added by dh_systemd_start
if [ -d /run/systemd/system ]; then
systemctl --system daemon-reload >/dev/null || true
fi
# End automatically added section
# Automatically added by dh_systemd_enable
if [ "$1" = "remove" ]; then
if [ -x "/usr/bin/deb-systemd-helper" ]; then
deb-systemd-helper mask mypackage.service >/dev/null
fi
fi
if [ "$1" = "purge" ]; then
if [ -x "/usr/bin/deb-systemd-helper" ]; then
deb-systemd-helper purge mypackage.service >/dev/null
deb-systemd-helper unmask mypackage.service >/dev/null
fi
fi
# End automatically added section
file prerm yang dihasilkan adalah sebagai berikut:
#!/bin/sh
set -e
# Automatically added by dh_systemd_start
if [ -d /run/systemd/system ]; then
deb-systemd-invoke stop mypackage.service >/dev/null
fi
# End automatically added section
# Automatically added by dh_installinit
if [ -x "/etc/init.d/mypackage" ] || [ -e "/etc/init/mypackage.conf" ]; then
invoke-rc.d mypackage stop || exit $?
fi
# End automatically added section
Paket benar-benar terinstal dengan baik dan layanan dimulai dengan benar. Kesalahan lintian mengkhawatirkan, dan saya ingin menyelesaikannya.
Jawaban yang Diterima:
Saya mengalami masalah ini juga. Inilah yang saya dapatkan:
Anda ingin mengganti dh_installinit dan dh_systemd_start, ini adalah contoh dari layanan jembatan jaringan saya:
#!/usr/bin/make -f
PKGDIR=debian/tmp
%:
dh [email protected] --with systemd
override_dh_installinit:
dh_systemd_enable -popenstack --name=openstack openstack.service
dh_installinit -popenstack --no-start --noscripts
dh_systemd_start -popenstack --no-restart-on-upgrade
override_dh_systemd_start:
echo "Not running dh_systemd_start"
Sumber lengkap paket saya dapat ditemukan di sini:https://github.com/Ubuntu-Solutions-Engineering/openstack-deb/tree/master/debian
Terkait:Alat Manajemen Tugas dan Waktu apa yang tersedia?Saya juga menggunakan https://github.com/lxc/lxd-pkg-ubuntu/blob/dpm-xenial/debian/rules sebagai referensi.
Mudah-mudahan ini akan membuat Anda maju karena saya perlu sedikit waktu untuk mengetahuinya.