প্যাকেজ ইনস্টলেশন করার সময় নির্ভরশীল পরিষেবাগুলি পুনরায় চালু করার সঠিক উপায় কী?


10

আমি একটি কনফিগারেশন প্যাকেজ তৈরি করছি এবং যার কনফিগারেশনটি প্রভাবিত হয়েছে সেগুলি বন্ধ করে পুনরায় চালু করতে চাই। এই মুহূর্তে আমি ব্যবহার করছি service [stop|restart]{pre,post}{inst,rm}উপায়। আমি কোথাও একটি প্রশ্নে পড়েছি invoke-rc.dএটি সঠিক উপায়, কারণ এটি কোনও পরিষেবা সম্পর্কে ব্যবহারকারীর পছন্দকে সম্মান করে। তবে আমি এই সম্পর্কে কোনও গাইডলাইন পাই না find কেউ কি এই ধরনের নির্দেশিকা জানেন? অথবা আমার কোন উপায়টি বেছে নেওয়া উচিত সে সম্পর্কে কোনও পরামর্শ আছে? প্যাকেজটি অভ্যন্তরীণ ব্যবহারে রয়েছে এবং সম্ভবত পরবর্তী দুই বছরের জন্য এটি কেবল 14.04 এর জন্য হবে। যাইহোক, আমি আমার উত্তরসূরির পক্ষে যথাসম্ভব পরিচ্ছন্ন একটি রাজ্য ছেড়ে যেতে চাই, systemdআমার মনে এটিও রয়েছে।

থেকে invoke-rc.dman পৃষ্ঠা :

দেবিয়ান প্যাকেজগুলির রক্ষণাবেক্ষণকারী স্ক্রিপ্টগুলির দ্বারা init স্ক্রিপ্টগুলিতে সমস্ত অ্যাক্সেস চালানো উচিত- rc.d এর মাধ্যমে ।

দেবিয়ান নীতি ম্যানুয়াল থেকে, অধ্যায় 9, বিভাগ 3.3 :

রক্ষণাবেক্ষণকারীদের আপডেট-আরসি.ডি এবং ইনভোক-আরসি.ডি প্রোগ্রামগুলির সরবরাহিত বিমূর্ত স্তরটি তাদের প্যাকেজগুলির স্ক্রিপ্টগুলিতে যেমন পোস্ট ইনস্ট, প্রিআরএম এবং পোস্টআরএম ব্যবহার করতে হবে use

...

প্যাকেজ রক্ষণাবেক্ষণকারী স্ক্রিপ্টগুলিকে সরাসরি কল করার পরিবর্তে /etc/init.d/* ইনসাইটস স্ক্রিপ্টগুলি চাওয়ার জন্য invoke-rc.d ব্যবহার করা উচিত।

ডেবিয়ান ব্যবহার করে চলেছে এবং sysv-initসরাসরি এতে স্থানান্তরিত হবে systemdএবং আমি মনে করি যে নীতিমালাটি উল্লেখ করার জন্য উপযুক্ত সময়ে আপডেট করা হবে systemctl। তবে, আমি যা সম্পর্কে অনিশ্চিত তা হ'ল: এর invoke-rc.dপরিবর্তে আমার কি ব্যবহার করা উচিত service? আমি বলতে পারি dpkgযে আমি কয়েকটি ফাইলে (ট্রিগারগুলির মাধ্যমে) আগ্রহী, তাই বলে কি এমন কোনও উপায় আছে dpkgযে আমি কিছু পরিষেবায়ও আগ্রহী এবং dpkgপুনরায় চালু / পুনরায় লোড করা করব?

স্পষ্ট করার জন্য: আমি আর ডি স্ক্রিপ্ট লিখছি না। আমি অন্যান্য অ্যাপ্লিকেশনগুলির জন্য কনফিগারেশন সহ একটি প্যাকেজ সরবরাহ করছি, যেমন পুতুল, এনটিপি, ইত্যাদি, তাই আমি স্ক্রিপ্টগুলিতে সংশ্লিষ্ট পরিষেবাগুলি থামিয়ে পুনরায় চালু করব।

এখানে , উদাহরণস্বরূপ, invoke-rc.dবনাম সম্পর্কে একটি ডকার ইস্যু service। সমস্যাটি এখনও একজন ব্যক্তির সাথেই সম্ভবত খোলা রয়েছে, সম্ভবত কোনও রক্ষণাবেক্ষণকারী এই মন্তব্য করে যে তারা অবশ্যই এটি সঠিকভাবে করতে আগ্রহী - স্পষ্টত আমরা উভয়েই নিশ্চিত যে এটি কী। (আমার প্রশ্নটি ইস্যু থেকে স্বতন্ত্র))

উত্তর:


5

আমি প্রাক / পোস্টের ইনস্ট্যান্ট স্ক্রিপ্টগুলি ব্যবহার করা চালিয়ে যাব,

preinst - এই স্ক্রিপ্টটি প্যাকেজটির ডেবিয়ান সংরক্ষণাগার (".deb") ফাইল থেকে প্যাক করার আগেই সম্পাদন করে। অনেকগুলি 'প্রিনস্ট' স্ক্রিপ্টগুলি প্যাকেজগুলির জন্য পরিষেবাগুলি বন্ধ করে দেয় যা তাদের ইনস্টলেশন বা আপগ্রেড সম্পন্ন না হওয়া অবধি আপগ্রেড করা হচ্ছে ('পোস্টিনস্ট' স্ক্রিপ্টের সফল প্রয়োগের পরে)।

postinst - একবার foo তার ডেবিয়ান সংরক্ষণাগার (".deb") ফাইল থেকে প্যাক করা হয়ে গেলে এই স্ক্রিপ্টটি প্যাকেজ foo এর প্রয়োজনীয় কোনও কনফিগারেশন সম্পূর্ণ করে। প্রায়শই, 'পোস্টইনস্ট' স্ক্রিপ্টগুলি ব্যবহারকারীকে ইনপুট জিজ্ঞাসা করে, এবং / অথবা ব্যবহারকারীকে সতর্ক করে যে যদি সে ডিফল্ট মানগুলি গ্রহণ করে, তবে তাকে ফিরে যেতে হবে এবং পরিস্থিতি পরোয়ানা হিসাবে সেই প্যাকেজটি পুনরায় কনফিগার করতে হবে। অনেকগুলি 'পোস্ট ইনস্ট' স্ক্রিপ্টগুলি নতুন প্যাকেজ ইনস্টল বা আপগ্রেড হয়ে গেলে কোনও পরিষেবা শুরু বা পুনঃসূচনা করার জন্য প্রয়োজনীয় কোনও কমান্ড কার্যকর করে ।

দেখুন - https://www.debian.org/doc/manouts/debian-faq/ch-pkg_basics.en.html

আমন্ত্রণ শুরু করার সিনট্যাক্স | স্টপ | পুনঃসূচনা শর্তসাপেক্ষ হিসাবে লেখা হয়েছে, দেখুন https://www.debian.org/doc/debian-policy/ch-opersys.html বিভাগ 9.3.3.2 রানিং ইনসাইটস স্ক্রিপ্টস

যদি কোনটি-আরসি.ডি> / দেব / নাল 2> & 1; তারপর

invoke-rc.d প্যাকেজ

আর

/etc/init.d/package

ফাই

তাই ...

if which service >/dev/null 2>&1; then
        service package <action>
elif which invoke-rc.d >/dev/null 2>&1; then
        invoke-rc.d package <action>
else
        /etc/init.d/package <action>
fi

এবং সিস্টেমডের জন্য যখন প্রয়োজন হয় তখন অন্য শর্তযুক্ত যোগ করুন;)

সুতরাং হ্যাঁ, পরিষেবাটি শুরু করার যথাযথ উপায় | কোনও পরিষেবা পুনরায় আরম্ভ করার জন্য যথাযথভাবে মোড়ক স্ক্রিপ্ট (ইনভোক-আরসি.ডি / সিস্টেম) থাকা সম্ভব, তারপরে আর্টি স্ক্রিপ্ট (/etc/init.d/package) কল করে এবং /etc/init.d স্ক্রিপ্টের পিছনে পড়ে যখন কোনও মোড়ক পাওয়া যায় না।


এটি বেশিরভাগই আমার সন্দেহগুলির উত্তর দেয়, একটি ব্যতীত। invoke-rc.dমানুষ পৃষ্ঠা এবং ডেবিয়ান নীতি ডক্স আমাদের বলে সাথে এটি ব্যবহার করার জন্য /etc/init.d/স্ক্রিপ্ট (সম্ভবত কারণ তারা এখনও ব্যবহৃত সিস-ভি-আইনিট)। আপস্টার্ট বা সিস্টেমডের সাহায্যে কীভাবে এটি পরিবর্তন হয়?
মুড়ু

আপনার প্রশ্ন আপডেট করুন বা আপনি যে তথ্য পড়ছেন তার লিঙ্ক পোস্ট করুন। প্যাকেজিং সম্পর্কে ম্যান পেজে আমি কিছুই দেখতে পাইনি। আমি মনে করি এটি আপনার পরিষেবা এবং init স্ক্রিপ্টের উপর নির্ভর করে (এটি কি আপস্টার্ট? সিস্টেমড?) আপনি Askubuntu.com- এ জিজ্ঞাসা করছেন, এবং উবুন্টু আপস্টার্ট ব্যবহার করে, সুতরাং জিজ্ঞাসাবাবু / প্রশ্নগুলি / 588404/how-to-start-and-stop -a-সার্ভিস । যদি আপনার প্যাকেজটি কোনও পুরানো আরআই স্ক্রিপ্ট ব্যবহার করে তবে এটি আপসস্টারে রূপান্তর করা উচিত এবং দীর্ঘকালীন সিস্টেমেড করা উচিত
প্যান্থার

আমি প্রশ্ন আপডেট করেছি।
মারু

"এটি নির্ভর করে" এই প্রশ্নের জন্য কোনও সহজ বা একক উত্তর নেই কারণ এটি সাময়িক পরিস্থিতি হিসাবে সামনের দিকে এগিয়ে চলেছে উবুন্টু এবং ডিবিয়ান উভয়ই সিস্টেমড ব্যবহার করবে। আপস্টার্ট ব্যবহার করে এমন পরিষেবাগুলির জন্য উবুন্টুতে ডেবিয়ান (বা উবুন্টু) যে sysv-init এবং পরিষেবা ব্যবহার করে ... সেবার জন্য আপনার ইনভোক-আরসি.ডি ব্যবহার করা উচিত। এটি স্ক্রিপ্টিং তাই প্রয়োজনে সৃজনশীল হতে হবেinvoke-rc.d ... || service ...
প্যান্থার

আমি ভেবেছিলাম আপনি জিজ্ঞাসা করছেন যে আপনার পূর্বের / পোস্টের ইনস্ট্রিপ্ট স্ক্রিপ্টগুলি ব্যবহার করা উচিত, আপনার স্ক্রিপ্টের বাক্য গঠনটি নয়।
প্যান্থার

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