APT مشروع ضخم، تضمنت خططه الأصلية واجهة رسومية. يرتكز المشروع على مكتبة تحوي لب التطبيق، و كانت apt-get
أول واجهة –نصية– طوِّرت ضمن المشروع.
ظهرت بعدها العديد من الواجهات الرسومية كمشاريع خارجية: مثل synaptic
، و aptitude
(الذي يحتوي على واجهة نصيّة وأخرى رسومية — وإنْ لم تكتمل بعد)، و wajig
، الخ. أكثر واجهة ننصح بها، apt-get
، هي المعتمدة أثناء تثبيت دبيان، وهي التي سنستخدمها في الأمثلة المعطاة في هذا القسم. لكن لاحظ على أي حال أن صيغة أوامر aptitude
مشابهة جداً. عند وجود اختلافات كبيرة بين apt-get
وaptitude
سنفصّل هذه الاختلافات.
For any work with APT, the list of available packages needs to be updated; this can be done simply through apt-get update
. Depending on the speed of your connection, the operation can take a while since it involves downloading a certain number of Packages
/Sources
/Translation-language-code
files, which have gradually become bigger and bigger as Debian has developed (at least 10 MB of data for the main
section). Of course, installing from a CD-ROM set does not require any downloading — in this case, the operation is very fast.
يمكن إضافة الحزم إلى النظام أو إزالتها منه باستخدام APT، باستخدام الأمر apt-get install package
والأمر apt-get remove package
. في كلا الحالتين، ستثبت APT الاعتماديات الضرورية أو تحذف الحزم التي تعتمد على الحزمة التي تتم إزالتها. يزيل الأمر apt-get purge package
الحزمة بالكامل — حيث تحذف ملفات الضبط أيضاً.
إذا كان الملف
sources.list
يشير إلى عدة توزيعات، فمن الممكن تحديد النسخة التي تريد تثبيتها من الحزمة. يمكن أن تطلب رقم إصدار محدد من خلال الأمر
apt-get install package=version
، لكن الأفضل عادة تحديد التوزيعة التي تريد تثبيت الحزمة منها (
المستقرة، أو
الاختبارية، أو
Stable) — باستخدام الأمر
apt-get install package/distribution
. بهذه الطريقة يمكنك العودة إلى نسخة أقدم من الحزمة (مثلاً إذا كنت تعلم أنها تعمل بشكل جيد)، شريطة أن تبقى متوفرة في أحد المصادر المذكورة في ملف
sources.list
. وإلا فإن أرشيف
snapshot.debian.org
قد يساعد في إنقاذ الموقف (انظر الملاحظة الجانبية
التعمق أكثر إصدارات الحزم القديمة: snapshot.debian.org
).
مثال 6.3. تثبيت النسخة غير المستقرة من spamassassin
#
apt-get install spamassassin/unstable
يُنصَح بتحديث النظام بشكل منتظم، وذلك للحصول على آخر التحديثات الأمنية. استخدم الأمر apt-get upgrade
أو الأمر aptitude safe-upgrade
لتحديث النظام (بعد تنفيذ apt-get update
طبعاً). يبحث هذا الأمر عن الحزم المثبتة التي يمكن تحديثها دون إزالة أي حزم من النظام. أي أن الغرض هو تحديث النظام بأقل تأثير ممكن. إن apt-get
متشددة أكثر من aptitude
لأنها ترفض تثبيت الحزم التي لم تكن مثبتة من قبل.
ستختار apt-get
الإصدار الأحدث عادة (فيما عدا حزم التوزيعة التجريبية Experimental وحزم stable-backports، التي يتم تجاهلها افتراضياً مهما كان رقم إصدارها). فإذا أضفتَ Testing أو Unstable إلى ملف sources.list
، سوف يغير الأمر apt-get upgrade
معظم توزيعتك المستقرة إلى اختبارية أو غير مستقرة، وقد لا يكون هذا مقصدك.
حتى تطلب من apt-get
أن تستخدم توزيعة محددة عند البحث عن تحديثات الحزم، عليك استخدام الخيار -t
أو --target-release
، متبوعاً باسم التوزيعة التي تريد (مثلاً: apt-get -t stable upgrade
). لتفادي تحديد هذا الخيار في كل مرة تستخدم فيها apt-get
، يمكنك إضافة APT::Default-Release "stable";
إلى الملف /etc/apt/apt.conf.d/local
.
بالنسبة للتحديثات الأهم، مثل الانتقال من أحد إصدارات دبيان الرئيسية إلى التالي، عليك استخدام apt-get dist-upgrade
(من العبارة ”distribution upgrade“ أي تحديث التوزيعة). عند تنفيذ هذه التعليمة، ستكمل apt-get
التحديث حتى لو اضطرت لإزالة بعض الحزم الميتة أو تثبيت اعتماديات جديدة. هذا هو أيضاً الأمر الذي يستعمله مستخدمو إصدارة دبيان غير المستقرةويتابعون تطورها يوماً بيوم. هذه التعليمة أبسط من أن تحتاج لشرح: فهذه الوظيفة العظيمة هي أساس شهرة APT.
تملك aptitude
الأمر aptitude full-upgrade
كمرادف للأمر السابق رغم أنها تتعرف على الأمر dist-upgrade
أيضاً (لكن هذه الصيغة مستنكرة deprecated).
بالإضافة إلى عناصر الضبط التي ذكرناها سابقاً، من الممكن ضبط بعض نواحي APT بإضافة تعليمات في ملف في مجلد /etc/apt/apt.conf.d/
. تذكر مثلاً أن APT تستطيع الطلب من dpkg
تجاهل أخطاء تعارض الملفات بتحديد DPkg::Options { "--force-overwrite"; }
.
إذا لم يكن الوصول للوب ممكناً إلا من خلال بروكسي، أضف سطراً مثل
Acquire::http::proxy "http://yourproxy:3128"
. أما بالنسبة لبروكسيات FTP فاكتب
Acquire::ftp::proxy "ftp://yourproxy"
. لاكتشاف المزيد من خيارات الضبط، اقرأ صفحة الدليل
apt.conf(5) باستخدام الأمر
man apt.conf
(لمزيد من التفاصيل عن صفحات الدليل، انظر
قسم 7.1.1, “صفحات الدليل”).
6.2.5. إدارة أولويات الحزم
One of the most important aspects in the configuration of APT is the management of the priorities associated with each package source. For instance, you might want to extend one distribution with one or two newer packages from Testing, Unstable or Experimental. It is possible to assign a priority to each available package (the same package can have several priorities depending on its version or the distribution providing it). These priorities will influence APT's behavior: for each package, it will always select the version with the highest priority (except if this version is older than the installed one and if its priority is less than 1000).
APT defines several default priorities. Each installed package version has a priority of 100. A non-installed version has a priority of 500 by default, but it can jump to 990 if it is part of the target release (defined with the -t
command-line option or the APT::Default-Release
configuration directive).
يمكنك تغيير الأولويات بإضافة مدخلات بأسماء الحزم المتأثرة، وإصداراتها، ومصدرها وأولوياتها الجديدة إلى الملف /etc/apt/preferences
.
APT will never install an older version of a package (that is, a package whose version number is lower than the one of the currently installed package) except if its priority is higher than 1000. APT will always install the highest priority package which follows this constraint. If two packages have the same priority, APT installs the newest one (whose version number is the highest). If two packages of same version have the same priority but differ in their content, APT installs the version that is not installed (this rule has been created to cover the case of a package update without the increment of the revision number, which is usually required).
In more concrete terms, a package whose priority is less than 0 will never be installed. A package with a priority ranging between 0 and 100 will only be installed if no other version of the package is already installed. With a priority between 100 and 500, the package will only be installed if there is no other newer version installed or available in another distribution. A package of priority between 501 and 990 will only be installed if there is no newer version installed or available in the target distribution. With a priority between 990 and 1000, the package will be installed except if the installed version is newer. A priority greater than 1000 will always lead to the installation of the package even if it forces APT to downgrade to an older version.
عندما تتحقق APT من /etc/apt/preferences
، تأخذ أولاً المدخلات الأكثر تخصيصاً بعين الاعتبار (المدخلات التي تحدد الحزم بعينها غالباً)، بعدها تنظر إلى القواعد الأعم (كالقواعد التي تشمل جميع الحزم من إحدى التوزيعات). إذا كان هناك عدة مدخلات عامة، فسوف يستخدم التطابق الأول. من معايير التحديد المتاحة اسم الحزمة والمصدر الذي يوفرها. يُعرَّف كل مصدر من مصادر الحزم بالمعلومات المحتواة في الملف Release
الذي تحصل عليه APT مع ملف Packages
. يحدد هذا الملف منشأ الحزم (عادة يكون منشأ الحزم على المرايا الرسمية هو ”Debian“، لكن قد يكون اسم أحد الأشخاص أو المنظمات بالنسبة للمستودعات الأخرى). كما أنه يحدد اسم التوزيعة (عادة Stable، Testing، Unstable أو Experimental بالنسبة للتوزيعات القياسية التي يقدمها مشروع دبيان) وإصدارها (مثلاً 5.0 بالنسبة لدبيان ليني). دعنا نلقي نظرة على صيغة هذا الملف عبر دراسة بعض الحالات الواقعية لهذه الآلية.
لنفترض أنك تريد استعمال الحزم من النسخة المستقرة من دبيان فقط. وأن تلك الحزم المتوفرة في الإصدارات الأخرى يجب ألا تثبت إلا إذا طلبت صراحة. يمكن كتابة المدخلات التالية في ملف /etc/apt/preferences
:
يُعرِّف a=stable
اسم التوزيعة المختارة. ويَقْصُر o=Debian
المجال على الحزم ذات المنشأ ”Debian“.
دعنا الآن نتخيل أنك تملك مخدماً عليه عدة برامج محلية تعتمد على النسخة 5.14 من بيرل وأنك تريد التأكد أن التحديثات لن تسبب تثبيت نسخة أخرى منها. يمكنك استخدام هذه المدخلة:
الوثائق المرجعية لملف الضبط هذا متوفرة في صفحة الدليل apt_preferences(5)، التي يمكن عرضها بالأمر man apt_preferences
.
6.2.6. العمل مع عدة توزيعات
بما أن apt-get
أداة رائعة فعلاً، فهي تغريك بالتقاط حزم من توزيعات أخرى. مثلاً، بعد تثبيت التوزيعة المستقرة، قد ترغب بتجربة حزمة برمجية متوفرة في التوزيعة الاختبارية أو غير المستقرة دون الانحراف بعيداً عن حالة النظام الأولية.
حتى لو كنت ستواجه أحياناً مشاكل نتيجة خلط الحزم من توزيعات مختلفة، يدير
apt-get
مثل هذه الحالات بشكل جيد جداً وتقلل المخاطر بصورة فعالة. أفضل طريقة للمتابعة تكون بإضافة جميع التوزيعات المستخدمة في
/etc/apt/sources.list
(بعض الناس يضعون التوزيعات الثلاثة دائماً، لكن تذكر أن التوزيعة
غير المستقرة محجوزة للمستخدمين المخضرمين) و تعريف توزيعتك المرجعية بالمتغير
APT::Default-Release
(انظر
قسم 6.2.3, “تحديث النظام”).
دعنا نفرض أن المستقرة هي توزيعتك المرجعية لكن الاختبارية وغير المستقرة موجودتان في ملف sources.list
الخاص بك أيضاً. في هذه الحالة، يمكنك استخدام apt-get install package/testing
لتثبيت حزمة من الاختبارية. إذا فشل التثبيت نتيجة اعتماديات لا يمكن تلبيتها، دع apt-get تحل هذه الاعتماديات ضمن التوزيعة الاختبارية بإضافة المتغير -t testing
. من الواضح أن الشيء نفسه ينطبق على غير المستقرة.
في هذه الحالة، التحديثات (upgrade
و dist-upgrade
) تتم ضمن التوزيعة المستقرة ما عدا الحزم التي حُدِّثت مسبقاً إلى توزيعة أخرى: هذه الحزم ستتبع التحديثات المتوفرة في التوزيعات الأخرى. سنشرح هذا السلوك بمساعدة الأولويات الافتراضية التي تضبطها APT أدناه. لا تتردد باستخدام apt-cache policy
(انظر الملاحظة الجانبية) للتحقق من الأولويات المعطاة.
Everything centers around the fact that APT only considers packages of higher or equal version than the installed one (assuming that /etc/apt/preferences
has not been used to force priorities higher than 1000 for some packages).
Let's assume that you have installed version 1 of a first package from Stable and that version 2 and 3 are available respectively in Testing and Unstable. The installed version has a priority of 100 but the version available in Stable (the very same) has a priority of 990 (because it is part of the target release). Packages in Testing and Unstable have a priority of 500 (the default priority of a non-installed version). The winner is thus version 1 with a priority of 990. The package “stays in Stable”.
Let's take the example of another package whose version 2 has been installed from Testing. Version 1 is available in Stable and version 3 in Unstable. Version 1 (of priority 990 — thus lower than 1000) is discarded because it is lower than the installed version. This only leaves version 2 and 3, both of priority 500. Faced with this alternative, APT selects the newest version, the one from Unstable.If you don't want a package installed from Testing to migrate to Unstable, you have to assign a priority lower than 500 (490 for example) to packages coming from Unstable. You can modify /etc/apt/preferences
to this effect:
Package: *
Pin: release a=unstable
Pin-Priority: 490
6.2.7. متابعة الحزم المثبتة آلياً
إحدى وظائف apt-get
الأساسية (التي كانت متوفرة في aptitude
فقط في السابق) هي تتبع الحزم المثبتة فقط لأنها اعتماديات. هذه الحزم تدعى ”آلية automatic“، وغالباً ما تنتمي المكتبات مثلاً لهذه الفئة.
اعتماداً على هذه المعلومات، يستطيع مدير الحزم عند طلب إزالة حزمة، حساب لائحة بالحزم الآلية التي لم تعد لها حاجة (لعدم وجود حزم أخرى ”مثبتة يدوياً“ تعتمد عليها). يتخلص الأمر apt-get autoremove
من هذه الحزم. أما aptitude
فليس لها مثل هذا الأمر لأنها تزيل هذه الحزم فور التعرف عليها. يعرض كل من البرنامجين رسالة واضحة تبين الحزم المتأثرة.
من الجيد تعليم أي حزمة لا تحتاجها بشكل مباشر على أنها آلية حتى تزال آلياً عندما لا تبقى لها ضرورة. سوف يضع الأمر
apt-mark auto package
علامة حزمة آلية على الحزمة المحددة، بينما الأمر
apt-mark manual package
يفعل العكس. يعمل الأمران
aptitude markauto
و
aptitude unmarkauto
بنفس الأسلوب، إلا أن لهما ميزات إضافية لتعليم عدة حزم دفعة واحدة (انظر
قسم 6.4.1, “aptitude
”). كما أن الواجهة التفاعلية التي تقدمها
aptitude
في الطرفية تُسهِّل مراجعة ”الأعلام الآلية automatic flag“ على أعداد كبيرة من الحزم.
قد يرغب بعض الأشخاص بمعرفة سبب وجود حزمة آلية مثبتة على النظام. للحصول على هذه المعلومات من سطر الأوامر، يمكنك استخدام aptitude why package
(لا تملك apt-get
ميزة مشابهة):
$ aptitude why python-debian
i aptitude Recommends apt-xapian-index
i A apt-xapian-index Depends python-debian (>= 0.1.15)