Tôi đang cố gắng đóng gói một ứng dụng đơn để chạy như một dịch vụ systemd.
Tôi đã làm theo hướng dẫn ở đây: https://wiki.debian.org/Teams/pkg-systemd/Packaging
Tôi đã thêm dh-systemd (> = 1.5) vào bản dựng tệp kiểm soát debian của mình.
Tôi đã thêm --with = systemd vào tệp quy tắc của mình như sau:
%:
dh $@ --with=cli --with=systemd
Tôi đã thêm tệp dịch vụ của mình vào thư mục debian có tên mypackage.service với các nội dung sau:
[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
Tuy nhiên, tòa nhà đưa ra các cảnh báo và lỗi sau đây:
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
Điều này làm tôi bối rối vì nhiều lý do
- Các cảnh báo này là về init.d, hệ thống cũ được thay thế bởi systemd, những lỗi và cảnh báo này có sai không, có phải debuild nghĩ rằng tôi đang sử dụng init.d vì tôi đã cấu hình gói của tôi sai?
- Tôi có ấn tượng rằng --with = systemd sẽ tạo ra các tập lệnh này cho tôi.
Cập nhật
Tệp postrm được tạo như sau:
#!/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
tập tin prerm được tạo như sau:
#!/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
Gói thực sự cài đặt tốt và dịch vụ bắt đầu chính xác. Các lỗi lintian là đáng lo ngại, và tôi muốn đi đến tận cùng của chúng.
dh
) sẽ tạo ra những cái thích hợp. Chạy dpkg-deb --control
vào file deb tạo ra, và nhìn vào mới tạo DEBIAN
thư mục cho postinst
, postrm
file.
postrm
Kịch bản của bạn chứa gì? Liệu nó có các nồi hơi gỡ lỗi?