मैंने हाल ही में सांबा स्थापित किया है और मैंने /etc/samba/smb.conf
फ़ाइल को गड़बड़ कर दिया है । मुझे मूल कॉन्फ़िगरेशन कैसे वापस मिलेगा?
मैंने हाल ही में सांबा स्थापित किया है और मैंने /etc/samba/smb.conf
फ़ाइल को गड़बड़ कर दिया है । मुझे मूल कॉन्फ़िगरेशन कैसे वापस मिलेगा?
जवाबों:
संपादित :
एक सर्वरफोल प्रश्न पर यह देखा । यदि dpkg-reconfigure foo
काम नहीं करता है, तो इसका उपयोग करें:
टूटी हुई कॉन्फ़िगरेशन फ़ाइल को निकालें या नाम बदलें।
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
से प्रतिस्थापन का अनुरोध करें dpkg
।
sudo dpkg -i --force-confmiss /path/to/samba-common.deb
यह dpkg
.deb से लापता कॉन्फ़िगरेशन फ़ाइलों को बदलने के लिए कहता है। आपको मूल पैकेज मिल सकता है .deb इन /var/cache/apt/archives
या आप अपने वितरण की रिपॉजिटरी से उसी संस्करण की एक नई प्रति का उपयोग कर सकते हैं।
dpkg -i --force-confnew foo.deb
यह dpkg
.deb से उन लोगों के साथ मौजूदा कॉन्फ़िगरेशन फ़ाइलों को अधिलेखित करने के लिए कहता है। आपको मूल पैकेज मिल सकता है .deb इन /var/cache/apt/archives
या आप अपने वितरण की रिपॉजिटरी से उसी संस्करण की एक नई प्रति का उपयोग कर सकते हैं।
dpkg
कॉन्फ़िग फ़ाइल को अधिलेखित करने के लिए बाध्य करता है यदि यह अन्यथा ऐसा करने की अनुमति मांगे । यह पैकेज से जादुई रूप से प्राचीन कॉन्फिग फाइलों को दोबारा नहीं बनाता है।
--force-confmiss
इसके बजाय चाहते हैं । इस विशेष मामले में, उदाहरण के लिए, मुझे लगता है --force-confnew
कि यह ओवरराइट लिखेगा, लेकिन आप सही हैं कि यह पैकेज कॉन्फ़िगरेशन स्क्रिप्ट के विवरण पर निर्भर है।
संक्षिप्त उत्तर: /usr/share/samba/smb.conf
smb.conf फ़ाइल का मूल संस्करण है।
जब किसी भी पैकेज के लिए इस स्थिति का सामना करना पड़ता है, तो मैं क्या करता हूं:
अपने संपादक से मूल संस्करण की बैकअप फ़ाइलों की जाँच करें । मैं Emacs का उपयोग करता हूं, जो आम तौर पर foo~
फाइलें छोड़ता है, और मैंने संख्यात्मक संस्करण-नियंत्रण विकल्प सेट किया है, इसलिए मूल संस्करण हमेशा होता है foo.~1~
। लेकिन हो सकता है कि आपने इसे किसी और तरीके से किया हो, या किसी अन्य संपादक का इस्तेमाल किया हो। यदि आप पहले से ही नहीं है, तो इस सुविधा को चालू करने के लिए अपने संपादक के कॉन्फ़िगरेशन की जांच करने पर विचार करें; यह एक अच्छी आदत है।
पैकेज को फिर से कॉन्फ़िगर करेंdpkg-reconfigure PACKAGENAME
। कभी-कभी यह चालबाजी करता है। मेरे अनुभव में यह शायद ही कभी काम करता है; यह इस बात पर निर्भर करता है कि पैकेज अपनी विन्यास फाइल कैसे बना रहा है।
पैकेज को शुद्ध और पुन: स्थापित करें ( apt-get purge packagename
इसके बाद apt-get install packagename
)। यह हमेशा काम करना चाहिए।
चरम मामलों में, आपको शुद्ध करने के बाद, पैकेज को फिर से स्थापित करने से पहले मैन्युअल रूप से शिकार करना चाहिए और कॉन्फिग फाइलों को हटाना होगा, लेकिन यह दुर्लभ है। हालाँकि, यह पैकेज के लिए किसी भी अन्य डेटा और / या फाइल को समाप्त कर देगा, और यह हमेशा स्वीकार्य नहीं होता है।
पैकेज के लिए स्रोत कोड डाउनलोड करें ( apt-get source foo
) और देखें कि क्या मूल कॉन्फिगर फाइल वहां एक फाइल के रूप में मौजूद है। हालाँकि, यह हो सकता है कि कॉन्फ़िगरेशन फ़ाइल पहले से मौजूद नहीं है, लेकिन पैकेज की पोस्ट-इंस्टॉल स्क्रिप्ट द्वारा स्थापना पर बनाई गई है।
पैकेज के लिए पोस्टस्टाइन स्क्रिप्ट की जांच करें ( /var/lib/dpkg/info/foo.postinst
) यह पता लगाने के लिए कि यह कॉन्फ़िगरेशन फ़ाइल कहां बनाता है और यह कैसे करता है। फिर मैन्युअल रूप से प्रक्रिया को दोहराने की कोशिश करें। यह थोड़ा सा काम है, और हमेशा आसान नहीं होता है।
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
मूल के साथ मेरी ट्रैश किए गए गोपनीय फ़ाइल को अधिलेखित करने का एक मामला था ।
dpkg-reconfigure <package>
डिफ़ॉल्ट रूप से परिवर्तित फ़ाइल को संशोधित नहीं करेगा।
संभवतः ऐसा करने का सबसे आसान तरीका है, अगर आपके पास अभी भी उपयुक्त कैश में पैकेज चलना है
dpgk -i --force-confask /var/cache/apt/archives/<package file name>
जहाँ पैकेज फ़ाइल का नाम आम तौर पर कुछ होता है <package name>_<version>.deb
(बस टैब पूरा करने का उपयोग करें)। यह एप-अपग्रेड के रूप में उसी प्रक्रिया के माध्यम से चलेगा, और आपसे पूछेगा कि आप क्या करना चाहते हैं जब कभी भी यह एक बदले हुए फ़ाइल को ढूंढता है। बस N
हर संकेत पर दर्ज करें । dpkg .dpkg-dist
फ़ाइल नाम के अंत में conf फ़ाइल के पैकेज संस्करण को स्थापित करेगा । फिर आप vimdiff
अंतर की तुलना करने के लिए या कुछ अन्य मर्ज टूल का उपयोग कर सकते हैं , और रीड कन्फ़र फ़ाइल को संशोधित कर सकते हैं।
/var/cache/apt/archives/
हालांकि इसमें कोई पैकेज नहीं है ...
आप डिबेट निकाल सकते हैं और मूल फाइल को पकड़ सकते हैं:
ar p packagename.deb data.tar.gz | tar zx
dpkg-source
आसान है, और उपयोग apt-get source PACKAGE
करना बहुत आसान है।
packagename.postinst
स्क्रिप्ट में उनकी कॉन्फिग फाइल जेनरेट करते हैं ।
ऐसा करने का सबसे अच्छा तरीका (#ubuntu से प्राप्त) है:
dpkg-reconfigure <package>
इस मामले में इसका मतलब है
dpkg-reconfigure samba-common
आप smb.conf
इस तरह से मूल कॉन्फ़िगरेशन फ़ाइल को पुनर्स्थापित कर सकते हैं :
# cp /usr/share/samba/smb.conf /etc/samba/smb.conf
# dpkg-reconfigure samba-common
यह मूल रूप से मूल पैकेज स्थापना प्रक्रिया (डेबियन स्क्वीज़ पर) क्या करता है।
यह आपको वर्तमान में अधिलेखित कर देगा smb.conf
, इसलिए यदि आप इसे खोना नहीं चाहते हैं तो पहले एक बैकअप बनाएं।
आप डेबिट पैकेज की सामग्री को फिर से डाउनलोड और निकाल सकते हैं
$ sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
तथा
$ sudo dpkg --configure -a
नौकरी करेंगे।
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf