Làm thế nào để tìm số lượng gói cần cập nhật từ dòng lệnh?


34

Tôi đang làm việc trên một số tự động quản trị hệ thống bằng cách sử dụng vải và tôi muốn có thể theo dõi số lượng gói cần nâng cấp trên một máy nhất định. Đây là cùng thông tin mà tôi có thể thấy khi lần đầu tiên đăng nhập vào máy, tức là phần này:

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

Có một lệnh mà tôi có thể chạy (tốt nhất là không có sudo) chỉ cung cấp thông tin đó?

Tôi đã xem xét các ràng buộc apt-python, nhưng chúng dường như có đường cong học tập cao và chúng dường như cũng bị thay đổi rất nhiều - tôi muốn một cái gì đó sẽ hoạt động ít nhất là trở nên sáng suốt mà không cần phải làm những việc khác nhau trên các phiên bản Ubuntu khác nhau.

Câu trả lời:


33

Để có được đầu ra đó, bạn có thể sử dụng lệnh

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

hoặc, nếu bạn không muốn sử dụng sudo,

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

Giải trình

Các loginứng dụng chương trình đầu ra được tìm thấy trong các tập tin /etc/motd, đó là một liên kết tượng trưng đến /var/run/motd.

Tệp cuối cùng này được cập nhật bởi mounted-varrundịch vụ (xem /etc/init/mounted-varrun.conf) gọi tất cả các tập lệnh trong /etc/update-motd.d/và đặc biệt

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

đến lượt nó gọi kịch bản

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

kịch bản này thực thi các hành động khác nhau và cuối cùng ghi đầu ra vào tệp văn bản

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

CHỈNH SỬA

Về phần khởi động lại của câu hỏi, hãy chạy lệnh này

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

nó sẽ không cung cấp đầu ra nếu không cần khởi động lại.


Tôi chỉ đang kiểm tra trên một máy chạy 11.04 và byobu hiển thị 44 bản cập nhật cần thiết. cattrong tập tin bạn đề xuất là trống và tập lệnh mà bạn trỏ đến đầu tiên không tồn tại trên máy này - nó có nằm trong gói nào đó cần được cài đặt không? Tôi có /usr/lib/update-manager, nhưng không có update-notifierthư mục.
KayEss

Đã thử nghiệm trên máy tính để bàn 11.04. Những tệp thuộc về update-notifier-commonđó đã được cài đặt tự động trên bản cài đặt mới (không nâng cấp từ 10.10).
enzotib

Tôi đã xem xét một số máy móc hơn. Đối với những số có /var/lib/update-notifier/apt-checkvẻ như nó trả về hai số, tức là 43; 24 (43 bản cập nhật, 24 là số bảo mật), nhưng ngay cả số đó không xuất hiện trên tất cả các máy của tôi. Tôi cho rằng tập tin này có thể đã di chuyển giữa các gói trong các phiên bản khác nhau.
KayEss

21

Tại sao bạn không thể chạy cái này?

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

Đó là những gì / usr / lib / update-notifier / update-motd-Updates-Available có sẵn để thu thập thông tin, ít nhất là trong phiên bản Ubuntu tôi đang sử dụng (12.10).


Chỉ cần kiểm tra trên Lucid và nó cũng hoạt động ở đó
KayEss

2
Nó ghi đầu ra của nó vào stderr. Ai sẽ làm điều đó?
KayEss

2
Thích cách tiếp cận này vì nó hoàn toàn phụ bước toàn bộ update-motdgói và suy nghĩ của nó. Cảm ơn vì chỉ đưa ra mệnh lệnh trực tiếp.
jefflunt

3

Tôi cũng tìm kiếm một phương pháp theo kịch bản để kiểm tra cập nhật bên trong các thùng chứa docker tối thiểu, khi tôi tìm thấy một nhận xét trong /usr/lib/update-notifier/apt-check:

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

Điều này cho phép kiểm tra cập nhật theo kịch bản mà không cần cài đặt update-notifier-commongói


0

Bạn có thể sử dụng check_aptplugin từ monitoring-plugins-basic( Nagios ), với lợi thế là nhận được các mã trả lại khác nhau tùy thuộc vào việc có cập nhật hay không:

$ /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

Mã trả về có các ý nghĩa sau:

  • 0 -> không có gói nào để nâng cấp
  • 1 -> gói không quan trọng có sẵn để nâng cấp
  • 2 -> cập nhật quan trọng có sẵn

Tài liệu tham khảo:

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.