Product SiteDocumentation Site

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

6.1. پر کردن فایل sources.list
6.1.1. شیوه استفاده
6.1.2. مخازنی برای کاربران Stable
6.1.3. مخازنی برای کاربران Testing و Unstable
6.1.4. Using Alternate Mirrors
6.1.5. منابع غیر-رسمی: mentors.debian.net
6.1.6. پروکسی کش برای بسته‌های دبیان
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” برای بسته‌های سورس.
The second field gives the base URL of the source (combined with the filenames present in the Packages.xz files, it must give a full and valid URL): this can consist in a Debian mirror or in any other package archive set up by a third party. The URL can start with file:// to indicate a local source installed in the system's file hierarchy, with http:// to indicate a source accessible from a web server, or with ftp:// for a source available on an FTP server. The URL can also start with cdrom: for CD-ROM/DVD-ROM/Blu-ray disc based installations, although this is less frequent, since network-based installation methods are more and more common.
شیوه نگارش فیلد آخر به ساختار مخزن بستگی دارد. در ساده‌ترین حالت‌ها، می‌تواند یک دایرکتوری (به همراه کاراکتر /) از منبع مورد نظر تعریف کنید (که با استفاده از “./” صورت می‌گیرد که نشان‌دهنده غیاب یک دایرکتوری فرزند است - بسته‌ها به صورت مستقیم در نشانی قرار می‌گیرند). اما در معمول‌ترین حالت، مخازن به مانند یک سرور دبیان ساختاردهی می‌شوند، با توزیع‌های جداگانه که هر یک اجزای مربوط به خود را خواهند داشت. در اینگونه موارد، توزیع مورد نظر را نامگذاری کنید (با استفاده از نام مخصوص به آن - قسمت جامعه کاربری بروس پرنس، رهبری بحث‌برانگیز را مشاهده کنید - یا با استفاده از وضعیت آن مانند 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/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free

## Debian mirror

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

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

# Stable backports
deb http://deb.debian.org/debian stretch-backports main contrib non-free
deb-src http://deb.debian.org/debian stretch-backports main contrib non-free
This file lists all sources of packages associated with the Stretch version of Debian (the current Stable as of this writing). We opted to name “stretch” explicitly instead of using the corresponding “stable“ alias (stable, stable-updates, stable-backports) because we don't want to have the underlying distribution changed outside of our control when the next stable release comes out.
اکثر بسته‌ها از یک “مخزن پایه” می‌آیند که به ندرت بروزرسانی می‌شود (در حدود هر ۲ ماه یکبار به منظور یک “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 جایی است که برای برورزسانی‌های مورد انتظار در دوره بعدی تحت نظر مدیران انتشار پایدار تصمیمات مورد نظر گرفته می‌شود.
بروزرسانی‌های امنیتی و پایدار که در قسمت‌های قبل به آن‌ها پرداخته شد، در این مخزن قرار می‌گیرند اما مدیران بسته می‌توانند به رفع باگ‌های مهم که نیاز به انتشار بعدی ندارند، بپردازند.
Anyone can use this repository to test those updates before their official publication. The extract below uses the stretch-proposed-updates alias which is both more explicit and more consistent since jessie-proposed-updates also exists (for the Oldstable updates):
deb http://ftp.debian.org/debian stretch-proposed-updates main contrib non-free

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

مخزن stable-backports از “package backports” میزبانی می‌کند. این عبارت به بسته‌ای از یک نرم‌افزار اشاره می‌کند که برای یک توزیع قدیمی‌تر مجدد کامپایل شده است، به صورت عمومی برای Stable.
زمانی که از عمر یک توزیع می‌گذرد، تعداد زیادی از پروژه‌های نرم‌افزاری بروزرسانی‌هایی اعمال می‌کنند که در مخزن Stable قرار ندارد (که اغلب برای مشکلات بحرانی در نظر گرفته شده است، مانند مشکلات امنیتی). از آنجایی که توزیع‌های Testing و Unstable از ریسک بالاتری برای میزبانی از بسته‌ها برخوردارند، مدیران بسته گاهی اوقات اقدام به کامپایل مجدد نرم‌افزار خود در مخزن Stable می‌کنند، که در رابطه با تعداد مشخصی از بسته‌ها پایدار خواهد بود.
Backport‌‌های موجود در stable-backports همیشه از بسته‌های موجود در توزیع Testing ایجاد می‌شوند. این فرآیند تضمین می‌کند که تمام backport‌های نصب‌شده زمانی که نسخه پایدار بعدی از دبیان آماده باشد، قابل بروزرسانی خواهند داشت.
با اینکه این مخزن نسخه‌های جدیدی از بسته‌های را فراهم می‌آورد، APT به صورت خودکار آن‌ها را نصب نمی‌کند مگر اینکه با دستورات صریح مواجه گردد (مگر اینکه در رابطه با یک نسخه از backport مورد نظر این کار را از قبل انجام داده باشید):
$ sudo apt-get install package/stretch-backports
$ sudo apt-get install -t stretch-backports package

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

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

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

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

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

# Stable
deb http://deb.debian.org/debian stable main contrib non-free
deb-src http://deb.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://deb.debian.org/debian experimental main contrib non-free

6.1.4. Using Alternate Mirrors

The sources.list examples in this chapter refer to package repositories hosted on deb.debian.og. Those URLs will redirect you to servers which are close to you and which are managed by Content Delivery Networks (CDN) whose main role is to store multiple copies of the files across the world to deliver them as fast as possible to users. The CDN companies that Debian is working with are Debian partners who are offering their services freely to Debian. While none of those servers are under direct control of Debian, the fact that the whole archive is sealed by GPG signatures makes it a non-issue.
Picky users who are not satisfied with the performance of deb.debian.org can try to find a better mirror in the official mirror list:
But when you don't know which mirror is best for you, this list is of not much use. Fortunately for you, Debian maintains DNS entries of the form ftp.country-code.debian.org (e.g. ftp.us.debian.org for the USA, ftp.fr.debian.org for France, etc.) which are covering many countries and which are pointing to one (or more) of the best mirrors available within that country.
As an alternative to deb.debian.org, there used to be httpredir.debian.org. This service would identify a mirror close to you (among the list of official mirrors, using GeoIP mainly) and would redirect APT's requests to that mirror. This service has been deprecated due to reliability concerns and now httpredir.debian.org provides the same CDN-based service as deb.debian.org.

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

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

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

زمانی که یک شبکه کامل از ماشین‌ها تنظیم شده‌اند تا از یک سرور بسته‌های بروزشده را دریافت کنند، هر مدیرسیستمی می‌داند که استفاده از یک کش محلی-شبکه بسیار مفید خواهد بود (قسمت واژگان Cache را مشاهده کنید)
می‌توانید APT را به گونه‌ای تنظیم کنید که مانند یک پروکسی "استاندارد" عمل کند (به قسمت 6.2.4, “گزینه‌های پیکربندی” برای قسمت APT و به قسمت 11.6, “پروکسی HTTP/FTP” برای قسمت پروکسی مراجعه کنید)، اما اکوسیتم دبیان گزینه بهتری برای حل این مشکل نیز دارد. نرم‌افزار منحصربفردی که در این قسمت معرفی می‌شود چیزی بیشتر از یک پروکسی کش ساده است چرا که می‌تواند ساختار مخازن APT را درک کند (برای نمونه، می‌داند چه زمان فایل‌های انفرادی عمرشان به پایان می‌رسد، و زمان مربوط به آن را به صورت خودکار تنظیم کند)
apt-cacher و sources.list مانند کش سرورهای معمولی کار می‌کنند. فایل apt-cacher-ng از APT بدون تغییر باقی می‌ماند، اما APT از آن‌ها به عنوان پروکسی برای درخواست‌های ارسالی خود استفاده می‌کند.
از طرف دیگر، approx به مانند یک سرور HTTP عمل می‌کند که فهرستی از مخازن راه‌دور را “بازتاب” می‌دهد. نگاشت بین دایرکتوری‌های سطح-اول و نشانی‌های راه‌دور درون فایل /etc/approx/approx.conf ذخیره می‌شود.
# <name> <repository-base-url>
debian   http://deb.debian.org/debian
security http://security.debian.org
approx runs by default on port 9999 via a systemd socket and requires the users to adjust their sources.list file to point to the approx server:
# Sample sources.list pointing to a local approx server
deb http://apt.falcot.com:9999/security stretch/updates main contrib non-free
deb http://apt.falcot.com:9999/debian stretch main contrib non-free