วิธีการค้นหาไฟล์การกำหนดค่าที่จัดการ Debian ทั้งหมดซึ่งมีการเปลี่ยนแปลงจากค่าเริ่มต้น
วิธีการค้นหาไฟล์การกำหนดค่าที่จัดการ Debian ทั้งหมดซึ่งมีการเปลี่ยนแปลงจากค่าเริ่มต้น
คำตอบ:
หากต้องการค้นหาไฟล์การกำหนดค่าที่จัดการ Debian ทั้งหมดซึ่งมีการเปลี่ยนแปลงจากค่าเริ่มต้นคุณสามารถใช้คำสั่งเช่นนี้
dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS=" "{print $2,$1}' | md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK/{print $1}'
แก้ไข (ทำงานกับระบบที่แปลเป็นภาษาท้องถิ่น):
dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS=" "{print $2,$1}' | LANG=C md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK/{print $1}' | sort | less
แก้ไข (ใช้ได้กับแพ็คเกจที่มี OK ในชื่อไฟล์):
dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS=" "{print $2,$1}' | LANG=C md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK$/{print $1}' | sort | less
md5sum --quiet
แม้ว่าจะหลีกเลี่ยงการกรองไฟล์ OK ด้วยawk
(และทำให้เกิดปัญหาการแปล?) อย่างไรก็ตามคุณไม่ทราบวิธีรวมไฟล์ที่ไม่ได้ติดตามภายใน / etc? เช่นเดียวกับใน / etc / apache2 / sites-available เช่น
debsums -ec
) ใช้งานได้จริงเพราะดูเหมือนว่าจะได้รับผลลัพธ์ที่น้อยกว่ามาก
debsums -ec
: ถ้าฉันใช้วิธีนี้เพื่อติดตั้งเวอร์ชันแพ็คเกจอีกครั้งไฟล์บางไฟล์ที่แสดงด้วยวิธีนี้จะไม่เปลี่ยนแปลง
find /etc -type f \( -iname '*.ucf-dist' -o -iname '*.ucf-old' -o -iname '*.dpkg-old' -o -iname '*.dpkg-dist' \) -print | sort
จากman debsums
:
debsums -ce
List changed configuration files.
ขออภัยที่ necro แต่ในขณะที่คำตอบของ @ naught101 นั้นถูกต้องสำหรับไฟล์ที่แก้ไขแล้วมันไม่ได้ช่วยเพิ่มไฟล์เลย @ วิธีแก้ปัญหาของ Graeme ดี แต่ขึ้นอยู่กับ etckeeper; ฉันไม่ต้องการแก้ไขระบบไฟล์
find /etc -type f | grep -vFf <(debsums -e -r /etc | sed 's/[[:space:]]*OK$//')
ค้นหาไฟล์ใน / etc / ที่debsums
ไม่ได้รายงานที่ถูกต้อง ซึ่งหมายความว่าไฟล์ที่ไม่ได้ติดตามหรือไฟล์ที่ไม่ได้ "ตกลง" (แฮชไม่ตรงกัน)
debsums --list-missing
เพื่อตรวจสอบว่าอย่างน้อยหนึ่งแพคเกจจะหายไป checksums ของไฟล์รวม ทุกวันนี้ผลลัพธ์ควรว่างเปล่า
ฉันมักจะชอบการตั้งค่า etckeeper บนระบบในทันที ด้วยบางสิ่งบางอย่างเช่น etckeeper ฉันสามารถค้นหาได้ไม่เพียง แต่เมื่อไฟล์นั้นแตกต่างกัน แต่ฉันก็สามารถรู้ได้ว่ามันแตกต่างกันอย่างไร
ดู:
หรือ debsums -e | grep FAILED ซึ่งจะแสดงการประชุมที่หายไปทั้งหมด
(จากแพ็คเกจ debsums)
นี่อาจเกินความจริง แต่เนื่องจากมีคนพูดถึงผู้รักษาและในขณะที่ฉันกำลังตรวจสอบว่าฉันเจออัญมณีอื่นที่อาจมีประโยชน์มากกว่านี้ถ้าคุณพยายามหาสิ่งต่าง ๆ "ตามความเป็นจริง"
http://devstructure.com/blueprint/
พิมพ์เขียวเป็นเครื่องมือจัดการการกำหนดค่าอย่างง่ายที่เซิร์ฟเวอร์ย้อนกลับ มันระบุสิ่งที่คุณทำด้วยตนเองจัดเก็บไว้ในที่เก็บ Git สร้างรหัสที่สามารถสร้างความพยายามของคุณใหม่และช่วยคุณปรับใช้การเปลี่ยนแปลงเหล่านั้นกับการผลิต
สิ่งนี้จะแยกจากคำถามเดิมเล็กน้อยว่ามันจะให้ไฟล์กำหนดค่า ADDED ซึ่งต่างจากการปรับเปลี่ยนเพียงอย่างเดียว แม้ว่าไฟล์ที่ไม่รวมอยู่ในแพ็คเกจ deb ใด ๆ ก็จะถูกดักจับเช่นกัน พฤติกรรมทั้งสองอาจเป็นที่น่าพอใจ
มันขึ้นอยู่กับการใช้ etckeeper กับ git vcs โดยสมบูรณ์ตั้งแต่เริ่มต้นแม้ว่ามันควรจะทำงานถ้าคุณเพิ่มและคอมมิทไฟล์ที่เปลี่ยนแปลงก่อนหน้านี้หลังจากคอมมิทครั้งแรก โปรดทราบว่าหนึ่ง gotcha ที่นี่คือ Ubuntu ตั้งค่า etckeeper ให้ใช้ Bazaar ตามค่าเริ่มต้น (Canonical sponsor Bazaar) แทนที่จะเป็น git default ที่นักพัฒนา etckeeper ตั้งไว้
ความคิดคือการได้รับรายการของการกระทำทั้งหมดที่ไม่ได้ทำโดยอัตโนมัติหลังจากนั้นและเรียกใช้ จากนั้นแสดงรายการไฟล์ที่เปลี่ยนแปลงในทั้งหมดยกเว้นการส่งข้อมูลครั้งแรก:
filter_sed="/committing changes in \/etc after apt run\$/d"
etckeeper vcs log --oneline |
sed "$filter_sed; \$d; s/ .*//" |
xargs etckeeper vcs show --name-only --format=format: |
sort |
uniq |
sed "/^\$/d"
สตริงตัวกรองสามารถขยายได้เพื่อรวมการคอมมิทอื่น ๆ ถ้ามันถูกตั้งชื่ออย่างสม่ำเสมอ อาจดีสำหรับการติดตั้งโดยตรงจากไฟล์ deb หรือจากซอร์สโค้ด
ไฟล์เด่นที่สิ่งนี้ทำให้ฉันเป็นของฉันxorg.conf
- คุณต้องเพิ่มไฟล์นี้ลงใน / etc / X11 ด้วยตัวคุณเองถ้าคุณต้องการ นอกจากนี้default/grub
การเปลี่ยนแปลงของฉันก็หยิบขึ้นมาดูเหมือนว่านี่จะถูกคัดลอกมาจาก / usr / share โดยสคริปต์การติดตั้งโพสต์แทนที่จะแสดงเป็นส่วนหนึ่งของแพ็คเกจ หากมีการเปลี่ยนแปลงไฟล์เช่นนี้วิธีการที่เกี่ยวข้องกับ dpkg จะไม่เปิดเผย
git log
ตอนนี้มีหนึ่งตัวเลือกที่ช่วยให้การกรองการกระทำน่าทึ่งโดยไม่ต้องใช้ของ--invert-grep
sed