أوبونتو

التحديثات التلقائية unattended-upgrades في Ubuntu Server 24.04: الإعدادات الافتراضية والمصادر وإعادة التشغيل والتقارير والسجلات

ما الذي يحدّثه Ubuntu 24.04 تلقائياً، وكيف تضيف مصادر وتستثني حزماً وتجدول إعادة التشغيل وتستقبل التقارير وتقرأ السجلات.

تاريخ النشر
مدة القراءة
6 دقائق
الكاتب
SKYLINE Engineering

يثبّت Ubuntu Server التحديثات الأمنية تلقائياً عبر الحزمة unattended-upgrades. ويكتفي كثير من مسؤولي الأنظمة بهذه المعلومة، ثم يفاجَؤون بأن مستودعاً خارجياً لم يُحدَّث قط، أو بأن إصلاحاً للنواة انتظر أسابيع حتى تُعاد تشغيل الخادم. يستعرض هذا الدليل ما يفعله Ubuntu 24.04 LTS افتراضياً وكيف تضبطه، استناداً إلى توثيق Ubuntu Server وصفحة الدليل unattended-upgrade(8).

ما الذي يحدث افتراضياً

  • الحزمة unattended-upgrades مثبّتة افتراضياً، والتثبيت التلقائي للتحديثات الأمنية مفعّل، بما في ذلك الصيانة الأمنية الموسّعة (ESM) إذا كانت متاحة على النظام.
  • تعمل مرة واحدة يومياً، ويشغّلها مؤقّتان في systemd هما apt-daily.timer (لتحديث قوائم الحزم) وapt-daily-upgrade.timer (للتثبيت) مع تأخير عشوائي.
  • يتحكم الملف /etc/apt/apt.conf.d/20auto-upgrades في تفعيلها أو إيقافها، ويحتوي الملف /etc/apt/apt.conf.d/50unattended-upgrades على إعدادات سلوكها.
  • يُسجَّل كل تشغيل في /var/log/unattended-upgrades/unattended-upgrades.log، ومخرجات dpkg في الملف unattended-upgrades-dpkg.log في المجلد نفسه.
  • لا تعيد تشغيل الخادم افتراضياً، حتى لو طلب التحديث ذلك.

تأكد من أنها تعمل فعلاً

cat /etc/apt/apt.conf.d/20auto-upgrades
# expected:
# APT::Periodic::Update-Package-Lists "1";
# APT::Periodic::Unattended-Upgrade "1";

# effective settings after all apt.conf.d files are merged
apt-config dump | grep -E 'Periodic|Unattended-Upgrade'

# when the timers last ran and will run next
systemctl list-timers 'apt-daily*'

# what the last runs did
sudo tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log

القيم في 20auto-upgrades عدد أيام: القيمة 1 تعني يومياً، والقيمة 0 توقف الخطوة.

من أين تأتي التحديثات: Allowed-Origins

تغطي قائمة Allowed-Origins الافتراضية في 50unattended-upgrades الإصدار نفسه وقسم -security وقسمَي الأمان في ESM. أما سطر -updates (تحديثات إصلاح الأخطاء العادية) فهو معطّل بتعليق، وكذلك -proposed و-backports:

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}";
    "${distro_id}:${distro_codename}-security";
    "${distro_id}ESMApps:${distro_codename}-apps-security";
    "${distro_id}ESM:${distro_codename}-infra-security";
//  "${distro_id}:${distro_codename}-updates";
};

والمفاجأة الأكثر شيوعاً: إضافة مستودع إلى apt لا تجعل unattended-upgrades تستخدمه. فالحزم القادمة من PPA أو من مستودع مورّد (قاعدة بيانات أو بيئة حاويات أو بيئة لغة برمجة) تبقى على إصدارها القديم حتى تحدّثها يدوياً أو تضيف مصدرها. وتجد قيمة Origin في ملف InRelease الخاص بالمستودع، والذي يحفظه apt تحت /var/lib/apt/lists/:

grep -h '^Origin:' /var/lib/apt/lists/*InRelease | sort -u

# then, for example, for a Launchpad PPA:
#   "LP-PPA-canonical-server-server-backports:${distro_codename}";

لا تضف إلا المصادر التي تثق بأنها تنشر تحديثات آمنة، لأنها ستُثبَّت بعد ذلك دون أن يراقبها أحد.

استثناء حزم معينة

يقبل الخيار Unattended-Upgrade::Package-Blacklist تعابير نمطية بلغة Python تُطابَق من بداية اسم الحزمة. فالقيمة "linux-" تمنع كل حزمة يبدأ اسمها بـ linux-، والقيمة "libc6$" تمنع الحزمة libc6 تحديداً:

Unattended-Upgrade::Package-Blacklist {
    "mariadb-server";
    "libc6$";
};

استخدم ذلك باعتدال، فالتوثيق ينبّه إلى أن منع حزمة قد يوقف أيضاً تحديثات أخرى تعتمد عليها، والإصلاح الأمني المؤجَّل يبقى ثغرة مفتوحة. امنع الحزمة فقط ريثما تجهّز ترقية يدوية، لا بشكل دائم.

إعادة تشغيل تلقائية في نافذة ثابتة

عندما يطلب تحديثٌ إعادة التشغيل يظهر ملف إشارة في /var/run/reboot-required، ولا تتصرف unattended-upgrades بناءً عليه إلا إذا سمحت لها:

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

يُمرَّر الوقت إلى الأمر shutdown ويُحسب بالمنطقة الزمنية المحلية للخادم، لذا افحصها أولاً بالأمر timedatectl؛ فالخادم الذي يعمل بتوقيت UTC ويعيد التشغيل عند 02:00 سيفعل ذلك عند الساعة 05:00 بتوقيت الرياض. ويمكن إلغاء إعادة تشغيل مجدولة بالأمر sudo shutdown -c. وإلى جانب ذلك، تعيد أداة needrestart في Ubuntu 24.04 تشغيل الخدمات التي تستخدم مكتبات محدَّثة تلقائياً بعد كل تشغيل، فخطط لهذه العمليات أيضاً.

تقارير البريد الإلكتروني

Unattended-Upgrade::Mail "ops@example.com";
Unattended-Upgrade::MailReport "only-on-error";

يقبل الخيار MailReport القيم always أو only-on-error أو on-change (الافتراضية). ولا تُرسل الرسائل إلا إذا كان لدى الخادم إعداد بريد محلي يعمل ويصل إلى خادم بريد. اختبر ذلك، وإلا ضاعت التقارير دون أن تنتبه.

التشغيل التجريبي وتتبّع الأخطاء

sudo unattended-upgrade --dry-run -v
sudo unattended-upgrade --dry-run --debug

يعرض التشغيل التجريبي المصادر المسموح بها وقائمة الاستثناء والحزم التي ستُرقّى، دون أي تغيير. ويكتب الخيار --debug تفاصيل إضافية في السجل. استخدمه بعد كل تعديل في الإعدادات، وخاصة بعد إضافة مصدر جديد.

تغيير موعد التشغيل

لنقل عملية التثبيت إلى ساعة أهدأ، أنشئ تعديلاً على المؤقّت بدلاً من تحرير الوحدة الأصلية. والسطر الفارغ OnCalendar= يمسح الجدول الحالي أولاً، كما توضح صفحة systemd.timer(5):

# same drop-in file that 'systemctl edit' would create
sudo mkdir -p /etc/systemd/system/apt-daily-upgrade.timer.d
printf '[Timer]\nOnCalendar=\nOnCalendar=*-*-* 01:30\n' | sudo tee /etc/systemd/system/apt-daily-upgrade.timer.d/override.conf
sudo systemctl daemon-reload
systemctl list-timers 'apt-daily*'

إذا كان الخادم مطفأً في الموعد المحدد فإن المؤقّت يعوّض التشغيل عند الإقلاع التالي، مما قد يقفل apt لبعض الوقت. ويوثّق Ubuntu الخيار Persistent=false في التعديل نفسه لإيقاف هذا التعويض.

أخطاء شائعة

  • افتراض أن المستودعات الخارجية مشمولة، وهي ليست كذلك ما لم تضف مصدرها.
  • ترك Automatic-Reboot معطلاً مع عدم إعادة التشغيل يدوياً أبداً، فلا تُحمَّل الأنوية الجديدة.
  • ضبط Mail دون إعداد بريد يعمل.
  • امتلاء /boot أو قرص الجذر بما يوقف الترقيات. ويوجد في المشروع خيار Remove-Unused-Kernel-Packages لحذف الأنوية القديمة، فتأكد من أنه غير معطّل.
  • حزم مؤجَّلة لأن dpkg سيسأل عن ملف إعدادات معدَّل؛ فالأداة تفحص هذه الأسئلة وتتخطى تلك الحزم، لذا راجع السجل بحثاً عن أي حزمة مؤجَّلة.

ما الذي ينبغي فعله

  • تأكد في كل خادم من أن القيمتين في 20auto-upgrades تساويان 1، ومن أن المؤقّتات عملت مؤخراً.
  • اجمع قائمة بمستودعاتك الخارجية وقرّر لكل منها: إما إضافة مصدره، أو تحديثه في نافذة مخططة.
  • اختر سياسة لإعادة التشغيل: تلقائية في وقت محلي ثابت، أو يدوية في نافذة أسبوعية، لكن ليس «أبداً».
  • فعّل تقارير البريد أو أرسل محتوى /var/log/unattended-upgrades/ إلى نظام المراقبة، وراجع الحزم المؤجَّلة.
  • شغّل unattended-upgrade --dry-run -v بعد كل تعديل على 50unattended-upgrades.

المصادر

SKYLINE Engineering

@skyline

The engineering team at SKYLINE Industrial Solutions. We publish field-tested guides drawn from real KSA and GCC deployments.

صفحة الكاتب
SKYLINE engineering services

Need this implemented for you?

Reading is free — building it right takes a team. SKYLINE engineers ship Ubuntu for Aramco vendors, banks, hospitals and government agencies across Saudi Arabia. Talk to us before you start.

Aramco Approved Contractor ISO 9001 · ISO 27001 SAMA CSF aligned NCA ECC ready 247+ KSA clients

Comments

0 total · 0 threads
Be the first to leave a comment.