लिनक्स: apt-get / aptitude का उपयोग करके कॉन्फ़िगर फ़ाइल को कैसे पुनर्स्थापित करें?


37

मैंने कभी-कभी अपनी कॉन्फ़िगर फ़ाइल "/etc/mysql/my.cnf" खो दी है, और इसे पुनर्स्थापित करना चाहता हूं। फ़ाइल पैकेज की है, mysql-commonजो कुछ महत्वपूर्ण कार्यक्षमता के लिए आवश्यक है, इसलिए मैं purge && installइसे बस नहीं कर सकता: निर्भरता की भी स्थापना रद्द की जाएगी (या यदि मैं उन्हें अस्थायी रूप से अनदेखा कर सकता हूं, तो वे काम नहीं करेंगे)।

क्या बिना पैकेज के फाइल से कॉन्फिगर फाइल को रिस्टोर करने का कोई तरीका है ar?

dpkg-reconfigure mysql-common इसे पुनर्स्थापित नहीं किया।


मैं हमेशा 7zip ( 7z x /path/to/foo.deb, तब 7z x data.tar.gz) के साथ पैकेज फ़ाइलों को हमेशा निकाला है ....
quix quixote

व्यक्तिगत रूप से, मैं अपने सिस्टम पर एटकीपर की तरह कुछ सेटअप करना पसंद करता हूं, ठीक इसके बाद। इस तरह से कॉन्फ़िगरेशन फ़ाइलों के सभी परिवर्तन और संस्करण संग्रहीत हो जाते हैं। ( serverfault.com/questions/13091/advice-on-storing-etc-in-a-vcs )
Zoredache

4
और यह, बच्चों, यही वजह है कि हमारे पास बैकअप ...
Womble

1
@womble: वास्तव में, स्थिति थोड़ी अलग है: मेरे पास एक कॉन्फ़िगर फ़ाइल है, लेकिन यह मेरे द्वारा संशोधित है। मैं conf.dफ़ोल्डर्स का उपयोग नहीं कर रहा था , और जब पैकेज मेंटेनर इसे अपडेट करते हैं, तो अपग्रेड प्रक्रिया वास्तव में "कॉन्फिगर फाइल संशोधित" संदेशों को प्रदर्शित करने की उत्सुक हो जाती है :) कारण यह है कि उल्लेख करना महत्वपूर्ण नहीं है, इसलिए मैंने अपने प्रश्न को सरल बनाने का फैसला किया
kolypto

जवाबों:


39

dpkg -i --force-confmiss mysql-common.deb/etc/mysql/my.cnfआपके मामले में किसी भी लापता विन्यास फाइल को फिर से बनाएगा ।


8
धन्यवाद! उबंटू पर, यह थाsudo dpkg --force-confmiss -i /var/cache/apt/archives/mysql-common*.deb
kolypto

10

डेबियन स्क्वीज़ में - कम से कम -, हम इसे इस तरह से भी कर सकते हैं, बाद में su- या sudoउबंटू के लिए -

aptitude install -o Dpkg::Options::=--force-confmiss mysql-server

यह mysql-serverबहुत कुछ सहित सभी गुम फाइलों को रीसेट करने की निर्भरता की देखभाल करेगा mysql-common। विरोधाभासी (शेष) फ़ाइलों को बाहर रखा या रीसेट करने के लिए प्रेरित किया जाएगा।

दुर्भाग्य से, योग्यता में एक बग है , और

aptitude purge -o Dpkg::Options::=--force-all mysql-server

काम नहीं करेगा । इसलिए हमें इसे एक-एक करके करना होगा

dpkg --force-all --purge  mysql-common  mysql-server  mysql-client …

यह किसी भी कॉन्फ़िगरेशन फ़ाइल , मूल या संशोधित को हटा देगा , लेकिन कस्टम फ़ाइलों को ऑनस्क्रीन संदेश के साथ संरक्षित किया जाएगा। नोट, वैसे, यह dpkgभी पहचानता है --force-confnewऔर --force-confoldविकल्प।

mysql-serverस्क्रीन पर निर्भरता सूची प्रिंट पाने के लिए:

aptitude --simulate remove mysql-server

9

उपरोक्त में से कोई भी मेरे लिए काम नहीं करता है - शायद पुराना - वैसे भी, मुझे यह समाधान मिला:

apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall mysql-common

यह उपयोग करने के लिए कमांड है, यह देखते हुए कि योग्यता डिफ़ॉल्ट नहीं है।
सुडो

3

आप डिफ़ॉल्ट mysql config फ़ाइलों को /usr/share/doc/mysql-server-5.0/examples/या इसी तरह की पा सकते हैं । यह सब हो सकता है कि आप की जरूरत है जब तक आप कुछ विशेष / गूढ़ विन्यास सक्षम है।


0

मेरी /etc/mysql/निर्देशिका में, मेरे पास एक my.cnf.origफ़ाइल है जिसमें मूल सामग्री है my.cnf

मुझे यकीन नहीं है कि यह कहाँ से /etc/mysql/my.cnf.origआया है - अर्थात, चाहे मैंने इसे बनाया है, या mysql की स्थापना ने किया है। मुझे याद है कि एक समय में जाँच करना कि यह बिल्कुल वैसा ही थाmy.cnf

यदि आपके पास ऐसी कोई चीज है, और नहीं my.cnf तो आप एक से दूसरे को कॉपी कर सकते हैं।

sudo cp /etc/mysql/my.cnf.orig /etc/mysql/my.cnf

किसी भी मामले में, यह 3897 बाइट्स की एक साधारण पाठ फ़ाइल है और आप एक सामान्य मैसक विन्यास फाइल से कॉपी और पेस्ट कर सकते हैं।

एक बार/etc/mysql/my.cnf नकल करने के लिए अपने को बहाल करने के लिए यह एक अच्छा विचार होगा ताकि आप इसे भविष्य में आसानी से बहाल कर सकें।


मैं आमतौर पर उन्हें कॉपी करके मूल-स्थापित कॉन्फ़िगरेशन फ़ाइलों का बैकअप बनाता हूं /path/to/foo.conf.orig... यदि ये स्वचालित रूप से स्थापित हैं, तो वे तब बनाए जाते हैं जब apt-get एक नया संस्करण स्थापित कर रहा है और पता लगाता है कि आपने मूल कॉन्फ़िगरेशन फ़ाइल बदल दी है।
क्वैक क्वोटोटे

हम्म, जितना अधिक मैं इसके बारे में सोचता हूं, उतना ही लगता है कि मैंने/etc/mysql/my.cnf.orig एक बैकअप के रूप में बनाया है जो एक नए इंस्टॉलेशन द्वारा अधिलेखित नहीं किया जाएगा। लेकिन, इसे कहीं पूरी तरह से अलग करना एक अच्छा विचार है।
पेवियम

मैं सामान्य होने की कोशिश कर रहा था; my.cnf के लिए मैं इसे कॉपी करूंगा /etc/mysql/my.cnf.orig। फिर, स्वाभाविक रूप से, का एक टारबॉल बैकअप बनाएं /etc। :)
क्वैक क्वोटोटे

0

आपको इस आदेश के साथ mysql-common को पुनर्स्थापित करना होगा:apt-get install --reinstall mysql-common


क्या यह वास्तव में लापता कॉन्फ़िगरेशन फ़ाइलों को पुनर्स्थापित करता है?
पूली

1
नहीं, यह काम नहीं करता है।
चिरिशीतानंद

0

ऐसा प्रतीत होता है कि पैकेज की कॉन्फ़िगरेशन फ़ाइलों के साथ प्रबंधित किए जाने पर कुछ अन्य समाधान काम नहीं करेंगे ucf

इस मामले में आप उपयोग कर सकते हैं:

UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.