Sudo apt-get upgrade
cài đặt tất cả các bản cập nhật, không chỉ cập nhật bảo mật. Tôi biết rằng tôi có thể sử dụng Trình quản lý cập nhật để chỉ chọn các cập nhật bảo mật quan trọng, nhưng có cách nào để thực hiện việc này từ dòng lệnh không?
Gói không giám sát-nâng cấp cung cấp chức năng để tự động cài đặt các bản cập nhật bảo mật.
Bạn có thể sử dụng phần này, nhưng thay vì định cấu hình phần tự động, bạn có thể gọi nó bằng tay:
Sudo unattended-upgrade -d --dry-run
Sudo unattended-upgrade -d
Thay vào đó, nếu bạn muốn chạy nó một cách lặng lẽ:
Sudo unattended-upgrade
LƯU Ý: Khi bạn gọi nâng cấp không giám sát, bạn sẽ bỏ "s" ở cuối.
Điều này giả định rằng gói được cài đặt theo mặc định, có lẽ là như vậy. Nếu không, chỉ cần làm:
Sudo apt-get install unattended-upgrades
Xem thêm /usr/share/doc/unattended-upgrades/README.md
.
Điều này áp dụng cho cả Debian và Ubuntu, nhưng các hướng dẫn cụ thể hơn cho Ubuntu tuân theo.
Chỉ hiển thị cập nhật bảo mật:
apt-get -s dist-upgrade |grep "^Inst" |grep -i securi
hoặc là
Sudo unattended-upgrade --dry-run -d
hoặc là
/usr/lib/update-notifier/apt-check -p
Hiển thị tất cả các gói có thể nâng cấp
apt-get -s dist-upgrade | grep "^Inst"
Chỉ cài đặt cập nhật bảo mật
apt-get -s dist-upgrade | grep "^Inst" |
grep -i securi | awk -F " " {'print $2'} |
xargs apt-get install
Ghi chú:
Đôi khi Ubuntu hiển thị các cập nhật bảo mật như thể chúng đến từ kho lưu trữ cập nhật $ phát hành. Điều này là như vậy, tôi đã nói, bởi vì các nhà phát triển Ubuntu Đẩy các bản cập nhật bảo mật lên kho lưu trữ cập nhật $ phát hành cũng như để tăng tốc độ sẵn có của họ.
Nếu đó là trường hợp, bạn có thể làm như sau để chỉ hiển thị cập nhật bảo mật:
Sudo sh -c 'grep ^deb /etc/apt/sources.list |
grep security > /etc/apt/sources.security.only.list'
và
apt-get -s dist-upgrade -o Dir::Etc::SourceList=/etc/apt/sources.security.only.list -o Dir::Etc::SourceParts=/dev/null |
grep "^Inst" | awk -F " " {'print $2'}
Kiểm tra những dịch vụ cần được khởi động lại sau khi nâng cấp gói. Chỉ ra các gói bạn sẽ nâng cấp trước và lên lịch khởi động lại/khởi động lại. Vấn đề ở đây là trừ khi bạn khởi động lại dịch vụ, nó vẫn có thể sử dụng phiên bản cũ hơn của thư viện (lý do phổ biến nhất) được tải vào bộ nhớ trước khi bạn cài đặt gói mới khắc phục lỗ hổng bảo mật hoặc bất cứ điều gì.
checkrestart -v
Tuy nhiên, hãy nhớ rằng checkrestart
có thể liệt kê các quy trình không nhất thiết phải được khởi động lại. Ví dụ: dịch vụ PostgreSQL có thể lưu trong bộ nhớ tham chiếu đến tệp xlog đã bị xóa, đây không phải là lý do hợp lệ để khởi động lại dịch vụ.
Do đó, một cách khác, đáng tin cậy hơn, để kiểm tra điều này bằng cách sử dụng các tiện ích tiêu chuẩn là tập lệnh bash nhỏ sau đây mà tôi đã lấy cắp một cách đáng xấu hổ từ https://locallost.net/?p=2
Nó kiểm tra xem các tiến trình đang chạy trên một hệ thống có còn sử dụng các thư viện bị xóa hay không bằng cách giữ các bản sao của chúng trong bộ nhớ hoạt động.
ps xh -o pid |
while read PROCID; do
grep 'so.* (deleted)$' /proc/$PROCID/maps 2> /dev/null
if [ $? -eq 0 ]; then
CMDLINE=$(sed -e 's/\x00/ /g' < /proc/$PROCID/cmdline)
echo -e "\tPID $PROCID $CMDLINE\n"
fi
done
thay thế /etc/apt/preferences
bằng cách sau:
Package: *
Pin: release a=lucid-security
Pin-Priority: 500
Package: *
Pin: release o=Ubuntu
Pin-Priority: 50
bây giờ, một apt-get upgrade
đơn giản sẽ chỉ nâng cấp tất cả các cập nhật bảo mật.
Tại sao (và làm thế nào) điều này hoạt động: Tệp tùy chọn sẽ ghim tất cả các gói từ phân phối Ubuntu sang mức ưu tiên 50, điều này sẽ khiến chúng ít được mong muốn hơn các gói đã cài đặt. Các tệp có nguồn gốc từ kho lưu trữ bảo mật được ưu tiên mặc định (500) để chúng được xem xét để cài đặt. Điều này có nghĩa là chỉ các gói được coi là mong muốn hơn các gói hiện được cài đặt là các bản cập nhật bảo mật. Thông tin thêm về ghim trong apt_preferences manpage .
Bạn có thể tạm thời quảng cáo một bản phân phối nhất định cho các bản cập nhật với tùy chọn --target-release
hoạt động với apt-get
và aptitude
(ít nhất) sẽ cho phép bạn ghim các bản phát hành nhất định để chúng đủ điều kiện nâng cấp.
Nếu bạn chỉ muốn sử dụng điều này cho các tập lệnh và không làm cho nó mặc định cho hệ thống, bạn có thể đặt các quy tắc vào một số vị trí khác và sử dụng điều này thay thế:
apt-get -o Dir::Etc::Preferences=/path/to/preferences_file upgrade
Điều này sẽ làm cho apt tìm tệp ưu tiên từ một vị trí không mặc định.
Tệp tùy chọn được cung cấp dưới dạng ví dụ không áp dụng cho kho lưu trữ của bên thứ ba, nếu bạn muốn ghim chúng quá mức, bạn có thể sử dụng apt-cache policy
để dễ dàng xác định các khóa cần thiết để ghim.
Những điều sau đây được xác nhận trong Ubuntu 14.04 LTS.
Sử dụng gói unattended-upgrade
.
Nhìn vào tệp /etc/apt/apt.conf.d/50unattended-upgrades
. Cần có một phần ở trên cùng là:
// Automatically upgrade packages from these (Origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
Lưu ý cách nó được cấu hình để chỉ cho phép nâng cấp không giám sát cho các gói bảo mật, theo mặc định.
Sửa đổi tệp /etc/apt/apt.conf.d/10periodic
tương tự:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
Điều này sẽ chạy nâng cấp bảo mật tự động không giám sát, một lần mỗi ngày.
Bây giờ, để chạy thủ công: Sudo unattended-upgrade
.
Để kiểm tra dưới dạng chạy khô, không cần làm gì: Sudo unattended-upgrade --dry-run
.
Nguồn: https://help.ubfox.com/14.04/serverguide/automatic-updates.html
Mặc dù nó khá xấu, nhưng bạn có thể vô hiệu hóa tất cả các kho lưu trữ ngoài kho lưu trữ bảo mật và sau đó thực hiện:
Sudo apt-get update && Sudo apt-get upgrade
Tôi đã không kiểm tra nó, nhưng trên lý thuyết, nó sẽ chỉ tìm thấy các bản cập nhật trong repo bảo mật và áp dụng chúng ...
apt-get update
: chỉ cần đọc các mục trong kho lưu trữ - theo danh sách hiện có. Cần kiểm tra những gì mới.apt-get upgrade
: tất cả các bản cập nhật cho các gói đã cài đặt không có mô-đun hạt nhân. Không có bản cập nhật phát hành.apt-get dist-upgrade
: tất cả các bản cập nhật cho các gói đã cài đặt cũng với các mô-đun hạt nhân. Không có bản cập nhật phát hành.apt-get
với tham số -s
: chỉ kiểm tra, không có thay đổi nào được thực hiện.Trên Debians tôi sử dụng lệnh này để chỉ cập nhật bảo mật:
apt-get install -y --only-upgrade $( apt-get --just-print upgrade | awk 'tolower($4) ~ /.*security.*/ || tolower($5) ~ /.*security.*/ {print $2}' | sort | uniq )
Tôi không thể tìm thấy tùy chọn trong apt-get hoặc aptitude, tuy nhiên ai đó có cùng câu hỏi trên SuperUser. Câu trả lời duy nhất là:
Check and adjust /etc/apt/apt.conf.d/50unattended-upgrade.
Did you replace 'karmic' with the code name of your Ubuntu?
Không trả lời cho dù điều đó làm việc tuy nhiên.