ฉันจะกลับไฟล์กำหนดค่าเริ่มต้นของแซมบ้า (ระบบที่ใช้ระบบเดเบียน) ได้อย่างไร


11

ฉันเพิ่งติดตั้ง Samba และฉันทำให้/etc/samba/smb.confไฟล์สับสน ฉันจะนำการกำหนดค่าดั้งเดิมกลับมาได้อย่างไร


1
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
ThorSummoner

ทำไมทุกคนที่ใช้ตัวยึดตำแหน่งสำหรับชื่อแพ็คเกจ
endolith

คำตอบ:


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จะทำการเขียนทับ แต่คุณคิดว่ามันขึ้นอยู่กับรายละเอียดของสคริปต์การกำหนดค่าแพ็คเกจ
ต้มตุ๋น Quixote

7

คำตอบสั้น ๆ : /usr/share/samba/smb.confเป็นไฟล์ต้นฉบับของ smb.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. ตรวจสอบสคริปต์ postinst เพื่อดูแพ็คเกจ ( /var/lib/dpkg/info/foo.postinst) เพื่อค้นหาตำแหน่งที่สร้างไฟล์ปรับแต่งและวิธีใช้งาน จากนั้นลองทำซ้ำกระบวนการด้วยตนเอง นี่เป็นงานเล็กน้อยและไม่ใช่เรื่องง่ายเสมอไป


ควรจะสูงกว่านี้ สำหรับฉันมันเป็นเพียงแค่กรณีของการsudo cp /usr/share/samba/smb.conf /etc/samba/smb.confเขียนทับไฟล์ conf ถังขยะของฉันด้วยต้นฉบับ
edzillion

2

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/...
endolith

1

คุณสามารถแตก deb และคว้าไฟล์ต้นฉบับ:

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

ใช้dpkg-sourceง่ายขึ้นและการใช้apt-get source PACKAGEเป็นมากได้ง่ายขึ้น
เท็ดดี้

1
@Teddy: เฉพาะไฟล์กำหนดค่าเริ่มต้นที่รวมอยู่ในแพ็คเกจต้นทางเพื่อเริ่มต้นด้วย แพ็คเกจจำนวนมากติดตั้งไฟล์กำหนดค่าเฉพาะผู้ขายอย่างมาก บางไฟล์สร้างไฟล์ปรับแต่งอัตโนมัติในpackagename.postinstสคริปต์
ต้มตุ๋น Quixote

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

นี่เป็นสิ่งที่กระบวนการติดตั้งแพ็คเกจต้นฉบับทำ (บน Debian Squeeze)

สิ่งนี้จะเขียนทับคุณเป็นปัจจุบันsmb.confดังนั้นควรสำรองข้อมูลก่อนหากคุณไม่ต้องการทำมันหาย


1
ขอขอบคุณที่แจ้งชื่อแพ็คเกจที่มีไฟล์นี้ "sudo aptitude purge samba-common; sudo aptitude install samba" เป็นตัวเลือกของฉัน แต่คำตอบของ Totor ดูน่ากลัวน้อยที่สุดและ Debian ส่วนใหญ่ของตัวเลือก
Martin Dorey

0

คุณสามารถดาวน์โหลดซ้ำและแยกเนื้อหาของแพ็คเกจ deb


1
นี่คือวิธีที่ระดับต่ำเกินไปวิธีที่จะทำมัน
Frew Schmidt

4
ไม่ได้หมายความว่าทำงานตามปกติ
จอห์น T

-2
$ sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf

และ

$ sudo dpkg --configure -a

จะทำงาน


นี่เกือบจะเหมือนกับคำตอบอื่น ๆ ทั้งหมดที่นี่ นอกจากนี้ยังโพสต์จาก '14
var firstName
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.