কীভাবে প্যাকেজগুলি তাদের সম্পর্কিত পরিষেবাগুলি শুরু না করে ইনস্টল করতে পারি?


13

আপনি সম্ভবত সচেতন, আপনি ডিবিয়ান বা উবুন্টু ভিত্তিক সিস্টেমে কোনও প্যাকেজ ইনস্টল করার সময় ডিফল্টরূপে, যদি প্যাকেজে কোনও পরিষেবা থাকে, আপনি প্যাকেজ ইনস্টল করার সময় সেই পরিষেবাটি সাধারণত সক্ষম হয়ে যায় এবং স্বয়ংক্রিয়ভাবে শুরু হবে।

এটি আমার জন্য সমস্যা।

আমি নিজেকে এলএক্সসি পাত্রে তৈরি করার জন্য টেম্পলেটগুলি পরিচালনা করার প্রয়োজন খুঁজে পেয়েছি। বেশ কয়েকটি পাত্রে রয়েছে, প্রত্যেকটিই একটি ডেবিয়ান বা উবুন্টু মুক্তির সাথে সম্পর্কিত। (রেড হ্যাট-ভিত্তিক ধারকগুলি রয়েছে, তবে সেগুলি এখানে প্রাসঙ্গিক নয়))

/var/lib/libvirt/filesystems/debian6_template
/var/lib/libvirt/filesystems/debian7_template
/var/lib/libvirt/filesystems/ubuntu1004_template
/var/lib/libvirt/filesystems/ubuntu1204_template

মাঝেমধ্যে আমি দেখতে পাব যে টেমপ্লেটগুলির একটি অনুপস্থিত প্যাকেজ রয়েছে বা অন্য কোনও পরিবর্তন প্রয়োজন, তাই আমি প্যাকেজটি ইনস্টল করার জন্য সেগুলির মধ্যে ক্রট করব। দুর্ভাগ্যক্রমে যখন আমি এটি করি, আমি প্যাকেজের পরিষেবাটির কয়েকটি অনুলিপি চালিয়ে যাচ্ছি!

উদাহরণস্বরূপ, আমি দেখতে পেলাম যে টেমপ্লেটগুলিতে সিসলগ ডেমন নেই, তাই আমি এটি ইনস্টল করেছি:

for template in /var/lib/libvirt/filesystems/{debian,ubuntu}*_template; do
    chroot $template apt-get install rsyslog
done

এবং অবিলম্বে চারটি অনুলিপি আরএসল্লগের সাথে চলতে শুরু করে wound এক্সিম 4 এর দুটি কপি উল্লেখ না করা। ওহো!


আমি কোথাও পড়েছি (যদিও এখন আমি এটি আবার খুঁজে পাচ্ছি না) যে কোনও ক্রুটে দৌড়ানোর সময় পরিষেবাগুলি শুরু করার কথা নয়, তবে এটি এখানে স্পষ্টভাবে ঘটছে না।

একটি সম্ভাব্য টেকসই দুষ্টু হ্যাক অস্থায়ীভাবে বিভিন্ন কমান্ডের পরিবর্তে ডেকে আনে যা প্রকৃতপক্ষে পরিষেবাগুলি শুরু করে, যেমন, start-stop-daemonএবং initctlযদিও এটি আমি যা করতে চেয়েছিলাম তার চেয়ে অনেক বেশি কাজ। আমার যদি অন্য কোন উপায় না থাকে তবে ...

এখানে আদর্শ সমাধানটি হ'ল দেবিয়ান-ভিত্তিক সিস্টেমগুলি এই বকবক করা বন্ধ করে দেবে, তবে এটি ব্যর্থ হচ্ছে, সম্ভবত কোনও অস্পষ্ট বা অনির্ধারিত কমান্ড লাইন বিকল্পটি apt-get?

যদি এটি পরিষ্কার না হয় তবে আমি যদি সম্ভব হয় তবে টেমপ্লেটগুলির বাইরের টেমপ্লেটগুলি পরিচালনার সাথে সম্পর্কিত কিছু রাখতে চাই ।

উত্তর:


23

ডিবিয়ানদের জন্য আপনি পলিসি-আরসি.ডি দিয়ে এটি করতে পারেন । এখানে একটি ব্যাখ্যা :

একটি প্যাকেজের রক্ষণাবেক্ষণকারী স্ক্রিপ্টগুলি কেবল ইনভোক-আরসি.ডি, আপডেট-আরসি.ডি এবং এলএসবি আরআইপি স্ক্রিপ্ট শিরোনামের সাহায্যে ডিআইসি সিস্টেমের সাথে ইন্টারফেস করার কথা রয়েছে ... আহ্বান-আরসি.ডি এর পদক্ষেপ নেওয়ার আগে পরীক্ষা করবে কিনা তা পরীক্ষা করে দেখুন /usr/sbin/policy-rc.d এক্সিকিউটেবল হয়, এটিকে তার কমান্ড লাইনে সংশ্লিষ্ট পরিষেবার নাম এবং বর্তমান রানলেভাল নম্বর দিয়ে কল করবে এবং তার প্রস্থান কোড অনুসারে কাজ করবে। উদাহরণস্বরূপ, 101 এর রিটার্নের মান পরিকল্পিত ব্যবস্থা নেওয়া থেকে বিরত রাখবে। এর মধ্যে রয়েছে প্যাকেজ ইনস্টল করার পরে পরিষেবাটি স্বয়ংক্রিয়ভাবে শুরু করার পাশাপাশি প্যাকেজ অপসারণের সময় পরিষেবা বন্ধ হওয়া এবং প্যাকেজ আপগ্রেডের সময় স্টপ-আপগ্রেড-পুনঃসূচনা অনুষ্ঠানটি হ্রাস করে যা কেবলমাত্র আপগ্রেড সম্পাদন করে যা পরিষেবাটির পুরানো সংস্করণটি চালিয়ে যেতে পারে

যেহেতু আপনি কোনও পরিষেবা আরম্ভ করতে চান না, তাই আপনার নীতি- rc.d স্ক্রিপ্টটি সহজ হতে পারে

#!/bin/sh
exit 101

এটি হ'ল পুবিল্ডার এবং ডকারের এমকিমেজ-ডিবুটস্ট্র্যাপের মতো সরঞ্জামগুলি দ্বারা ব্যবহৃত কৌশল ।

দুর্ভাগ্যক্রমে, এই কৌশলটি উবুন্টু ক্রুটের সাথে কাজ করে না । প্যাকেজগুলি যা ইনস্টলেশনের সময় ইনকস্ট-আরসি.ডি পরিবর্তে আপস্টার্ট init সিস্টেম কল / usr / sbin / initctl এর সাথে একীভূত হয় এবং initctl নীতি- rc.d এর সাথে পরামর্শ করে না। আপস্টার্টের লেখকের মতে ওয়ার্কআরআন্ড / সিবিএন / আরআরটিটিএলকে একটি সিনটিকের সাথে / বিন / সত্যে ক্রুটে প্রতিস্থাপন করা হবে। আপনি এটিকে এমকিমেজ-ডিবুটস্ট্র্যাপেও দেখতে পারেন, তারা করেন

dpkg-divert --local --rename --add /sbin/initctl
ln -sf /bin/true sbin/initctl

এটি বেশ পরিষ্কার বলে মনে হচ্ছে, যদিও এটি টেমপ্লেট থেকে একটি ধারক তৈরি করার আগে এটিও সরিয়ে ফেলতে হবে।
মাইকেল হ্যাম্পটন

1
এর জন্য ধন্যবাদ. আমি ডকারের মিকিমেজ-ডিবুটস্ট্র্যাপ স্ক্রিপ্টটি সরিয়ে ফেলতে পারি, কারণ তারা মনে হয় বেশিরভাগই এই সমস্যার সমাধান করেছে।
মাইকেল হ্যাম্পটন

4

আপনি করতে পারেন:

export RUNLEVEL=1
for template in /var/lib/libvirt/filesystems/{debian,ubuntu}*_template; do
    chroot $template apt-get install rsyslog
done
exit

আমি এটি ক্রুট দিয়ে পরীক্ষা করিনি, তবে এটি কাজ করা উচিত। প্রথমে এটি রুনলেভেল এনভায়রনমেন্ট ভেরিয়েবল সেট করে, তাই এপট-গেইনের মাধ্যমে শুরু করা প্রক্রিয়াগুলি কোনও পরিষেবা শুরু করবে না , কারণ তারা "ভাবেন" সিস্টেমটি একক মোডে চলছে। ভবিষ্যতে কমান্ডগুলিকে প্রভাবিত করতে পারে এমনভাবে পরিবেশটি যেমন পরিবর্তন করা হয়, পরিবর্তিত পরিবেশের আর প্রয়োজন না হলে শেল থেকে প্রস্থান করা প্রয়োজন, এটি শেষে প্রস্থান নির্দেশ দ্বারা সম্পন্ন হয় । এমন কিছু (বিরল?) প্যাকেজ থাকতে পারে যা একক মোডে সঠিকভাবে ইনস্টল হবে না (তবে এএফএইআইকি এটি বেশিরভাগ ক্ষেত্রে সমস্যা হওয়া উচিত নয়)।


কি export RUNLEVEL=1গুরুত্বপূর্ণ অংশ এখানে? ঠিক কী ঘটেছিল?
মাইকেল হ্যাম্পটন

@ মিশেলহ্যাম্পটন আমি বিশ্বাস করি রুনলেভেল পরিবেশগত চলক চলমান চলমান স্তর সরবরাহ করবে। এই উদাহরণে তিনি কেবল এটি ওভাররাইটিং করছেন যাতে কোনও অ্যাপ্লিকেশন মনে করে যে এটি 1 টি চলছে It's
উইঙ্কিওলি

মূল উত্তরে ব্যাখ্যা যুক্ত করা হয়েছে। মূলত এটিই @ উইঙ্কিওয়ালি বলেছেন।
ডেভিসএনটি

দুর্ভাগ্যক্রমে rsyslogএমন একটি "বিরল" প্যাকেজগুলির মধ্যে ঘটেছিল যা এইভাবে ইনস্টল করার চেষ্টা করার সময় সম্পূর্ণরূপে ফুরিয়ে যায়। এটি এখনও কার্যকর হতে পারে, সুতরাং আপনি উপস্থাপনাটি রাখতে পারেন :)
মাইকেল হ্যাম্পটন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.