จะค้นหาจำนวนแพ็คเกจที่ต้องการอัพเดทจากบรรทัดคำสั่งได้อย่างไร


34

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

35 packages can be updated.
22 updates are security updates.

มีคำสั่งที่ฉันสามารถเรียกใช้ (โดยเฉพาะอย่างยิ่งโดยไม่ต้องsudo) ที่ให้ข้อมูลเพียงว่า

ฉันดูที่ apt-python bindings แต่ดูเหมือนว่าพวกเขาจะมีช่วงการเรียนรู้ที่สูงและพวกมันก็ดูเหมือนจะเปลี่ยนแปลงไปมาก - ฉันต้องการบางสิ่งที่จะทำงานได้อย่างน้อยไกลที่สุดเท่าที่ชัดเจนโดยไม่จำเป็นต้อง ทำสิ่งต่าง ๆ ใน Ubuntu รุ่นต่าง ๆ

คำตอบ:


33

เพื่อให้ได้ผลลัพธ์นั้นคุณสามารถใช้คำสั่ง

sudo /usr/lib/update-notifier/update-motd-updates-available

หรือหากคุณไม่ต้องการที่จะใช้sudo,

cat /var/lib/update-notifier/updates-available

คำอธิบาย

loginแอพลิเคชันที่แสดงให้เห็นการส่งออกที่พบในไฟล์/etc/motdที่เป็น symbolic link /var/run/motdไป

ไฟล์ล่าสุดนี้ได้รับการปรับปรุงโดยmounted-varrunบริการ (ดู/etc/init/mounted-varrun.conf) เรียกใช้สคริปต์ทั้งหมดใน/etc/update-motd.d/และโดยเฉพาะอย่างยิ่ง

/etc/update-motd.d/90-updates-available

ในทางกลับกันเรียกสคริปต์

/usr/lib/update-notifier/update-motd-updates-available

สคริปต์นี้เรียกใช้การกระทำต่าง ๆ และสุดท้ายเขียนผลลัพธ์ลงในไฟล์ข้อความ

/var/lib/update-notifier/updates-available

แก้ไข

เกี่ยวกับส่วนรีบูตของคำถามให้เรียกใช้คำสั่งนี้

/usr/lib/update-notifier/update-motd-reboot-required

มันจะไม่ให้เอาต์พุตหากไม่จำเป็นต้องบูตเครื่องใหม่


ฉันแค่ตรวจสอบบนเครื่องที่ใช้ 11.04 และ byobu แสดงการอัพเดทที่จำเป็น 44 รายการ catในขณะที่ไฟล์ที่คุณแนะนำว่างเปล่าและสคริปต์ที่คุณชี้ไปไม่มีอยู่ในเครื่องนี้ - เป็นไฟล์ในแพ็คเกจที่ต้องติดตั้งหรือไม่ ฉันมี/usr/lib/update-managerแต่ไม่มีupdate-notifierไดเรกทอรี
KayEss

ทดสอบบนเดสก์ท็อป 11.04 ไฟล์เหล่านั้นเป็นของupdate-notifier-commonที่ถูกติดตั้งโดยอัตโนมัติในการติดตั้งใหม่ (ไม่อัพเกรดจาก 10.10)
enzotib

ฉันดูเครื่องจักรเพิ่มเติม สำหรับผู้ที่มี/var/lib/update-notifier/apt-checkสิ่งนี้ดูเหมือนว่ามันจะส่งกลับตัวเลขสองตัวคือ 43; 24 (43 อัพเดต 43 เป็นความปลอดภัย) แต่ถึงแม้มันจะไม่ปรากฏในเครื่องทั้งหมดของฉัน ฉันคิดว่าไฟล์นี้อาจมีการย้ายระหว่างแพ็คเกจในเวอร์ชันที่แตกต่างกัน
KayEss

21

ทำไมคุณไม่สามารถใช้งานสิ่งนี้ได้?

/usr/lib/update-notifier/apt-check --human-readable

นั่นคือสิ่งที่ / usr / lib / update-notifier / update-motd-updates-available ทำเพื่อรวบรวมข้อมูลอย่างน้อยในเวอร์ชันของ Ubuntu ที่ฉันใช้ (12.10)


เพียงตรวจสอบกับ Lucid และก็สามารถใช้งานได้ที่นั่นเช่นกัน
KayEss

2
มันเขียนเอาต์พุตไปยัง stderr ใครจะทำเช่นนั้น?
KayEss

2
ชอบวิธีการนี้เพราะมันจะทำตามขั้นตอนทั้งหมดของupdate-motdแพ็คเกจและความคิด ขอบคุณที่ให้คำสั่งโดยตรง
jefflunt

3

ฉันยังค้นหาวิธี scripred สำหรับการตรวจสอบการอัปเดตภายในคอนเทนเนอร์ docker น้อยที่สุดเมื่อฉันพบความคิดเห็นใน/usr/lib/update-notifier/apt-check:

apt-get -s -o Debug::NoLocking=true upgrade | grep ^Inst

สิ่งนี้อนุญาตให้มีการตรวจสอบการอัปเดตสคริปต์โดยไม่จำเป็นต้องติดตั้งupdate-notifier-commonแพคเกจ


0

คุณสามารถใช้check_aptปลั๊กอินจากmonitoring-plugins-basic( Nagios ) ด้วยความได้เปรียบในการรับรหัสส่งคืนที่แตกต่างกันขึ้นอยู่กับว่ามีการอัพเดตหรือไม่:

$ /usr/lib/nagios/plugins/check_apt
APT WARNING: 18 packages available for upgrade (0 critical updates). |available_upgrades=18;;;0 critical_updates=0;;;0
$ echo $?
1

รหัสส่งคืนมีความหมายต่อไปนี้:

  • 0 -> ไม่มีแพ็คเกจสำหรับการอัพเกรด
  • 1 -> แพคเกจที่ไม่สำคัญสำหรับการอัปเกรด
  • 2 -> มีการอัปเดตที่สำคัญ

อ้างอิง:

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