একটি সিস্টেমযুক্ত পরিষেবা প্যাকেজ কিভাবে?


13

আমি সিস্টেমেড পরিষেবা হিসাবে চালানোর জন্য মনো অ্যাপ্লিকেশনটি প্যাকেজ করার চেষ্টা করছি।

আমি এখানে নির্দেশাবলী অনুসরণ করেছি: https://wiki.debian.org/Teams/pkg-systemd/ প্যাকেজিং

আমি আমার ডেবিয়ান কন্ট্রোল ফাইল বিল্ডের উপর dh-systemd (> = 1.5) যুক্ত করেছি depends

আমি আমার বিধি ফাইলগুলিতে --w সাথে = সিস্টেমড যুক্ত করেছি:

%:
    dh $@ --with=cli --with=systemd

নিম্নলিখিত বিষয়বস্তু সহ আমি আমার পরিষেবা ফাইলটি আমার ডেবিয়ান ফোল্ডারে মাইপ্যাকেজ.সার্ভিস যুক্ত করেছি:

[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

তবে বিল্ডিং নিম্নলিখিত লিটিয়ান সতর্কতা এবং ত্রুটি দেয়:

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

এটি বেশ কয়েকটি কারণে আমাকে বিভ্রান্ত করছে

  1. এই সতর্কতাটি সম্পর্কে সম্পর্কে
  2. আমি এই ছাপে ছিলাম যে --with = systemd আমার জন্য এই স্ক্রিপ্টগুলি তৈরি করবে।

হালনাগাদ

উত্পন্ন পোস্টর্ম ফাইলটি নিম্নরূপ:

#!/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

উত্পন্ন উত্পন্ন ফাইলটি নিম্নরূপ:

#!/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

প্যাকেজটি আসলে সূক্ষ্ম ইনস্টল করে এবং পরিষেবাটি সঠিকভাবে শুরু হয়। লিন্টিয়ান ত্রুটিগুলি উদ্বেগজনক এবং আমি তাদের নীচে যেতে চাই।


আপনার postrmলিপিটিতে কী রয়েছে? এটিতে ডিহেল্পার বয়লারপ্লেট রয়েছে?
মারু

এটা কোথায়? এটা কি? নির্দেশাবলী একটি তৈরি করতে বলে না, এবং লিঙ্কযুক্ত উদাহরণটিতে একটিও নেই। সুতরাং হয় এটি ডিএইচ-
সিস্টেমড দ্বারা অটোজেনারেটেড

2
দেখুন debian.org/doc/debian-policy/ch-maintainerscripts.html এবং wiki.debian.org/MaintainerScripts । এগুলি কী তা আপনি যদি না জানেন তবে ডিহেল্পার (ওরফে dh) যথাযথ উত্পন্ন করা উচিত। চালান dpkg-deb --controlউত্পন্ন দেবের ফাইলে, এবং নতুন তৈরি এ বর্ণন DEBIANজন্য ডিরেক্টরি postinst, postrmফাইল।
মুড়ু

ঠিক আছে নির্দেশাবলীটি বলবে "পুনর্নির্মাণের পরে, আপনার প্যাকেজটিতে পোস্টিনস্ট, প্রেরম এবং পোস্টরম রক্ষণাবেক্ষণের স্ক্রিপ্টগুলিতে অতিরিক্ত কোড থাকবে" " এরপরে এগুলি স্বয়ংক্রিয়ভাবে উত্পন্ন হয় তবে এগুলি পূরণ করার আমার খুব কম সুযোগ রয়েছে।
ট্রাম্পস্টার

পোস্টআরএম এবং প্রেরম উত্পন্ন স্ক্রিপ্টগুলির সাথে আপডেট হওয়া প্রশ্ন
ট্রাম্পস্টার

উত্তর:


5

আমিও এই ইস্যুতে দৌড়েছি। এটিই আমি নিয়ে এসেছি:

আপনি dh_installinit এবং dh_systemd_start ওভাররাইড করতে চাইবেন, এটি আমার নেটওয়ার্ক ব্রিজ পরিষেবা থেকে একটি উদাহরণ:

#!/usr/bin/make -f

PKGDIR=debian/tmp

%:
    dh $@ --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"

আমার প্যাকেজের পুরো উত্সটি এখানে পাওয়া যাবে: https://github.com/Ubuntu- সলিউশনস- ইঞ্জিনিয়ারিং / ওপেনস্ট্যাক-deb/tree/master/ debian

উল্লেখ হিসাবে আমি https://github.com/lxc/lxd-pkg-ubuntu/blob/dpm-xenial/debian/rules ব্যবহার করেছি ।

আশা করি এটি আপনাকে যেতে সাহায্য করবে কারণ এটি বের করার জন্য আমাকে কিছুটা সময় নিয়েছিল।


4

SysV বা Upstart init স্ক্রিপ্টগুলি অন্তর্ভুক্ত dh_installinitনা করার সময় postinst/ postrm/ prermস্ক্রিপ্টগুলি পরিবর্তন না করার নির্দেশ দিন । dh_systemdএটি পরিচালনা করবে

override_dh_installinit:
    dh_installinit --noscripts

এটি debhelperসামঞ্জস্যতা স্তরের ক্ষেত্রে প্রযোজ্য <10 এবং এতে 10 টি dh_systemdএকত্রীকরণ করা হলেও debhelper

Https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=800043 debhelper সামঞ্জস্যতা স্তর 11> এর মতে এটি ঠিক করা থাকবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.