วิธีการเปลี่ยนไฟล์ปรับแต่งอัตโนมัติระหว่างการอัพเกรด apt-get ใน Ubuntu 12


13

ฉันชอบใช้ "knife cloudstack server create ... " เพื่อสร้าง VM ใหม่ เทมเพลต bootstrap ของฉันเริ่มต้นด้วย "apt-get update" และ "apt-get -y upgrade"

การอัพเกรดจะหยุดด้วย:

10.190.113.11 Configuration file `/etc/nscd.conf'
10.190.113.11  ==> Modified (by you or by a script) since installation.
10.190.113.11  ==> Package distributor has shipped an updated version.
10.190.113.11    What would you like to do about it ?  Your options are:
10.190.113.11     Y or I  : install the package maintainer's version
10.190.113.11     N or O  : keep your currently-installed version
10.190.113.11       D     : show the differences between the versions
10.190.113.11       Z     : start a shell to examine the situation
10.190.113.11  The default action is to keep your current version.
10.190.113.11 *** nscd.conf (Y/I/N/O/D/Z) [default=N] ?

ดังนั้นจึงมีสองปัญหาจริง ๆ :

ประการแรกฉันจะได้รับ apt-get ทำบางอย่างโดยค่าเริ่มต้น เห็นได้ชัดว่าไม่มีทางที่จะให้คำตอบ

ประการที่สองฉันไม่รู้ด้วยซ้ำว่าคำตอบที่ถูกต้องสำหรับคำถามควรเป็นอะไร ไฟล์กำหนดค่าที่จะแทนที่นั้นมาจากเทมเพลต ฉันยังไม่ได้ดูว่า "nscd" ทำอะไร (สมมุติว่า "Y" เป็นคำตอบที่ถูกต้อง แต่งานวิจัยที่เกี่ยวข้องในเวลาที่คำถามนั้นน่ากลัว)

คำตอบ:


15

คุณสามารถส่งผ่านข้อโต้แย้งเพื่อหลีกเลี่ยงการได้รับแจ้ง มันใช้งานได้สำหรับฉัน

apt-get update
apt-get --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

--force-confold(ตัวเลือกของฉัน) จะทำให้คำถาม "คุณต้องการทำอะไรเกี่ยวกับแฟ้มการกำหนดค่าที่ปรับเปลี่ยน"เหล่านี้เป็นค่าเริ่มต้นที่N(เก็บรุ่นที่ติดตั้งไว้ในปัจจุบันของคุณ)

--force-confold: do not modify the current configuration file, the new version is installed with a .dpkg-dist suffix. With this option alone, even configuration files that you have not modified are left untouched. You need to combine it with --force-confdef to let dpkg overwrite configuration files that you have not modified.
--force-confnew: always install the new version of the configuration file, the current version is kept in a file with the .dpkg-old suffix.
--force-confdef: ask dpkg to decide alone when it can and prompt otherwise. This is the default behavior of dpkg and this option is mainly useful in combination with --force-confold.
--force-confmiss: ask dpkg to install the configuration file if it’s currently missing (for example because you have removed the file by mistake).

คำเตือน - ไฟล์การกำหนดค่าที่แก้ไขแล้วบางอย่างสามารถทำลายระบบของคุณได้หากถูกเก็บไว้ไม่เข้ากันกับเวอร์ชั่นแพ็คเกจที่อัปเดต โปรดทดสอบก่อนที่จะปรับใช้ในโซลูชันอัตโนมัติ


5

ถ้าคุณอย่างไม่ต้องการที่จะตอบคำถามแบบโต้ตอบใด ๆ จากนั้นตั้งค่าตัวแปรปลายด้านหน้าไปDEBIAN_FRONTENDnoninteractive

DEBIAN_FRONTEND=noninteractive apt-get upgradeนี้อาจจะเป็นเรื่องง่ายเหมือน

คุณจะไม่ได้รับข้อความและจะเลือกค่าเริ่มต้น ในกรณีส่วนใหญ่นี่หมายถึงไฟล์การกำหนดค่าของคุณจะไม่เปลี่ยนแปลงและคุณจะถูกทิ้งให้อยู่กับไฟล์ชื่อเช่น*.dpkg-newสำหรับทุกสถานที่ที่ไฟล์การกำหนดค่านั้นไม่ถูกแตะต้อง จากนั้นคุณสามารถแก้ไขการเปลี่ยนแปลงด้วยตนเองหรือผลักดันการกำหนดค่าท้องถิ่นของคุณไปยังระบบโดยใช้ระบบการจัดการการกำหนดค่าหรืออะไรก็ตาม

ประการที่สองฉันไม่รู้ด้วยซ้ำว่าคำตอบที่ถูกต้องสำหรับคำถามควรเป็นอะไร

กดปุ่มDจะแสดงความแตกต่างซึ่งคุณสามารถตรวจสอบ หากคุณแน่ใจว่าคุณไม่เคยเปลี่ยนไฟล์ด้วยตนเองการเลือกYเพื่อแทนที่มันอาจจะปลอดภัย (คุณได้ตรวจสอบการสำรองข้อมูลของคุณอัพเกรดRIGHT !! ) การเลือกNเพียงแค่เก็บไฟล์เก่าซึ่งปลอดภัย 95% ของเวลายกเว้นว่าแพ็คเกจจะมีการเปลี่ยนแปลงที่สำคัญซึ่งมักจะกล่าวถึงในบันทึกการเปลี่ยนแปลง / บันทึกย่อประจำรุ่นที่คุณได้อ่านก่อนที่คุณจะรันคำสั่งอัพเกรด / dist-upgrade

ที่ผ่านมานั้นลองคำสั่งก่อนในสภาพแวดล้อมการทดสอบของคุณ ดูว่าสิ่งต่าง ๆ ใช้ไม่ได้หรือไม่ หากคุณไม่แน่ใจว่าจะได้รับความแตกต่างและอ่านเอกสารประกอบสำหรับแพคเกจและการวิจัย


คุณแนะนำ DEBIAN_FRONTEND = แบบไม่โต้ตอบมากกว่า - บังคับ - ใช่หรือไม่ ดูเหมือนว่าค่าเริ่มต้นจะไม่ใช่และ "ใช่" มีแนวโน้มที่จะถูกต้องมากกว่าในกรณีนี้ (ฉันไม่สามารถกดปุ่มใด ๆ ได้เนื่องจากไม่มี stdin)
Mojo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.