ฉันเพิ่งติดตั้ง 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