APT مشروع ضخم، تضمنت خططه الأصلية واجهة رسومية. يرتكز المشروع على مكتبة تحوي لب التطبيق، و كانت apt-get
أول واجهة –نصية– طوِّرت ضمن المشروع.
ظهرت بعدها العديد من الواجهات الرسومية كمشاريع خارجية: مثل synaptic
، و aptitude
(الذي يحتوي على واجهة نصيّة وأخرى رسومية — وإنْ لم تكتمل بعد)، و wajig
، الخ. أكثر واجهة ننصح بها، apt-get
، هي المعتمدة أثناء تثبيت دبيان، وهي التي سنستخدمها في الأمثلة المعطاة في هذا القسم. لكن لاحظ على أي حال أن صيغة أوامر aptitude
مشابهة جداً. عند وجود اختلافات كبيرة بين apt-get
وaptitude
سنفصّل هذه الاختلافات.
قبل إجراء أي عمل باستخدام APT يجب تحديث قائمة الحزم المتوفرة؛ يمكن تنفيذ ذلك بسهولة من خلال apt-get update
. قد تستغرق العملية وقتاً حسب سرعة الاتصال، نظراً لأنها تحتاج لتنزيل عدد من ملفات Packages
/Sources
/Translation-language-code
، والتي كبرت أكثر وأكثر تدريجياً مع تطور دبيان (على الأقل 10 م.ب. من البيانات للقسم main
). طبعاً، لا يحتاج التثبيت من القرص الليزري أي تنزيل — لذلك تكون العملية سريعة جداً في هذه الحالة.
يمكن إضافة الحزم إلى النظام أو إزالتها منه باستخدام 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. إدارة أولويات الحزم
إدارة الأولويات المرتبطة بكل مصدر للحزم هي إحدى أهم النواحي في إعدادات APT. مثلاً، قد ترغب بإضافة حزمة واحدة أو اثنتين من التوزيعة الاختبارية، أو غير المستقرة أو التجريبية إلى إحدى التوزيعات الأخرى. من الممكن تعيين أولويات للحزم المتوفرة (يمكن أن تملك الحزمة الواحدة أكثر من أولوية واحدة اعتماداً على إصدارها أو التوزيعة التي توفرها). ستؤثر هذه الأولويات في سلوك APT: ستختار دائماً نسخة الحزمة ذات الأولوية الأعلى (إلا إذا كانت هذه النسخة أقدم من النسخة المثبتة وكانت أولويتها أقل من 1000).
تُعرِّف APT عدة أولويات افتراضية. كل نسخة مثبتة من الحزمة لها أولوية تساوي 100. النسخة غير المثبتة لها أولوية تساوي 500 افتراضياً، لكن يمكنها أن تقفز إلى 990 إذا كانت تنتمي للتوزيعة المستهدفة (التي تُحدَّد بالخيار -t
أو تعليمة الضبط APT::Default-Release
).
يمكنك تغيير الأولويات بإضافة مدخلات بأسماء الحزم المتأثرة، وإصداراتها، ومصدرها وأولوياتها الجديدة إلى الملف /etc/apt/preferences
.
لن تثبت APT أبداً نسخة أقدم من الحزمة (نسخة يكون رقم إصدارها أقل من الحزمة المثبتة حالياً) إلا إذا كانت أولويتها أعلى من 1000. ستُثَـبّت APT دائماً الحزمة ذات الأولوية العليا التي تحقق هذا الشرط. إذا كان لحزمتين الأولوية نفسها، تثبت APT النسخة الأحدث (ذات رقم الإصدار الأعلى). إذا كان لحزمتين الإصدار نفسه والأولوية نفسها لكنهما تختلفان في محتواهما، تثبّت APT النسخة غير المثبتة (تم وضع هذه القاعدة لتغطية الحالة التي تُحدَّث فيها الحزمة دون زيادة رقم مراجعتها، فالحاجة تدعو لهذا الأمر عادة).
بكلمات مترابطة أكثر، الحزمة ذات الأولوية الأدنى من 0 لن تثبت أبداً. أما الحزمة ذات الأولوية بين 0 و 100 فسوف تُثبَّت فقط إذا لم تكن هناك نسخة أخرى من الحزمة مثبتة مسبقاً. وتُثبَّت الحزمة ذات الأولوية بين 100 و 500 فقط إذا لم تكن هناك نسخ أحدث منها مثبتة أو متوفرة في توزيعة أخرى. أما الحزمة ذات الأولوية بين 501 و 990 فتُثَـبَّت فقط إذا لم تكن هناك نسخة أحدث مثبتة أو متوفرة في التوزيعة المستهدفة. الحزمة ذات الأولوية ما بين 990 و 1000 تثبت دائماً إلا إذا كانت النسخة المثبتة أحدث منها. الأولوية الأكبر من 1000 ستؤدي دائماً إلى تثبيت الحزمة حتى لو أجبرت APT على تخفيض الحزمة إلى نسخة أقدم.
عندما تتحقق 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
(انظر الملاحظة الجانبية) للتحقق من الأولويات المعطاة.
يدور كل شيء حول حقيقة أن APT تنظر إلى الحزم ذات الأولويات الأعلى أو المساوية لأولويات الحزم المثبتة (بفرض أن /etc/apt/preferences
لم يُستخدم لفرض أولويات أعلى من 1000 لبعض الحزم).
دعنا نفترض أنك تملك الإصدارة 1 مثبتة من حزمة أولى من التوزيعة المستقرة وأن الإصدارتين 2 و 3 متوفرتان على الترتيب في الاختبارية وغير المستقرة. للإصدارة المثبتة أولوية قدرها 100 لكن النسخة المتوفرة في المستقرة (الإصدارة نفسها) لها أولوية تساوي 990 (لأنها تنتمي للتوزيعة الهدف). تملك الحزم في الاختبارية وغير المستقرة أولوية قدرها 500 (الأولوية الافتراضية للإصدارات غير المثبتة). الرابح إذا هو الإصدار 1 صاحب الأولوية 990. إذاً ”تبقى الحزمة في التوزيعة المستقرة“.
دعنا نأخذ مثالاً عن حزمة أخرى تم تثبيت الإصدار 2 منها من التوزيعة الاختبارية. والإصدار 1 متاح ضمن المستقرة والإصدار 3 ضمن غير المستقرة. يُهمَل الإصدار 1 (أولويته 990 – أي أنها أقل من 1000) لأنه أقدم من النسخة المثبتة. هذا يدع النسختين 2 و 3، ولكل منهما الأولوية 500. تختار APT الإصدار الأحدث، الذي ينتمي للتوزيعة غير المستقرة. إذا لم ترغب أن تهاجر الحزم المثبتة من الاختبارية إلى التوزيعة غير المستقرة، عليك تعيين أولوية أقل من 500 (490 مثلا) للحزم القادمة من غير المستقرة. يمكنك تعديل الملف /etc/apt/preferences
للوصول إلى هذه النتيجة:
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)