۱. نصب و فعالسازی
sudo apt install -y unattended-upgrades apt-listchanges needrestart
sudo dpkg-reconfigure -plow unattended-upgrades
cat /etc/apt/apt.conf.d/20auto-upgradesخروجی باید این دو خط باشد:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";۲. چه چیزی نصب شود
در /etc/apt/apt.conf.d/50unattended-upgrades بخش Origins-Pattern بهطور پیشفرض مخزن امنیتی و بهروزرسانیهای نقطهای را دارد. روی سرورهای حساس فقط مخزن امنیتی را نگه دارید و بقیه را comment کنید:
Unattended-Upgrade::Origins-Pattern {
"origin=Debian,codename=${distro_codename},label=Debian-Security";
"origin=Debian,codename=${distro_codename}-security,label=Debian-Security";
// "origin=Debian,codename=${distro_codename}-updates";
};بستههایی که نباید خودکار بهروز شوند (مثلاً پایگاه دادهای که ارتقایش برنامهریزی میخواهد):
Unattended-Upgrade::Package-Blacklist {
"postgresql-";
"mariadb-server";
};۳. راهاندازی مجدد و پاکسازی
وصلهی هسته فقط بعد از راهاندازی مجدد اعمال میشود. یک پنجرهی زمانی آرام انتخاب کنید:
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-WithUsers "false";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";روی سرورهای خوشهای، زمان راهاندازی مجدد اعضا را متفاوت بگذارید تا همه با هم خاموش نشوند.
۴. گزارش ایمیلی
اگر سرور ایمیل ارسال میکند (مثلاً با Postfix بهصورت relay):
Unattended-Upgrade::Mail "ops@sahor.ir";
Unattended-Upgrade::MailReport "on-change";۵. آزمایش
sudo unattended-upgrade --dry-run --debug 2>&1 | tail -30
systemctl list-timers 'apt-daily*'۶. پیگیری
less /var/log/unattended-upgrades/unattended-upgrades.log
ls /var/run/reboot-required 2>/dev/null && cat /var/run/reboot-required.pkgs
sudo needrestart -r l # list services that still run old librariesneedrestart سرویسهایی را که هنوز کتابخانهی قدیمی و آسیبپذیر را در حافظه دارند پیدا میکند. حتی بدون راهاندازی مجدد کل سرور، این سرویسها را باید یک بار restart کرد.