রায়ান থমসন প্রদত্ত উত্তরটি সঠিক পথে চলছিল। তবুও এটি কাজটি করতে সক্ষম হবে না (বিশদ কারণ নীচে দেওয়া হয়েছে)।
এর সঠিক (এবং সবচেয়ে সহজ) উপায়টি হচ্ছে ডিপি কেজি বিকল্পটি পাস করার -o
সাথে সাথে apt
আপনি dpkg
পরিবর্তিত কনফিগার ফাইল বা মূল ফাইলগুলি ধরে রাখতে চান কিনা তা জিজ্ঞাসা করতে বাধ্য করা force কমান্ডটি এরকম হবে -
sudo apt-get --reinstall -o Dpkg::Options::="--force-confask" install foo
এটি আপনাকে একটি প্রশ্ন জিজ্ঞাসা করবে
Configuration file '/etc/foo/foo.conf'
==> Modified (by you or by a script) since installation.
Version in package is the same as at last installation.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** foo.conf (Y/I/N/O/D/Z) [default=N] ?
প্যাকেজ রক্ষণাবেক্ষণকারীর আসল কনফিগারেশন ফাইলটি ইনস্টল করতে আপনাকে Y বা I চাপতে হবে। এমনকি কী কী পরিবর্তন হয় তা দেখতে আপনি ডি চাপতে পারেন বা নিজেকে ঠিক করার জন্য জেড বিকল্পের সাহায্যে একটি রুট শেল শুরু করতে পারেন।
দ্রষ্টব্য: প্রতিস্থাপনের পরে, আপনি নিজের পরিবর্তিত ফাইলটি খুঁজে পাবেনat /etc/foo/foo.conf.dpkg-old
অন্যান্য বিকল্প কেন কাজ করবে না?
কারণ dpkg এ অন্যান্য অপশনগুলি ভাল কাজ করে না। প্যাকেজের কনফিগার ফাইলগুলির সাথে সম্পর্কিত বিকল্পগুলি হ'ল
--force-confmiss
--force-confnew
--force-confold
--force-confdef
--force-confmiss
প্যাকেজ সংস্করণ পরিবর্তন না হলে কাজ করবে না। ম্যান-পৃষ্ঠা থেকে
যদি একটি কনফিলে পরিবর্তন করা হয়েছে এবং প্যাকেজের সংস্করণটি পরিবর্তিত হয়েছে, সর্বদা প্রম্পট না করেই নতুন সংস্করণ ইনস্টল করুন, যদি না --ফোর্স-কনফিডেফ নির্দিষ্ট না করা থাকে, এই ক্ষেত্রে ডিফল্ট ক্রিয়াটি অগ্রাধিকার দেওয়া হয়।
--force-confmiss
নিখোঁজ কনফিলেস নিয়ে কাজ করে। সংস্করণ পরিবর্তন না হলে এটিও ব্যর্থ হবে। ম্যান-পৃষ্ঠা উদ্ধৃতি
স্বীকার করুন: যদি কোনও কনফিলে অনুপস্থিত থাকে এবং প্যাকেজের সংস্করণ পরিবর্তিত হয়, সর্বদা বিনা অনুরোধে নিখোঁজ কনফিলটি ইনস্টল করুন। এটি বিপজ্জনক, কারণ এর অর্থ ফাইলটিতে করা পরিবর্তন (অপসারণ) সংরক্ষণ করা নয় ser
--force-confold
সংস্করণ পরিবর্তন করা হয় তবেই পরিবর্তিত সংস্করণ ধরে রাখতে পারবেন । একই প্যাকেজের জন্য, এটিও ব্যর্থ হবে। ম্যান-পৃষ্ঠা উদ্ধৃতি
কনফোল্ড: যদি কোনও কনফিল পরিবর্তন করা হয় এবং প্যাকেজের সংস্করণটি পরিবর্তিত হয়, সর্বদা বিনা অনুরোধে পুরানো সংস্করণটি রাখুন, যদি না --ফোর্স-কনফিডেফ নির্দিষ্ট না করা থাকে, তবে এই ক্ষেত্রে ডিফল্ট ক্রিয়াটি অগ্রাধিকার দেওয়া হয়।
--force-confdef
এছাড়াও ব্যর্থ হবে কারণ ডিফল্ট ক্রিয়াটি পুরানো ফাইল ধরে রাখতে হয় (সাথে দেখানো বার্তাটি থেকে নির্দেশিত --force-confask
It এটির রেখা রয়েছে (Y/I/N/O/D/Z) [default=N]
যার মানে ধরে রাখা ডিফল্ট above উপরে দেখুন)। এবং যদি --force-confnew
নির্দিষ্ট করা থাকে তবে সংস্করণ পরিবর্তন হয় না, এটিও কার্যকর হবে না। ম্যান-পৃষ্ঠা উদ্ধৃতি
কনফিডেফ: যদি কোনও কনফিল পরিবর্তন করা হয় এবং প্যাকেজের সংস্করণ পরিবর্তন হয় তবে সর্বদা প্রম্পট না করেই ডিফল্ট ক্রিয়াটি চয়ন করুন। যদি কোনও ডিফল্ট ক্রিয়া না হয় তবে এটি ব্যবহারকারীকে জিজ্ঞাসা করা বন্ধ করে দিবে যদি না - ফোর্স - কনফিউ বা --ফোর্স-কনফোল্ডও দেওয়া না হয়, তবে এই ক্ষেত্রে এটি চূড়ান্ত ক্রিয়া সিদ্ধান্ত নেওয়ার জন্য ব্যবহার করবে।
কেবলমাত্র --force-confask
কাজ করবে, কারণ সংস্করণটি সমান হলেও এটি আপনাকে স্পষ্টভাবে প্রশ্ন জিজ্ঞাসা করবে। ম্যান-পৃষ্ঠা উদ্ধৃতি
কনফাস্ক: যদি কোনও কনফিল পরিবর্তন করা থাকে তবে সর্বদা এটি প্যাকেজের সংস্করণে প্রতিস্থাপনের প্রস্তাব দেয়, প্যাকেজের সংস্করণটি পরিবর্তিত না হলেও (dpkg 1.15.8 থেকে)) যদি কোনো --force-confmiss , --force-confnew , --force-confold , অথবা --force-confdef এছাড়াও দেওয়া হয় যার ফলে চূড়ান্ত কর্ম সিদ্ধান্ত নিতে ব্যবহার করা হবে।
আশা করি এটি সাহায্য করবে।
foo
, যদিbar
নির্ভর করেfoo
এবং আমি অপসারণ করতে চাই না তবেbar
কী হবে?