Product SiteDocumentation Site

فصل 6. نگهداری و بروزرسانی: ابزار APT

6.1. پر کردن فایل sources.list
6.1.1. شیوه استفاده
6.1.2. مخازنی برای کاربران Stable
6.1.3. مخازنی برای کاربران Testing و Unstable
6.1.4. منابع غیر-رسمی: mentors.debian.net
6.1.5. پروکسی کش برای بسته‌های دبیان
6.2. aptitude, دستورات apt-get و apt
6.2.1. راه‌اندازی
6.2.2. نصب و حذف
6.2.3. بروزرسانی سیستم
6.2.4. گزینه‌های پیکربندی
6.2.5. مدیریت اولویت بسته‌ها
6.2.6. کار با چندین توزیع مختلف
6.2.7. ردیابی خودکار بسته‌های نصب شده
6.3. دستور apt-cache
6.4. رابط‌های کاربری: aptitude و synaptic
6.4.1. aptitude
6.4.2. synaptic
6.5. بررسی صحت بسته‌ها
6.6. بروزرسانی کلی از یک توزیع پایدار به دیگری
6.6.1. فرآیند توصیه‌شده
6.6.2. بررسی مشکلات پس از بروزرسانی کلی
6.7. بروز نگهداشتن یک سیستم
6.8. بروزرسانی‌های خودکار
6.8.1. پیکربندی dpkg
6.8.2. پیکربندی APT
6.8.3. پیکربندی debconf
6.8.4. مدیریت شیوه تعامل با خط فرمان
6.8.5. ترکیب جادویی
6.9. جستجو برای بسته‌ها
آنچه دبیان را بین مدیرسیستم‌ها محبوب ساخته سادگی نصب نرم‌افزار و بروزرسانی کل سیستم است. این برتری اعظم بیشتر به خاطر برنامه APT است، که مدیرسیستم‌های شرکت فالکات با اشتیاق آن را مطالعه کرده‌اند.
APT مخفف Advanced Package Tool است. چیزی که آن را “پیشرفته” ساخته، رویکرد آن به بسته‌ها است. تنها به بررسی انفرادی آن‌ها نمی‌پردازد بلکه مجموعه‌ای از بسته‌ها را در کنار یکدیگر و به عنوان یک سیستم در نظر می‌گیرد و بهترین حالت‌های ممکن در پیکربندی آنان را انتخاب می‌کند (با توجه به وابستگی‌ها).
APT نیازمند دریافت “فهرستی از منابع بسته‌ها” است: فایل /etc/apt/sources.list فهرستی از مخازن (یا “منابع”) که شامل بسته‌های دبیان می‌شود را نمایش می‌دهد. APT به وارد کردن فهرست بسته‌ها با توجه به این منابع می‌پردازد. این عملیات با دانلود Packages.xz یا فایلی مشابه با الگوریتم فشرده‌سازی دیگری محقق می‌شود (مانند Packages.gz یا .bz2 در مورد منبع بسته‌های باینری) و Sources.xz (در مورد منبع بسته‌های سورس) و به تحلیل محتویات آن می‌پردازد. زمانی که کپی قدیمی از این فایل‌ها موجود باشد، APT تنها با دانلود اختلاف بین آن‌ها، عملیات بروزرسانی را انجام می‌دهد (نکته بروزرسانی افزایشی را مشاهده کنید).

6.1. پر کردن فایل sources.list

6.1.1. شیوه استفاده

هر خط فعال از فایل ... شامل توضیحات یک منبع می‌باشد، که از ۳ قسمت جدا شده با فاصله تشکیل شده است.
فیلد اول نوع منبع را مشخص می‌کند:
  • deb” برای بسته‌های باینری،
  • deb-src” برای بسته‌های سورس.
دومین فیلد شامل نشانی منبع فایل است (که با نام‌های موجود در فایل Packages.gz ترکیب شده است و باید یک نشانی کامل و معتبر باشد): این می‌تواند در یک سرور دبیان یا هر آرشیو بسته شخص ثالثی قرار داشته باشد. نشانی می‌تواند با file:// شروع شود که نشان‌دهنده یک منبع محلی در فایل‌سیستم است، با http:// که نشان‌دهنده منبع موجود در یک وب سرور، یا با ftp:// که نشان‌دهنده یک منبع موجود در اف‌تی‌پی سرور است. نشانی همچنین می‌تواند با cdrom:// شروع شود که برای فرآیند نصب با استفاده از CD-ROM، DVD/ROM و Blu-ray مناسب است، با اینکه این مورد کمتر مورد استفاده قرار می‌گیرد چرا که روش‌های نصب با استفاده از شبکه معمول‌تر هستند.
شیوه نگارش فیلد آخر به ساختار مخزن بستگی دارد. در ساده‌ترین حالت‌ها، می‌تواند یک دایرکتوری (به همراه کاراکتر /) از منبع مورد نظر تعریف کنید (که با استفاده از “./” صورت می‌گیرد که نشان‌دهنده غیاب یک دایرکتوری فرزند است - بسته‌ها به صورت مستقیم در نشانی قرار می‌گیرند). اما در معمول‌ترین حالت، مخازن به مانند یک سرور دبیان ساختاردهی می‌شوند، با توزیع‌های جداگانه که هر یک اجزای مربوط به خود را خواهند داشت. در اینگونه موارد، توزیع مورد نظر را نامگذاری کنید (با استفاده از نام مخصوص به آن - قسمت جامعه کاربری بروس پرنس، رهبری بحث‌برانگیز را مشاهده کنید - یا با استفاده از وضعیت آن مانند stable، testing و unstable) سپس اجرا (قسمت‌هایی) که قصد فعال شدنشان را دارید (انتخاب از میان main، contrib و non-free در یک سرور پشتیبان دبیان).
مدخل‌های موجود در cdrom به تشریح CD/DVD-ROM می‌پردازد. بر خلاف سایر مدخل‌ها، یک CD-ROM همیشه در دسترس نیست چرا که باید داخل درایو قرار گیرد و در هر لحظه بیشتر از یک دیسک در آن جای نمی‌گیرد. به همین دلایل، این منابع به شیوه گوناگونی مدیریت می‌شوند و نیاز دارند که با برنامه apt-cdrom اضافه گردند که معمولا از پارامتر add آن استفاده می‌شود. در این مورد، برنامه به دنبال دیسک موجود می‌گردد و از فایل Packages آن استفاده می‌کند. برنامه با استفاده از فایل‌های موجود، پایگاه داده درونی خود را بروزرسانی می‌کند (این عملیات با استفاده از دستور apt update انجام می‌شود). از این لحظه به بعد، APT هر زمان به برنامه‌ای از این فهرست نیاز داشته باشد دیسک مورد نظر آن را درخواست می‌کند.

6.1.2. مخازنی برای کاربران Stable

در اینجا نمونه‌ای از فایل sources.list برای سیستمی که نسخه Stable دبیان را اجرا می‌کند، ارائه می‌شود:

مثال 6.1. فایل /etc/apt/sources.list برای کاربران نسخه پایدار دبیان

# Security updates
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free

## Debian mirror

# Base repository
deb http://ftp.debian.org/debian jessie main contrib non-free
deb-src http://ftp.debian.org/debian jessie main contrib non-free

# Stable updates
deb http://ftp.debian.org/debian jessie-updates main contrib non-free
deb-src http://ftp.debian.org/debian jessie-updates main contrib non-free

# Stable backports
deb http://ftp.debian.org/debian jessie-backports main contrib non-free
deb-src http://ftp.debian.org/debian jessie-backports main contrib non-free
این فایل تمام بسته‌های منطبق با نسخه Jessie از دبیان را فهرست می‌کند (نسخه Stable در ویرایش فعلی). تصمیم گرفتیم که از نام “jessie” بجای “stable” استفاده کنیم (stable-updates، stable و stable-backports) چرا که نمی‌خواهیم در زمان انتشار نسخه پایدار بعدی، توزیع فعلی از کنترل ما خارج گردد.
اکثر بسته‌ها از یک “مخزن پایه” می‌آیند که به ندرت بروزرسانی می‌شود (در حدود هر ۲ ماه یکبار به منظور یک “point release”). سایر مخازن نقش جانبی دارند (شامل تمام بسته‌ها نیستند) و از بروزرسانی‌ها میزبانی می‌کنند (بسته‌هایی با نسخه جدیدتر) که توسط APT نصب می‌شوند. قسمت‌های پیش‌رو به بررسی هدف و قانون هر یک از این مخازن می‌پردازد.
زمانی که نسخه مورد نظر از یک بسته در چند مخزن وجود دارد، اولین مخزنی که در فایل sources.list فهرست شده باشد مورد استفاده قرار می‌گیرد. به همین دلیل، منابع غیر-رسمی همیشه در انتهای فایل قرار می‌گیرند.
به عنوان یک نکته جانبی، اکثر مطالبی که در این قسمت درباره Stable گفته شد به طور یکسان در مورد OldStable نیز صدق می‌کند چرا که آن تنها یک نسخه قدیمی‌تر از Stable است که به صورت موازی مدیریت می‌شود.

6.1.2.1. بروزرسانی‌های امنیتی

بروزرسانی‌های امنیتی به طور معمول در سرورهای mirror دبیان قرار نمی‌گیرند بلکه در security.debian.org (بر روی تعداد کوچکی از ماشین‌ها که توسط مدیر سیستم‌های دبیان مدیریت می‌شوند). این بایگانی شامل بروزرسانی‌های امنیتی (توسط تیم امنیت دبیان یا مدیر بسته‌های مختلف) برای توزیع Stable است.
این سرور همچنین می‌تواند از بروزرسانی‌های امنیتی برای Testing میزبانی کند که این امر خیلی اتفاق نمی‌افتد چرا که این بروزرسانی‌ها اغلب از طریق توزیع Unstable برای Testing ارائه می‌شوند.

6.1.2.2. بروزرسانی‌های پایدار

این دسته به اهمیت بروزرسانی‌های امنیتی نیست اما باید قبل از انتشار نسخه پایدار بعدی، در اختیار کاربران قرار گیرند.
این مخزن به طور معمول شامل اصلاحاتی برای باگ‌های حاد است که نمی‌توانند قبل از انتشار یا بروزرسانی بعدی بازنگری گردند. بر اساس اولویت باگ، این مخزن می‌تواند شامل بسته‌هایی شود که طی مرور زمان کامل می‌گردند ... مانند قواعد شناسایی اسپم در spamassassin، پایگاه‌داده ویروس در clamav یا قواعد منطقه‌زمانی در tzdata .
در عمل، این مخزن زیرمجموعه‌ای از proposed-updates است، که به دقت توسط مدیران انتشار نسخه‌های پایدار انتخاب می‌شوند.

6.1.2.3. بروزرسانی‌های پیشنهادی

زمانی که توزیع Stable منتشر شود، در بازه زمانی ۲ ماه یکبار بروزرسانی می‌گردد. مخزن proposed-updates جایی است که برای برورزسانی‌های مورد انتظار در دوره بعدی تحت نظر مدیران انتشار پایدار تصمیمات مورد نظر گرفته می‌شود.
بروزرسانی‌های امنیتی و پایدار که در قسمت‌های قبل به آن‌ها پرداخته شد، در این مخزن قرار می‌گیرند اما مدیران بسته می‌توانند به رفع باگ‌های مهم که نیاز به انتشار بعدی ندارند، بپردازند.
هر فردی می‌تواند از این مخزن برای تست بروزرسانی‌ها قبل از انتشار رسمی‌شان استفاده کند. عبارت زیر از نام jessie-proposed-updates استفاده می‌کند چرا که پایدارتر از wheezy-proposed-updates به حساب می‌آید و همچنین برای بروزرسانی‌های Oldstable موجود است.
deb http://ftp.debian.org/debian jessie-proposed-updates main contrib non-free

6.1.2.4. بروزرسانی‌های پایدار قدیمی

مخزن stable-backports از “package backports” میزبانی می‌کند. این عبارت به بسته‌ای از یک نرم‌افزار اشاره می‌کند که برای یک توزیع قدیمی‌تر مجدد کامپایل شده است، به صورت عمومی برای Stable.
زمانی که از عمر یک توزیع می‌گذرد، تعداد زیادی از پروژه‌های نرم‌افزاری بروزرسانی‌هایی اعمال می‌کنند که در مخزن Stable قرار ندارد (که اغلب برای مشکلات بحرانی در نظر گرفته شده است، مانند مشکلات امنیتی). از آنجایی که توزیع‌های Testing و Unstable از ریسک بالاتری برای میزبانی از بسته‌ها برخوردارند، مدیران بسته گاهی اوقات اقدام به کامپایل مجدد نرم‌افزار خود در مخزن Stable می‌کنند، که در رابطه با تعداد مشخصی از بسته‌ها پایدار خواهد بود.
مخزن stable-backports هم اکنون در سرورهای mirror دبیان قرار دارد، اما backport برای Squeeze هنوز در یک سرور اختصاصی قرار دارد (backports.debian.org) و نیازمند مدخل زیر در فایل sources.list است:
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
Backport‌‌های موجود در stable-backports همیشه از بسته‌های موجود در توزیع Testing ایجاد می‌شوند. این فرآیند تضمین می‌کند که تمام backport‌های نصب‌شده زمانی که نسخه پایدار بعدی از دبیان آماده باشد، قابل بروزرسانی خواهند داشت.
با اینکه این مخزن نسخه‌های جدیدی از بسته‌های را فراهم می‌آورد، APT به صورت خودکار آن‌ها را نصب نمی‌کند مگر اینکه با دستورات صریح مواجه گردد (مگر اینکه در رابطه با یک نسخه از backport مورد نظر این کار را از قبل انجام داده باشید):
$ sudo apt-get install package/jessie-backports
$ sudo apt-get install -t jessie-backports package

6.1.3. مخازنی برای کاربران Testing و Unstable

در اینجا فایل استاندارد sources.list برای سیستمی که از نسخه‌های Testing یا Unstable دبیان استفاده می‌کند قرار دارد:

مثال 6.2. /etc/apt/sources.list برای کاربران دبیان در نسخه‌های Testing/Unstable

# Unstable
deb http://ftp.debian.org/debian unstable main contrib non-free
deb-src http://ftp.debian.org/debian unstable main contrib non-free

# Testing
deb http://ftp.debian.org/debian testing main contrib non-free
deb-src http://ftp.debian.org/debian testing main contrib non-free

# Stable
deb http://ftp.debian.org/debian stable main contrib non-free
deb-src http://ftp.debian.org/debian stable main contrib non-free

# Security updates
deb http://security.debian.org/ stable/updates main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ testing/updates main contrib non-free
با sources.list فایل APT از طریق Unstable به نصب بسته‌ها می‌پردازد. اگر گزینه جالبی نیست می‌توانید از تنظیم APT::Default-Release استفاده کنید (قسمت قسمت 6.2.3, “بروزرسانی سیستم” را مشاهده کنید) به منظور اینکه APT را وادار سازید از یک توزیع دیگر بسته‌هایش را دریافت کند (که در این مورد معمولا شامل Testing می‌شود)
دلایل خوبی وجود دارد که تمام آن مخازن را وارد کنید با اینکه تنها وجود یکی کافی است. کاربران Testing در زمان بروز باگ در نرم‌افزارهای این مخزن، می‌توانند یکی از بسته‌های اصلاح شده در Unstable را انتخاب کنند. از طرف دیگر، کاربران Unstable هر زمان بخوانند امکان بازگشت به بسته موجود در مخزن Testing را خواهند داشت.
وجود Stable از اهمیت بالاتری برخوردار است چرا که امکان استفاده از بسته‌هایی که طی فرآیند توسعه دیگر ادامه داده نشده‌اند را فراه می‌آورد. همچنین به شما تضمین می‌کند که همیشه آخرین بروزرسانی‌های مربوط به بسته‌ها را از آخرین انتشار رسمی دریافت خواهید کرد.

6.1.3.1. مخزن Experimental

بایگانی بسته‌های Experimental در تمام سرورهای دبیان موجود است و شامل بسته‌هایی می‌شود که در Unstable به دلیل ماهیت ناپایدار خود قرار ندارند - معمولا نسخه‌های اولیه نرم‌افزار مانند آلفا، بتا و ... هستند. همچنین بسته‌ای که مشکلات زیادی را بوجود آورد به این مخزن منتقل خواهد شد. مدیر بسته در این زمان با کمک کاربران پیشرفته که قادر به شناسایی مشکلات حاد هستند می‌تواند آن‌ها را برطرف کند. پس از این مرحله، بسته به Unstable منتقل می‌شود، جایی که در دسترس کاربران بیشتری قرار خواهد گرفت.
Experimental معمولا توسط کاربرانی استفاده می‌شود که از خراب کردن سیستم و تعمیر مجدد آن بیمی ندارند. این توزیع بیشتر به منظور آزمایشی بودن یک بسته برای رفع نیازهای جدید استفاده می‌شود. این دقیقا همان رویکردی است که دبیان نسبت به آن دارد، به صورتی که اضافه کردن آن در فایل sources.list منجر به استفاده گسترده از بسته‌های موجود در آن نخواهد شد.
deb http://ftp.debian.org/debian experimental main contrib non-free

6.1.4. منابع غیر-رسمی: mentors.debian.net

تعداد بسیار زیادی از بسته‌های دبیان به صورت غیر-رسمی از طرف کاربران پیشرفته و برنامه‌نویس وجود دارند که به صورت آزاد در اختیار همگان قرار گرفته است، حتی توسعه‌دهندگان دبیان که نسخه‌های آزمایشی از بسته‌های خود را به صورت آنلاین منتشر می‌کنند (اوبونتو با استفاده از سرویس Personal Package Archive یا بایگانی بسته‌های شخصی به توسعه این بسته‌ها کمک بسیاری کرده است).
وبسایت mentors.debian.net جالب توجه است (با اینکه تنها شامل بسته‌های سورس می‌شود) از آنجا که شامل بسته‌هایی می‌شود که داوطلبان بدون درخواست از کانال رسمی دبیان، آن‌ها را منتشر کرده‌اند. این بسته‌ها بدون هیچ تضمینی از کارکردشان به صورت آزاد منتشر شده‌اند؛ پس قبل از اینکه در محیط عملیاتی از آن‌ها استفاده کنید، نسبت به جامعیت و درست بودنشان اطمینان حاصل کنید.
نصب یک بسته به معنی اهدا حقوق اولیه به خالق آن است، چرا که آن‌ها هستند تصمیم می‌گیرند چه محتوایی از طریق اسکریپت‌های راه‌انداز هنگام نصب قرار بگیرد. بسته‌های رسمی دبیان توسط داوطلبانی ایجاد شده‌اند که همکاری متقابل و بازنگری در بسته را داشته‌اند و کسانی که می‌توانند بسته‌ها را به صورتی تنظیم کنند تا جامعیت آن‌ها حفظ گردد.
در حالت کلی، در مورد بسته‌هایی که منبع ناشناس دارند و در مخازن رسمی دبیان نیستند محتاط باشید: درجه اعتماد خود نسبت به خالق بسته را سنجیده و جامعیت آن را مد نظر قرار دهید.

6.1.5. پروکسی کش برای بسته‌های دبیان

زمانی که یک شبکه کامل از ماشین‌ها تنظیم شده‌اند تا از یک سرور بسته‌های بروزشده را دریافت کنند، هر مدیرسیستمی می‌داند که استفاده از یک کش محلی-شبکه بسیار مفید خواهد بود (قسمت واژگان Cache را مشاهده کنید)
می‌توانید APT را به گونه‌ای تنظیم کنید که مانند یک پروکسی "استاندارد" عمل کند (به قسمت 6.2.4, “گزینه‌های پیکربندی” برای قسمت APT و به قسمت 11.6, “HTTP/FTP Proxy” برای قسمت پروکسی مراجعه کنید)، اما اکوسیتم دبیان گزینه بهتری برای حل این مشکل نیز دارد. نرم‌افزار منحصربفردی که در این قسمت معرفی می‌شود چیزی بیشتر از یک پروکسی کش ساده است چرا که می‌تواند ساختار مخازن APT را درک کند (برای نمونه، می‌داند چه زمان فایل‌های انفرادی عمرشان به پایان می‌رسد، و زمان مربوط به آن را به صورت خودکار تنظیم کند)
apt-cacher و sources.list مانند کش سرورهای معمولی کار می‌کنند. فایل apt-cacher-ng از APT بدون تغییر باقی می‌ماند، اما APT از آن‌ها به عنوان پروکسی برای درخواست‌های ارسالی خود استفاده می‌کند.
از طرف دیگر، approx به مانند یک سرور HTTP عمل می‌کند که فهرستی از مخازن راه‌دور را “بازتاب” می‌دهد. نگاشت بین دایرکتوری‌های سطح-اول و نشانی‌های راه‌دور درون فایل /etc/approx/approx.conf ذخیره می‌شود.
# <name> <repository-base-url>
debian   http://ftp.debian.org/debian
security http://security.debian.org
approx به صورت پیش‌فرض روی پرت ۹۹۹۹ از طریق inetd اجرا می‌شود ( قسمت 9.6, “The inetd Super-Server” را مشاهده کنید) و کاربر را ملزم می‌سازد تا فایل sources.list خود را به سرور approx معرفی نماید.
# Sample sources.list pointing to a local approx server
deb http://apt.falcot.com:9999/security jessie/updates main contrib non-free
deb http://apt.falcot.com:9999/debian jessie main contrib non-free