रयान थॉमसन द्वारा प्रदान किया गया जवाब सही तरीके से जा रहा था। फिर भी यह काम करने में सक्षम नहीं होगा (विवरण कारण नीचे दिया गया है)।
ऐसा करने का सही (और आसान) जिस तरह से उपयोग कर रहा है -o
के साथ apt
dpkg विकल्प गुजरती हैं और मजबूर करने के लिए dpkg
आप से पूछना करने के लिए आप संशोधित config फाइल या मूल लोगों को बनाए रखने के लिए करना चाहते हैं। कमान इस तरह होगी -
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 को दबाना होगा । आप यह देखने के लिए भी D दबा सकते हैं कि अपने आप को ठीक करने के लिए Z विकल्प के साथ कौन से परिवर्तन या एक रूट शेल शुरू करें।
नोट: प्रतिस्थापन के बाद, आपको अपनी संशोधित फ़ाइल मिल जाएगीat /etc/foo/foo.conf.dpkg-old
अन्य विकल्प काम क्यों नहीं करेंगे?
क्योंकि dpkg में अन्य विकल्प अच्छी तरह से काम नहीं करते हैं। विकल्प जो पैकेज की कॉन्फिग फाइलों से संबंधित हैं
--force-confmiss
--force-confnew
--force-confold
--force-confdef
--force-confmiss
जब पैकेज संस्करण नहीं बदलेगा तो काम नहीं करेगा। मैन-पेज से
यदि एक शंकुधारी को संशोधित किया गया है और पैकेज में संस्करण बदल गया है, तो हमेशा नए संस्करण को बिना संकेत दिए स्थापित करें, जब तक --force-confdef भी निर्दिष्ट नहीं किया जाता है, उस स्थिति में डिफ़ॉल्ट कार्रवाई पसंद की जाती है।
--force-confmiss
गायब शंकुधारी के साथ काम करता है। यह भी विफल हो जाएगा जब संस्करण नहीं बदला। मानव-पृष्ठ का उद्धरण
कन्फ़मिस: अगर कोई शंकुधारी गायब है और पैकेज में संस्करण बदल गया है, तो हमेशा बिना रुके लापता कॉनफिल स्थापित करें। यह खतरनाक है, क्योंकि इसका मतलब फ़ाइल में किए गए बदलाव (हटाने) को संरक्षित नहीं करना है
--force-confold
यदि परिवर्तित किया गया है तो केवल संशोधित संस्करण को बनाए रखेगा । एक ही पैकेज के लिए, यह भी विफल हो जाएगा। मानव-पृष्ठ का उद्धरण
कबूल करें: यदि एक शंकुधारी को संशोधित किया गया है और पैकेज में संस्करण बदल गया है, तो हमेशा पुराने संस्करण को बिना संकेत दिए रखें, जब तक कि --force-confdef भी निर्दिष्ट नहीं किया जाता है, उस स्थिति में डिफ़ॉल्ट कार्रवाई को प्राथमिकता दी जाती है।
--force-confdef
यह भी विफल हो जाएगा क्योंकि डिफ़ॉल्ट क्रिया पुरानी फ़ाइल को बनाए रखने के लिए है ( --force-confask
इसके साथ दिखाए गए संदेश से संकेतित है । इसकी लाइन है (Y/I/N/O/D/Z) [default=N]
जिसका अर्थ है कि डिफ़ॉल्ट डिफ़ॉल्ट है। ऊपर देखें)। और अगर --force-confnew
निर्दिष्ट किया गया है लेकिन संस्करण नहीं बदलता है, तो वह भी काम नहीं करेगा। मानव-पृष्ठ का उद्धरण
confdef: यदि एक शंकुधारी को संशोधित किया गया है और पैकेज में संस्करण बदल गया है, तो हमेशा बिना देर किए डिफ़ॉल्ट कार्रवाई चुनें। यदि कोई डिफ़ॉल्ट कार्रवाई नहीं है, तो यह उपयोगकर्ता से पूछना बंद कर देगा जब तक कि --force-confnew या --force-confold भी नहीं दिया गया है, इस स्थिति में यह अंतिम कार्रवाई को तय करने के लिए उपयोग करेगा।
केवल --force-confask
काम करेगा, क्योंकि यह संस्करण समान होने पर भी आपसे स्पष्ट रूप से सवाल पूछेगा। मानव-पृष्ठ का उद्धरण
confask: अगर किसी कॉनफाइल को संशोधित किया गया है, तो इसे हमेशा पैकेज में संस्करण के साथ बदलने की पेशकश करें, भले ही पैकेज में संस्करण नहीं बदला (dpkg 1.15.8 के बाद से)। यदि कोई --force-confmiss , --force-confnew , --force-confold , या --force-confdef भी दिया जाता है, तो इसका उपयोग अंतिम कार्रवाई तय करने के लिए किया जाएगा।
आशा है कि मदद मिलेगी।
foo
, अगर क्याbar
निर्भर करता हैfoo
और मैं नहीं निकालना चाहता हूंbar
?