Product SiteDocumentation Site

6.9. التحديثات الآلية

بما أن شركة فلكوت تملك الكثير من الحواسيب لكن مواردها البشرية محدودة، فإن مدراء النظم فيها يحاولون أتمتة التحديثات قدر الإمكان. بالتالي، يجب أن تعمل البرامج المسؤولة عن هذه العمليات دون تدخل البشر.

6.9.1. إعداد dpkg

As we have already mentioned (see sidebar التعمق أكثر تفادي أسئلة المتعلقة بملفات الضبط), dpkg can be instructed not to ask for confirmation when replacing a configuration file (with the --force-confdef --force-confold options). Interactions can, however, have three other sources: some come from APT itself, some are handled by debconf, and some happen on the command line due to package configuration scripts (sometimes handled by ucf).

6.9.2. إعداد APT

حالة APT بسيطة: يطلب الخيار -y (أو --assume-yes) من APT أن تعتبر الإجابة عن جميع أسئلتها هي ”نعم“.

6.9.3. إعداد debconf

تستحق حالة debconf تفصيلاً أكثر. لقد صُمِّم هذا البرنامج، منذ البداية، للتحكم بكمية ومستوى الأسئلة الموجهة للمستخدم، بالإضافة إلى طريقة عرضها. لهذا فإن إعداده يتطلب تحديد أولوية دنيا للأسئلة؛ وتعرض الأسئلة التي تتجاوز هذه الأولوية الدنيا فقط. يستخدم debconf الإجابة الافتراضية (التي حددها مشرف الحزمة) للأسئلة التي يراد تخطيها.
إن عنصر الضبط الآخر المرتبط بهذا الموضوع هو النمط الذي تستخدمه الواجهة. إذا اخترت noninteractive من بين الخيارات، سيُعطِّل التفاعل مع المستخدم بالكامل. إذا حاولت الحزمة عرض ملاحظة إعلامية، فسوف تُرسِل إلى مدير النظام بالبريد الإلكتروني.
لإعادة ضبط debconf، استخدم أداة dpkg-reconfigure من الحزمة debconf؛ الأمر المطلوب هو dpkg-reconfigure debconf. لاحظ أن القيم المضبوطة يمكن تجاوزها مؤقتاً باستخدام متغيرات البيئة عند الحاجة (مثلاً، يتحكم DEBIAN_FRONTEND بالواجهة، كما هو موثق في صفحة الدليل debconf(7)‎).

6.9.4. معالجة تفاعلات سطر الأوامر

آخر مصدر لطلب التفاعل، وأصعب مصدر للتخلص منه، هو سكربتات الإعداد التي يُشغّلها dpkg. لا يوجد أي حل قياسي للأسف، ولا توجد إجابة أفضل من غيرها.
الطريقة الشائعة هي إغلاق مجرى الدخل القياسي بإعادة توجيهه إلى المحتوى الفارغ للملف /dev/null باستخدام command </dev/null، أو تغذيته بعدد لانهائي من محارف newline. كلا الطريقتين غير مضمونة 100%، لكنها تؤدي عموماً إلى استخدام الإجابات الافتراضية، نظراً لأن معظم السكربتات تعتبر الصمت قبولاً بالقيمة الافتراضية.

6.9.5. الخلطة المعجزة

إذا جمعنا العناصر السابقة، يمكننا تصميم سكربت صغير لكنه موثوق يتولى التحديثات آلياً.

مثال 6.5. سكربت التحديث اللاتفاعلي

export DEBIAN_FRONTEND=noninteractive
yes '' | apt-get -y -o DPkg::options::="--force-confdef" -o DPkg::options::="--force-confold" dist-upgrade