ماذا تفعل هذه الوحدة #
في كل مرة تُشغِّل خادمًا عليك تجهيز الأساس المرجعي: تثبيت التحديثات المعلّقة، وتحديد اللغة التي تتحدّث بها البرامج، وضبط المنطقة الزمنية الصحيحة، ومنح الجهاز اسمًا، والتأكّد من أن الساعة في وقتها. مهام صغيرة لكنها متكرّرة، ولكلٍّ منها أمر Linux خاصّ بصياغته الخاصّة.
تجمع وحدة os كل ذلك خلف واجهة متماسكة. فهي تُحدِّث النظام (أو الجزء الأمني فقط) وتخبرك ما إذا كانت إعادة التشغيل لازمة؛ وتُفعِّل الترقيات غير المراقَبة لتُطبَّق التحديثات الأمنية تلقائيًّا؛ وتضبط الإعدادات المحلية والمنطقة الزمنية واسم المضيف بشكل ثابت النتيجة (idempotent)؛ وتدير مزامنة NTP كي لا ينحرف الوقت أبدًا. كل إجراء آمن للتكرار: فإن كان في الحالة المرغوبة أصلًا، لم يمسّ شيئًا.
الأوامر الفرعية التي تغيّر شيئًا (التحديث، ضبط الإعدادات المحلية، المنطقة الزمنية، اسم المضيف أو NTP) تكتب في النظام وتحتاج صلاحيات root: نفّذها بـ sudo. أما التي تستعلم فقط (status، list، check) فلا تتطلّبها.
المهام الشائعة #
اختر ما تريد فعله. تأتي كل وصفة بالأمر مكتوبًا بالفعل — ما عليك إلا استبدال القيم المثالية بقيمك والضغط على نسخ.
1
اعرض التحديثات وطبّقها
تحقّق مما هو معلّق وحدِّث في لمح البصر.
انظر أولًا إلى الحالة العامة وما التحديثات المنتظرة:
$ imaxe os status
$ imaxe os checkطبّق ما هو معلّق. إن أردت الأمنية فقط وأن يُعيد التشغيل عند اللزوم، أضِف الرايات:
$ sudo imaxe os update --security-only --reboot-if-neededimaxe os reboot-required (رمز الخروج 0 = نعم، لازمة).2
ضع التحديثات الأمنية على الطيار الآلي
دع التحديثات الأمنية تُطبَّق من تلقاء نفسها دون أن تراقبها.
فعِّل الترقيات غير المراقَبة. يولّد ذلك إعداد unattended-upgrades نيابةً عنك:
$ sudo imaxe os autoupdate enableتأكّد من أنها مُفعَّلة ومتى يكون التشغيل التالي:
$ imaxe os autoupdate statussudo imaxe os autoupdate disable.3
اضبط المنطقة الزمنية والوقت
اضبط منطقة IANA لديك وتأكّد من أن الساعة تتزامن عبر NTP.
إن لم تتذكّر الاسم الدقيق لمنطقتك، فرشّحه أولًا:
$ imaxe os timezone list Europeاضبط المنطقة (ثابتة النتيجة) وفعِّل مزامنة الوقت:
$ sudo imaxe os timezone set Europe/Madrid
$ sudo imaxe os timesync enableimaxe os timesync status.4
اضبط لغة النظام
حدِّد الـ LANG وولِّد الإعداد المحلي إن لم يكن موجودًا بعد.
اضبط لغة النظام. يولّد الأمر الإعداد المحلي ويثبّت حزمة locales إن كانت مفقودة:
$ sudo imaxe os locale set es_ES.UTF-8تحتاج لغات أخرى متاحة دون تغيير الـ LANG؟ ولِّدها على حدة:
$ sudo imaxe os locale generate es_ES.UTF-8 en_US.UTF-8imaxe os locale status.5
غيّر اسم الجهاز
اضبط اسم مضيف واضحًا وأبقِ /etc/hosts متسقًا.
/etc/hosts متسقًا.عيّن اسم المضيف. يُسمح بالحروف والأرقام والشرطات فقط، حتى 63 حرفًا:
$ sudo imaxe os hostname set web-01/etc/hosts ليطابقه. تحقّق منه بـ imaxe os hostname status.إن كانت النسخة مُدارة بـ cloud-init، فقد يعيد كتابة اسم المضيف في كل إقلاع. لذلك يترك os.yml حقل hostname فارغًا افتراضيًّا: لا تضبطه إلا إن كنت واثقًا أن cloud-init لن يطمسه.
صيغة الاستخدام #
imaxe os <subcomando> [<acción>] [<argumento>...] [flags]الأوامر الفرعية التي تغيّر النظام (التحديث، الترقيات غير المراقَبة، الإعدادات المحلية، المنطقة الزمنية، اسم المضيف، NTP) تتطلّب صلاحيات root (استخدم sudo). أضِف --json إلى أي status أو check للحصول على مخرجات مقروءة آليًّا، صالحة لكتابة السكربتات.
الأوامر الفرعية #
| الأمر الفرعي | ماذا يفعل | الإجراءات / الرايات |
|---|---|---|
| status | ملخّص حالة تحديث النظام. | --json |
| update | يطبّق التحديثات المعلّقة الآن. | --security-only, --reboot-if-needed |
| check | يسرُد التحديثات المعلّقة دون تطبيقها. | --json |
| reboot-required | يشير إلى ما إذا كانت إعادة التشغيل معلّقة (الخروج 0 = نعم، 1 = لا). | --json |
| autoupdate | يدير التحديثات التلقائية غير المراقَبة. | enable · disable · status |
| locale | يدير الإعداد المحلي للنظام (يولّد ويثبّت ما يلزم). | status · list · set · generate |
| timezone | يعرض أو يغيّر المنطقة الزمنية للنظام. | status · list · set |
| hostname | يعرض أو يغيّر اسم المضيف (متسقًا مع /etc/hosts). | status · set |
| timesync | يدير مزامنة الوقت (NTP). | status · enable · disable |
الوسائط والرايات #
| الوسيطة / الراية | النوع | أين تنطبق | الوصف |
|---|---|---|---|
| --json | bool | status · check | يُصدر النتيجة بصيغة JSON مُهيكَل في stdout، صالح لكتابة السكربتات. |
| --security-only | bool | update | يطبّق التحديثات الأمنية فقط. |
| --reboot-if-needed | bool | update | يعيد التشغيل تلقائيًّا إن تطلّب النظام ذلك بعد التحديث. |
| <locale> مطلوب | string… | locale set · locale generate | الإعداد المحلي بصيغة es_ES.UTF-8. في set يكون واحدًا (الـ LANG للنظام)؛ وفي generate واحد أو أكثر للتوليد. |
| <zona> مطلوب | string | timezone set | المنطقة الزمنية بمعيار IANA، مثلًا Europe/Madrid. |
| <filtro> | string | timezone list | مرشّح اختياري لتضييق سرد المناطق (مثلًا Europe). |
| <nuevo> مطلوب | string | hostname set | اسم مضيف جديد: أحرف صغيرة a-z، أرقام 0-9 وشرطات، بحدّ أقصى 63 حرفًا. |
الملفات والمسارات #
| المسار | المحتوى |
|---|---|
| /etc/imaxe/os.yml | إعداد الوحدة: الترقيات غير المراقَبة، سياسة التحديث، الإعداد المحلي، المنطقة الزمنية، اسم المضيف وNTP. |
| /var/log/imaxe/os.log | سجلّ مُهيكَل لكل تحديث وتغيير في إعداد النظام. |
| /etc/apt/apt.conf.d/20auto-upgrades | إعداد يولّده autoupdate enable لتفعيل الترقيات غير المراقَبة. |
| /etc/apt/apt.conf.d/50unattended-upgrades | قواعد unattended-upgrades (ما يُحدَّث، نافذة إعادة التشغيل، قائمة الاستثناء). |
مثال على os.yml:
unattended:
enabled: true
security_only: true
automatic_reboot: false
automatic_reboot_time: "03:00"
blacklist: []
update:
default_security_only: false
locale:
lang: es_ES.UTF-8
generate: [es_ES.UTF-8, en_US.UTF-8]
timezone: Europe/Madrid
hostname: ""
ntp:
enabled: trueالحقول الفارغة ("") تعني «لا تمسّ»: تترك الوحدة ذلك الإعداد كما هو بالضبط. لذلك يأتي hostname فارغًا — عادةً ما تديره النسخة عبر cloud-init.
رموز الخروج والسجلّات #
يعيد كل تنفيذ رمزًا يمكنك فحصه بـ echo $? — مفيد للتسلسل في السكربتات:
يستخدم reboot-required رمز الخروج جوابًا له: 0 يعني «نعم، إعادة التشغيل لازمة» و1 يعني «لا». هكذا يمكنك تسلسله مباشرةً في سكربت دون تحليل نصّ.
تابِع السجلّ مباشرةً أثناء تصحيح الأخطاء:
$ sudo tail -f /var/log/imaxe/os.logحل المشكلات #
| العَرَض | السبب المحتمل | الحل |
|---|---|---|
| يظهر USAGE (الرمز 2) | وسيطة مطلوبة ناقصة (locale أو المنطقة أو اسم المضيف) أو الصيغة غير صالحة. | راجِع جدول الوسائط: يسمح اسم المضيف بـ a-z0-9 والشرطات فقط (≤63). |
| يعود اسم المضيف إلى سابقه بعد إعادة التشغيل | يعيد cloud-init كتابة اسم المضيف في كل إقلاع. | عطِّل إدارة اسم المضيف في cloud-init، أو اترك الحقل في os.yml فارغًا ولا تضبطه يدويًّا. |
locale set بطيء أو يفشل | حزمة locales غير موجودة ويجب تثبيتها/توليدها. | أعِد المحاولة والنظام محدَّث (imaxe os update)؛ تثبّت الوحدة locales وتولّد الإعداد المحلي بنفسها. |
| الوقت لا يزال غير مضبوط | مزامنة NTP معطّلة. | فعِّلها بـ sudo imaxe os timesync enable وتحقّق بـ imaxe os timesync status. |
| الترقيات غير المراقَبة لا تُطبَّق | لم تُفعَّل الترقيات غير المراقَبة على هذا الجهاز قط. | نفّذ sudo imaxe os autoupdate enable وتأكّد بـ imaxe os autoupdate status. |
هل واجهتك مشكلة مع وحدة النظام؟
راسلنا مرفقًا مخرجات «imaxe <module> status --json» وسنرد عليك بسرعة.