Ubuntu 12 में apt-get उन्नयन के दौरान परिवर्तित फ़ाइलों को स्वचालित कैसे करें


13

मुझे एक नया VM बनाने के लिए "चाकू क्लाउडस्टैक सर्वर क्रिएट ..." का उपयोग करना पसंद है। मेरा बूटस्ट्रैप टेम्पलेट "एप-गेट अपडेट" और "एपेट-गेट -वाई अपग्रेड" के साथ शुरू होता है।

नवीनीकरण तब इसके साथ रुकता है:

10.190.113.11 Configuration file `/etc/nscd.conf'
10.190.113.11  ==> Modified (by you or by a script) since installation.
10.190.113.11  ==> Package distributor has shipped an updated version.
10.190.113.11    What would you like to do about it ?  Your options are:
10.190.113.11     Y or I  : install the package maintainer's version
10.190.113.11     N or O  : keep your currently-installed version
10.190.113.11       D     : show the differences between the versions
10.190.113.11       Z     : start a shell to examine the situation
10.190.113.11  The default action is to keep your current version.
10.190.113.11 *** nscd.conf (Y/I/N/O/D/Z) [default=N] ?

तो वास्तव में दो समस्याएं हैं:

सबसे पहले, क्या मैं डिफ़ॉल्ट रूप से कुछ करने के लिए उपयुक्त हो सकता हूं? जाहिर है जवाब देने का कोई तरीका नहीं है।

दूसरे, मुझे यह भी नहीं पता कि प्रश्न का सही उत्तर क्या होना चाहिए। यह जिस फ़ाइल को बदल रहा है वह एक टेम्पलेट से आया है। मैंने अभी तक नहीं देखा है कि "nscd" भी क्या करता है। (संभवतया "Y" सही उत्तर है, लेकिन प्रश्न के समय शामिल शोध चुनौतीपूर्ण है।)

जवाबों:


15

प्रॉम्प्ट पाने से बचने के लिए आप तर्क पारित कर सकते हैं। यह मेरे लिए काम करता है;

apt-get update
apt-get --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

--force-confold(मेरी पसंद) इन "आप संशोधित कॉन्फ़िगरेशन फ़ाइल के बारे में क्या करना चाहते हैं" प्रश्न को डिफ़ॉल्ट रूप से करेंगे N(अपने वर्तमान में स्थापित संस्करण को रखें)

--force-confold: do not modify the current configuration file, the new version is installed with a .dpkg-dist suffix. With this option alone, even configuration files that you have not modified are left untouched. You need to combine it with --force-confdef to let dpkg overwrite configuration files that you have not modified.
--force-confnew: always install the new version of the configuration file, the current version is kept in a file with the .dpkg-old suffix.
--force-confdef: ask dpkg to decide alone when it can and prompt otherwise. This is the default behavior of dpkg and this option is mainly useful in combination with --force-confold.
--force-confmiss: ask dpkg to install the configuration file if it’s currently missing (for example because you have removed the file by mistake).

चेतावनी - कुछ संशोधित कॉन्फ़िगरेशन फ़ाइलें आपके सिस्टम को तोड़ सकती हैं यदि अद्यतन पैकेज संस्करण के साथ वापस रखा गया हो या संगत नहीं हो। स्वचालन समाधान में तैनात करने से पहले कृपया इसका परीक्षण करें


5

यदि आप पूरी तरह से किसी भी इंटरएक्टिव प्रश्नों का उत्तर नहीं देना चाहते हैं, तो DEBIAN_FRONTENDफ्रंट एंड वेरिएबल को सेट करें noninteractive

यह जितना आसान हो सकता है DEBIAN_FRONTEND=noninteractive apt-get upgrade

आपको कोई संदेश नहीं मिलेगा और चूक को चुना जाएगा। ज्यादातर मामलों में, इसका मतलब है कि आपकी कॉन्फ़िगरेशन फ़ाइलें नहीं बदली जाएंगी, और आपको उन फ़ाइलों के साथ छोड़ दिया जाएगा, जैसे *.dpkg-newउन सभी स्थानों के लिए, जहाँ कॉन्फ़िगरेशन फ़ाइल अछूती थी। फिर आप मैन्युअल रूप से परिवर्तनों को हल कर सकते हैं, या अपने स्थानीय कॉन्फ़िगरेशन को कॉन्फ़िगरेशन प्रबंधन प्रणाली या जो भी हो, का उपयोग करके सिस्टम पर धकेल सकते हैं।

दूसरे, मुझे यह भी नहीं पता कि प्रश्न का सही उत्तर क्या होना चाहिए

D कुंजी को हिट करने से अंतर प्रदर्शित होगा, जिसे आप तब निरीक्षण कर सकते हैं। यदि आप निश्चित हैं कि आपने कभी भी उस फ़ाइल को मैन्युअल रूप से नहीं बदला है, तो उसे बदलने के लिए Y चुनना संभवतः सुरक्षित है (आपने अपने बैकअप को RIGHT को अपग्रेड करते हुए सत्यापित किया है )। N को चुनना केवल पुरानी फ़ाइल को सुरक्षित रखता है जो 95% समय के लिए भी सुरक्षित है, जब तक कि पैकेज में बड़े बदलाव नहीं हुए थे, जो आमतौर पर चेंजलॉग / रिलीज़ नोटों में शामिल होते हैं, जिन्हें आपने अपग्रेड / डिस्ट-अपग्रेड कमांड चलाने से पहले भी पढ़ा है।

अतीत, बस अपने परीक्षण वातावरण में पहले कमांड का प्रयास करें। देखें कि क्या चीजें काम नहीं करती हैं। यदि आप वास्तव में पक्का नहीं हैं, और पैकेज और शोध के लिए प्रलेखन पढ़ें।


आप DEBIAN_FRONTEND = गैर-सक्रिय ओवर -फोर्स-हाँ की सलाह देते हैं? ऐसा लगता है कि नो को चूक, और "हाँ" इस उदाहरण में अधिक सही है। (मैं कोई चाबी नहीं मार सकता क्योंकि कोई स्टडिन नहीं है।)
मोजो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.