ฉันพยายามจัดทำแอพพลิเคชั่นแบบโมโนให้เรียกใช้เป็นบริการ systemd
ฉันได้ทำตามคำแนะนำที่นี่: https://wiki.debian.org/Teams/pkg-systemd/Packaging
ฉันได้เพิ่ม dh-systemd (> = 1.5) ในการสร้างไฟล์ควบคุม debian ของฉันแล้ว
ฉันได้เพิ่ม - with = systemd ไปยังไฟล์กฎของฉันดังนี้:
%:
dh $@ --with=cli --with=systemd
ฉันเพิ่มไฟล์บริการของฉันลงในโฟลเดอร์ debian ของฉันชื่อ mypackage.service พร้อมเนื้อหาดังต่อไปนี้:
[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
อย่างไรก็ตามการสร้างให้คำเตือนและข้อผิดพลาด lintian ต่อไปนี้:
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
นี่ทำให้ฉันสับสนด้วยเหตุผลหลายประการ
- คำเตือนเหล่านี้เกี่ยวกับ init.d ซึ่งเป็นระบบเก่าซึ่งถูกแทนที่ด้วย systemd ข้อผิดพลาดและคำเตือนเหล่านี้ไม่ถูกต้อง debuild คิดว่าฉันใช้ init.d เพราะฉันกำหนดค่าแพ็คเกจผิด
- ฉันรู้สึกว่า --with = systemd จะสร้างสคริปต์เหล่านี้ให้ฉัน
ปรับปรุง
ไฟล์ postrm ที่สร้างขึ้นมีดังนี้:
#!/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
ไฟล์ prerm ที่สร้างขึ้นมีดังต่อไปนี้:
#!/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
แพคเกจติดตั้งดีจริงและบริการเริ่มต้นอย่างถูกต้อง ข้อผิดพลาด lintian กำลังเป็นกังวลและฉันต้องการไปที่ด้านล่างของพวกเขา
dh
) ควรสร้างสิ่งที่เหมาะสม เรียกใช้dpkg-deb --control
บนไฟล์ deb สร้างและมองในที่เพิ่งสร้างDEBIAN
ไดเรกทอรีสำหรับpostinst
, postrm
ไฟล์
postrm
สคริปต์ของคุณมีอะไรบ้าง มันมีบอยเลอร์สำเร็จรูปหรือไม่?