ฉันเพิ่งติดตั้ง Samba และฉันทำให้/etc/samba/smb.confไฟล์สับสน ฉันจะนำการกำหนดค่าดั้งเดิมกลับมาได้อย่างไร
ฉันเพิ่งติดตั้ง Samba และฉันทำให้/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) และดูว่ามีไฟล์ต้นฉบับอยู่ในไฟล์นั้นหรือไม่ อย่างไรก็ตามอาจเป็นไปได้ว่าไฟล์กำหนดค่าไม่มีอยู่ก่อน แต่ถูกสร้างขึ้นเมื่อติดตั้งโดยสคริปต์หลังการติดตั้งของแพ็คเกจ
ตรวจสอบสคริปต์ postinst เพื่อดูแพ็คเกจ ( /var/lib/dpkg/info/foo.postinst) เพื่อค้นหาตำแหน่งที่สร้างไฟล์ปรับแต่งและวิธีใช้งาน จากนั้นลองทำซ้ำกระบวนการด้วยตนเอง นี่เป็นงานเล็กน้อยและไม่ใช่เรื่องง่ายเสมอไป
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.confเขียนทับไฟล์ conf ถังขยะของฉันด้วยต้นฉบับ
dpkg-reconfigure <package> จะไม่แก้ไขไฟล์ conf ที่เปลี่ยนแปลงโดยค่าเริ่มต้น
อาจเป็นวิธีที่ง่ายที่สุดในการทำเช่นนี้หากคุณยังมีแพ็กเกจในแคช apt อยู่ให้เรียกใช้
dpgk -i --force-confask /var/cache/apt/archives/<package file name>
โดยที่ชื่อไฟล์แพคเกจมักเป็นสิ่งที่ต้องการ<package name>_<version>.deb(เพียงใช้ความสมบูรณ์ของแท็บ) สิ่งนี้จะทำงานผ่านกระบวนการเดียวกับ apt-upgrade และถามคุณว่าคุณต้องการทำอะไรเมื่อพบไฟล์ conf ที่เปลี่ยนแปลง เพียงป้อนNที่พร้อมท์ทุกครั้ง dpkg จะติดตั้งรุ่นแพคเกจของไฟล์ conf ด้วย.dpkg-distที่ส่วนท้ายของชื่อไฟล์ จากนั้นคุณสามารถใช้vimdiffหรือเครื่องมือผสานอื่น ๆ เพื่อเปรียบเทียบความแตกต่างและแก้ไขไฟล์ conf อ่าน
/var/cache/apt/archives/...
คุณสามารถแตก deb และคว้าไฟล์ต้นฉบับ:
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
นี่เป็นสิ่งที่กระบวนการติดตั้งแพ็คเกจต้นฉบับทำ (บน Debian Squeeze)
สิ่งนี้จะเขียนทับคุณเป็นปัจจุบันsmb.confดังนั้นควรสำรองข้อมูลก่อนหากคุณไม่ต้องการทำมันหาย
คุณสามารถดาวน์โหลดซ้ำและแยกเนื้อหาของแพ็คเกจ deb
$ 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