GNU/Linux >> Belajar Linux >  >> Ubuntu

Bagaimana Cara Mengemas Layanan Systemd?

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

  1. 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?
  2. 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.


Ubuntu
  1. Bagaimana Cara Menulis Script Startup Untuk Systemd?

  2. Bagaimana Cara Memasang Rayap?

  3. Cara mengatur nilai ulimit untuk layanan systemd

  1. Cara Menggunakan Perintah Systemctl untuk Mengelola Layanan Systemd

  2. Cara Mendaftar Layanan Systemd di Linux

  3. Bagaimana cara mengirim email jika layanan systemd di-restart?

  1. Cara membuat layanan Systemd di Linux

  2. Linux – Bagaimana Mendapatkan Lebih Sedikit Ttys Dengan Systemd?

  3. Bagaimana cara menggunakan Systemd untuk memulai kembali layanan saat down?