Product SiteDocumentation Site

6.8. بروزرسانی‌های خودکار

از آنجایی که شرکت فالکوت تعداد زیادی رایانه به همراه نیروی انسانی محدود دارد، مدیرسیستم‌های آن تلاش دارند تا فرآیند بروزرسانی را تا آنجا که ممکن است خودکار سازند. برنامه‌هایی که برای این فرآیند لازم هستند باید بدون دخالت انسان اجرا شوند.

6.8.1. پیکربندی dpkg

همانطور که قبلا اشاره کردیم (قسمت مطالعه بیشتر پیشگیری از پرسش‌های فایل پیکربندی را مشاهده کنید)، dpkg می‌تواند طوری تنظیم شود که برای تغییر یک گزینه پیکربندی نیازی به تاییدیه کاربر نداشته باشد (با استفاده از گزینه --force-confdef --force-confold). این تعامل، می‌تواند سه منبع دیگر نیز داشته باشد: برخی از خود APT می‌آیند، برخی توسط debconf مدیریت می‌شوند و برخی نیز در خط فرمان با استفاده از اسکریپت‌های پیکربندی صورت می‌پذیرند.

6.8.2. پیکربندی APT

در مورد APT اینکار به سادگی صورت می‌گیرد: گزینه -y (یا --assume-yes) به APT می‌گوید پاسخ تمام پرسش‌ها را مثبت فرض کند.

6.8.3. پیکربندی debconf

در مورد debconf جزئیات بیشتری لازم است. این برنامه، در حقیقت برای کنترل میزان ارتباط و حجم پرسش‌های مربوط به یک بسته از کاربر به همراه چگونگی نحوه نمایش آن طراحی شده است. به همین دلیل است که پیکربندی آن نیازمند تعیین اولویت برای پرسش‌ها است؛ تنها پرسش‌هایی که بالاتر از حداقل اولویت تعریف شده باشند، نمایش می‌یابند. debconf برای پرسش‌هایی که تصمیم به نشان دادنشان ندارد از پاسخ پیش‌فرض (که نگهدارنده بسته تعریف کرده است) استفاده می‌کند.
عنصر مرتبط پیکربندی دیگر، رابطی است که توسط برنامه استفاده می‌شود. اگر گزینه noninteractive را انتخاب کنید، تمام تعاملات با کاربر غیر فعال می‌شود. اگر بسته‌ای تلاش کند که اطلاعات مهمی را به کاربر نشان دهد، از طریق ایمیل به مدیرسیستم اطلاع داده می‌شود.
برای پیکربندی مجدد debconf، از ابزار dpkg-reconfigure موجود در بسته debconf استفاده کنید؛ دستور مورد نظر عبارت است از dpkg-reconfigure debconf. نکته اینکه مقادیر تنظیم‌شده به صورت موقت می‌توانند با استفاده از متغیرهای محیطی هر زمان که لازم باشد، تغییر یابند (برای نمونه متغیر DEBIAN_FRONTEND رابط کاربری را کنترل می‌کند که مستندات آن در debconf(7) آمده است).

6.8.4. مدیریت شیوه تعامل با خط فرمان

آخرین منبع تعاملات و دشوارترین آن‌ها تنظیم، اسکریپت‌های پیکربندی هستند که توسط dpkg اجرا می‌شوند. متاسفانه روش استاندارد و پاسخ سراسری برای مدیریت آن‌ها وجود ندارد.
رویکرد متداول برای جلوگیری از ورودی استاندارد، فرستادن محتوای خالی /dev/null به سمت آن با استفاده از دستور command </dev/null است یا استفاده از تعداد نامحدودی newline. هیچ یک از این شیوه‌ها ۱۰۰٪ قابل اعتماد نیستند، اما معمولا منجر به استفاده از پاسخ پیش‌فرض می‌گردند چرا که اکثر اسکریپت‌ها عدم پاسخ به پرسش‌ها را به منزله پاسخ پیش‌فرض می‌دانند.

6.8.5. ترکیب جادویی

با ترکیب عناصر پیشین، امکان طراحی یک اسکریپت کوچک که توانایی مدیریت بروزرسانی‌های خودکار را داشته باشد، وجود دارد.

مثال 6.4. اسکریپت غیر-تعاملی بروزرسانی

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