मुझे डिफ़ॉल्ट सांबा कॉन्फ़िगरेशन फ़ाइल (डेबियन-आधारित सिस्टम) कैसे वापस मिल सकती है?


11

मैंने हाल ही में सांबा स्थापित किया है और मैंने /etc/samba/smb.confफ़ाइल को गड़बड़ कर दिया है । मुझे मूल कॉन्फ़िगरेशन कैसे वापस मिलेगा?


1
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
थोरसुमोनर

हर कोई पैकेज के नाम के लिए प्लेसहोल्डर का उपयोग क्यों कर रहा है?
एंडोलिथ

जवाबों:


8

संपादित :

एक सर्वरफोल प्रश्न पर यह देखा । यदि dpkg-reconfigure fooकाम नहीं करता है, तो इसका उपयोग करें:

  1. टूटी हुई कॉन्फ़िगरेशन फ़ाइल को निकालें या नाम बदलें।

    sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
    
  2. से प्रतिस्थापन का अनुरोध करें 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कि यह ओवरराइट लिखेगा, लेकिन आप सही हैं कि यह पैकेज कॉन्फ़िगरेशन स्क्रिप्ट के विवरण पर निर्भर है।
क्विकोट को

7

संक्षिप्त उत्तर: /usr/share/samba/smb.confsmb.conf फ़ाइल का मूल संस्करण है।

जब किसी भी पैकेज के लिए इस स्थिति का सामना करना पड़ता है, तो मैं क्या करता हूं:

  1. अपने संपादक से मूल संस्करण की बैकअप फ़ाइलों की जाँच करें । मैं Emacs का उपयोग करता हूं, जो आम तौर पर foo~फाइलें छोड़ता है, और मैंने संख्यात्मक संस्करण-नियंत्रण विकल्प सेट किया है, इसलिए मूल संस्करण हमेशा होता है foo.~1~। लेकिन हो सकता है कि आपने इसे किसी और तरीके से किया हो, या किसी अन्य संपादक का इस्तेमाल किया हो। यदि आप पहले से ही नहीं है, तो इस सुविधा को चालू करने के लिए अपने संपादक के कॉन्फ़िगरेशन की जांच करने पर विचार करें; यह एक अच्छी आदत है।

  2. पैकेज को फिर से कॉन्फ़िगर करेंdpkg-reconfigure PACKAGENAME । कभी-कभी यह चालबाजी करता है। मेरे अनुभव में यह शायद ही कभी काम करता है; यह इस बात पर निर्भर करता है कि पैकेज अपनी विन्यास फाइल कैसे बना रहा है।

  3. पैकेज को शुद्ध और पुन: स्थापित करें ( apt-get purge packagenameइसके बाद apt-get install packagename)। यह हमेशा काम करना चाहिए।

    चरम मामलों में, आपको शुद्ध करने के बाद, पैकेज को फिर से स्थापित करने से पहले मैन्युअल रूप से शिकार करना चाहिए और कॉन्फिग फाइलों को हटाना होगा, लेकिन यह दुर्लभ है। हालाँकि, यह पैकेज के लिए किसी भी अन्य डेटा और / या फाइल को समाप्त कर देगा, और यह हमेशा स्वीकार्य नहीं होता है।

  4. पैकेज के लिए स्रोत कोड डाउनलोड करें ( apt-get source foo) और देखें कि क्या मूल कॉन्फिगर फाइल वहां एक फाइल के रूप में मौजूद है। हालाँकि, यह हो सकता है कि कॉन्फ़िगरेशन फ़ाइल पहले से मौजूद नहीं है, लेकिन पैकेज की पोस्ट-इंस्टॉल स्क्रिप्ट द्वारा स्थापना पर बनाई गई है।

  5. पैकेज के लिए पोस्टस्टाइन स्क्रिप्ट की जांच करें ( /var/lib/dpkg/info/foo.postinst) यह पता लगाने के लिए कि यह कॉन्फ़िगरेशन फ़ाइल कहां बनाता है और यह कैसे करता है। फिर मैन्युअल रूप से प्रक्रिया को दोहराने की कोशिश करें। यह थोड़ा सा काम है, और हमेशा आसान नहीं होता है।


यह अधिक होना चाहिए। मेरे लिए यह sudo cp /usr/share/samba/smb.conf /etc/samba/smb.confमूल के साथ मेरी ट्रैश किए गए गोपनीय फ़ाइल को अधिलेखित करने का एक मामला था ।
edzillion

2

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/हालांकि इसमें कोई पैकेज नहीं है ...
एंडोलिथ

1

आप डिबेट निकाल सकते हैं और मूल फाइल को पकड़ सकते हैं:

ar p packagename.deb data.tar.gz | tar zx

उपयोग करना dpkg-sourceआसान है, और उपयोग apt-get source PACKAGEकरना बहुत आसान है।
टेडी

1
@ टेडी: केवल डिफ़ॉल्ट कॉन्फिग फाइल को शुरू करने के लिए सोर्स पैकेज में शामिल किया गया है। कई पैकेज एक भारी विक्रेता-विशिष्ट कॉन्फ़िगरेशन फ़ाइल स्थापित करते हैं; कुछ ऑटो packagename.postinstस्क्रिप्ट में उनकी कॉन्फिग फाइल जेनरेट करते हैं ।
क्विकोट

1

ऐसा करने का सबसे अच्छा तरीका (#ubuntu से प्राप्त) है:

dpkg-reconfigure <package>

इस मामले में इसका मतलब है

dpkg-reconfigure samba-common

1

आप smb.confइस तरह से मूल कॉन्फ़िगरेशन फ़ाइल को पुनर्स्थापित कर सकते हैं :

# cp /usr/share/samba/smb.conf /etc/samba/smb.conf
# dpkg-reconfigure samba-common

यह मूल रूप से मूल पैकेज स्थापना प्रक्रिया (डेबियन स्क्वीज़ पर) क्या करता है।

यह आपको वर्तमान में अधिलेखित कर देगा smb.conf, इसलिए यदि आप इसे खोना नहीं चाहते हैं तो पहले एक बैकअप बनाएं।


1
इस फ़ाइल में उस पैकेज का नाम देने के लिए धन्यवाद। "सूदो एप्टीट्यूड पाजेबा सांबा-कॉमन; सुडो एप्टीट्यूड इंस्टॉल सांबा" मेरी पसंद थी, लेकिन टोटर का जवाब सबसे कम डरावना और सबसे ज्यादा पसंद का डेबियन लगता है।
मार्टिन डोरे


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