দুটি হোস্টে ইনস্টল হওয়া প্যাকেজগুলির মধ্যে পার্থক্যের একটি তালিকা গণনা করুন


11

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

ভবিষ্যতে ভার্চুয়াল সার্ভার পুনরুদ্ধার করার প্রক্রিয়াটি সহজ করার জন্য, আমি আমার প্রতিটি সার্ভারের জন্য নির্দিষ্ট প্যাকেজগুলির একটি তালিকা তৈরি করতে চাই।

আমি কী অর্জন করতে চাই তার আরও ভালভাবে ব্যাখ্যা করার জন্য। আমার কাছে ইতিমধ্যে সর্বত্র ব্যবহৃত কিছু বেসিক প্যাকেজ এবং কনফিগারেশন সহ একটি নতুন ভার্চুয়াল সার্ভার তৈরি করার জন্য একটি স্বয়ংক্রিয় প্রক্রিয়া রয়েছে। একটি বিশেষ সার্ভার পুনরায় ইনস্টল করার জন্য আমি এই "কঙ্কাল" দিয়ে ব-দ্বীপটি সংরক্ষণ করতে চাই।

একটি বাস্তব প্লাস হ'ল ডিফল্ট থেকে পরিবর্তিত কনফিগারেশন ফাইলগুলি সংরক্ষণ করা, তবে আমি কেবল প্যাকেজ তালিকার সাথেই থাকতে পারি।

সংক্ষেপে, আমি একটি হোস্টে ইনস্টল করা প্যাকেজগুলির তালিকা তৈরির উপায় চাই তবে অন্যটিতে নয়।

তালিকায় কেবলমাত্র ম্যানুয়ালি ইনস্টল করা প্যাকেজ রয়েছে এবং সমস্ত নির্ভরতার তালিকা না থাকলে এটি সত্যিই দুর্দান্ত হবে।

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


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

ওহ, বিটিডাব্লু, এই প্রশ্নটি দেখুন। serverfault.com/questions/3852/…
জোরেডেচ

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

উত্তর:


12

রেফারেন্স ইনস্টলেশন (শুধুমাত্র একবার):

dpkg-query -W -f='${Package}\n' | sort > baselist.txt

(নিম্নলিখিত অনুমান bash)

রেফারেন্স ইনস্টলেশন থেকে প্যাকেজগুলি যুক্ত করতে (এটি কী সরানো হয়েছিল তা দেখায় না):

comm -1 -3 baselist.txt <(dpkg-query -W -f='${Package}\n' | sort)

আরও ভাল, অনুলিপি এড়ানো baselist.txt:

comm -1 -3 <(ssh user@refserver cat /path/to/baselist.txt) <(dpkg-query -W -f='${Package}\n' | sort)

2

পুরানো সার্ভারে, চালান:

dpkg --get-Seferences> ওল্ড-প্যাকেজ-তালিকা

উপরের ফাইলটি নতুন সার্ভারে অনুলিপি করুন এবং এটি নতুন সার্ভারে চালান:

dpkg --set-Seferences <ওল্ড-প্যাকেজ-তালিকা

অ্যাপেট-গেট আপডেট

আপডেটটি নির্বাচন করুন

এছাড়াও, /etc/apt/sources.listপ্যাকেজগুলির এই মাইগ্রেশন হওয়ার আগে পুরানো সার্ভার থেকে নতুন সার্ভারে সমস্ত অতিরিক্ত সংগ্রহস্থল যুক্ত করার কথা মনে রাখবেন , যদি না করেন তবে বেশিরভাগ প্যাকেজগুলি ইনস্টল না করে রেখে দেওয়া হবে।


এটি প্যাকেজটির পুরো তালিকাটি সংরক্ষণ করবে এবং সার্ভারগুলি পুনরুদ্ধার করার জন্য এটিই ঠিক সমাধান solution তবে এখন, ভবিষ্যতে প্রক্রিয়াটি সহজ করার জন্য, আমি কেবলমাত্র প্যাকেজগুলির তালিকাটি সংরক্ষণ করতে চাই যা বেস সার্ভার থেকে আলাদা।
krtek

1
ঠিক আছে, এটিও খুব সহজ, "প্রথমে" dpkg --get-Seferences> Old-package-list "দ্বারা পুরানো সার্ভার থেকে তালিকার ব্যাকআপ নিন, তারপরে" dpkg --get-Seferences দ্বারা নতুন সার্ভারে প্যাকেজগুলির তালিকা পান > নতুন-প্যাকেজ-তালিকা ",,, এই কমান্ডটি চালান" ক্যাট ওল্ড-প্যাকেজস-তালিকা | awk '{মুদ্রণ $ 1}'> পুরাতন-তালিকা ",,, নতুন সার্ভারে একই কমান্ড, তবে পুরানোটিকে নতুন দিয়ে প্রতিস্থাপন করুন। উভয় ফাইলের মধ্যে একটি পৃথক চালান, যা আপনাকে পার্থক্য দেখাবে। পৃথক-নতুন পুরানো তালিকার নতুন তালিকা দ্বারা
ফারহান

1
cut -f1প্রোব্লল্জ অ্যাডকের চেয়ে দ্রুততর হবে এবং খালেদ উত্তরে মন্তব্য করার মতো, ডিফ সর্বদা সঠিক ফলাফল দেয় না। commআপাতত দয়া করে এর সমাধান করুন ... তবে আমি এমন একটি সংস্করণ মিস করছি যা কেবলমাত্র ম্যানুয়ালি ইনস্টল করা প্যাকেজগুলির তালিকা করে lists
krtek

1

আপনি উভয় সার্ভারে প্যাকেজের সম্পূর্ণ তালিকা পেতে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

     dpkg -l | sort > old_file
     dpkg -l | sort > new_file

তারপরে, আপনি ব্যবহার করে পার্থক্যগুলি পেতে পারেন:

     diff -Nur old_file new_file > changes.txt

আপনি গ্রেপ ব্যবহার করে প্রয়োজনীয় পরিবর্তনগুলি ফিল্টার করতে পারেন। এছাড়াও, কনফিগারেশন ফাইলগুলিতে পরিবর্তনগুলি পেতে এবং প্রয়োজনের সময় অ্যাপ্লিকেশন করার জন্য প্যাচগুলি তৈরি করতে ডিফ ব্যবহার করা যেতে পারে। উপায় দ্বারা, পৃথক দুটি ফোল্ডার কেবল দুটি ফাইলই তুলনা করতে পারে।


ডিফার্ট আউটপুটটির সমস্যাটি হ'ল এটিকে স্বয়ংক্রিয় উপায়ে পুনরায় ইনস্টল করার জন্য সরাসরি এপট-গেটে খাওয়ানো যাবে না ... এবং প্রস্তাবিত শেলহোলিকের মতো এই বিশেষ ক্ষেত্রে কম ব্যবহার করা ভাল, ডিফ যদি ভুল ফলাফল প্রদান করতে পারে তবে প্যাকেজ তালিকা সত্যিই দীর্ঘ।
krtek

আর একটি সমস্যা হ'ল dpkg আউটপুটটির কলামটি স্বয়ংক্রিয় করে। সুতরাং একটি দীর্ঘ প্যাকেজের নাম সহ একটি সার্ভার থেকে একটি dpkg -l পার্থক্যটিকে শক্ত করে তোলে।
পাওলো

1

ব্লুপ্রিন্ট ঠিক আপনার প্রয়োজনের জন্য ডিজাইন করা হয়েছে। এটি একটি বর্ণন প্যাকেজ ইনস্টল করেছে এবং কনফিগার করা ফাইলগুলি পরিবর্তন করা হয়েছে। এটি এই বর্ণনগুলিকে পরিষ্কার বাক্সগুলিতে প্রয়োগ করার জন্য পুতুল বা শেফ স্ক্রিপ্টগুলিতে রূপান্তর করতে সক্ষম।


0

এই সহায়ক প্যাকেজটিও পেয়েছে, যার বিবরণ নীচে রয়েছে:

বাশ স্ক্রিপ্ট যা দেবিয়ান প্যাকেজের ফাইল সিস্টেম গাছকে বর্তমান ফাইল সিস্টেম গাছের সাথে তুলনা করে, পৃথক পৃথক ফাইলগুলির জন্য ইউনিফাইড ডিফ প্রিন্ট করে।

https://code.google.com/p/dpkg-diffs/

কেবলমাত্র একটি একক ব্যাশ ফাইল আপনি আপনার পথের কোথাও আটকে থাকতে পারেন এবং চালাতে পারেন - মনে হয় এটি আমার পক্ষে কাজ করে এবং এটি খুব পুরানো নয়।

আশা করি এটি কাউকে সাহায্য করবে।

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