Product SiteDocumentation Site

6.2. ‏aptitude، وapt-get، وapt

APT مشروع ضخم، تضمنت خططه الأصلية واجهة رسومية. يرتكز المشروع على مكتبة تحوي لب التطبيق، و كانت apt-get أول واجهة –نصية– طوِّرت ضمن المشروع. أما apt فهي واجهة نصية ثانية طورها مشروع APT للتغلب على بعض الأخطاء التصميمية في apt-get.
ظهرت بعدها العديد من الواجهات الرسومية كمشاريع خارجية: مثل synaptic، و aptitude (الذي يحتوي على واجهة نصيّة وأخرى رسومية — وإنْ لم تكتمل بعد)، و wajig، الخ. أكثر واجهة ننصح بها هي apt، وهي التي سنستخدمها في الأمثلة المعطاة في هذا القسم. لكن لاحظ على أي حال أن صيغة أوامر apt-get وaptitude متشابهة جداً. عند وجود اختلافات كبيرة بين apt-get وaptitude أو apt-get، سوف نفصّل هذه الاختلافات.

6.2.1. التهيئة

قبل إجراء أي عمل باستخدام APT يجب تحديث قائمة الحزم المتوفرة؛ يمكن تنفيذ ذلك بسهولة من خلال apt update. قد تستغرق العملية وقتاً حسب سرعة الاتصال، نظراً لأنها تحتاج لتنزيل عدد من ملفات Packages/Sources/Translation-language-code، والتي كبرت أكثر وأكثر تدريجياً مع تطور دبيان (على الأقل 10 م.ب. من البيانات للقسم main). طبعاً، لا يحتاج التثبيت من القرص الليزري أي تنزيل — لذلك تكون العملية سريعة جداً في هذه الحالة.

6.2.2. التثبيت والإزالة

يمكن إضافة الحزم إلى النظام أو إزالتها منه باستخدام APT، باستخدام الأمر apt install package والأمر apt remove package. في كلا الحالتين، ستثبت APT الاعتماديات الضرورية أو تحذف الحزم التي تعتمد على الحزمة التي تتم إزالتها. يزيل الأمر apt purge package الحزمة بالكامل — حيث تحذف ملفات الضبط أيضاً.
إذا كان الملف sources.list يشير إلى عدة توزيعات، فمن الممكن تحديد النسخة التي تريد تثبيتها من الحزمة. يمكن أن تطلب رقم إصدار محدد من خلال الأمر apt install package=version، لكن الأفضل عادة تحديد التوزيعة التي تريد تثبيت الحزمة منها (المستقرة، أو الاختبارية، أو Stable) — باستخدام الأمر apt install package/distribution. بهذه الطريقة يمكنك العودة إلى نسخة أقدم من الحزمة (مثلاً إذا كنت تعلم أنها تعمل بشكل جيد)، شريطة أن تبقى متوفرة في أحد المصادر المذكورة في ملف sources.list. وإلا فإن أرشيف snapshot.debian.org قد يساعد في إنقاذ الموقف (انظر الملاحظة الجانبية التعمق أكثر إصدارات الحزم القديمة: snapshot.debian.org).

مثال 6.3. تثبيت النسخة غير المستقرة من spamassassin

# apt install spamassassin/unstable

6.2.3. تحديث النظام

يُنصَح بتحديث النظام بشكل منتظم، وذلك للحصول على آخر التحديثات الأمنية. استخدم الأمر apt upgrade أو apt-get upgrade أو الأمر aptitude safe-upgrade لتحديث النظام (بعد تنفيذ apt update طبعاً). يبحث هذا الأمر عن الحزم المثبتة التي يمكن تحديثها دون إزالة أي حزم من النظام. أي أن الغرض هو تحديث النظام بأقل تأثير ممكن. إن apt-get متشددة أكثر من aptitude وapt لأنها ترفض تثبيت الحزم التي لم تكن مثبتة من قبل.
ستختار apt الإصدار الأحدث عادة (فيما عدا حزم التوزيعة التجريبية Experimental وحزم stable-backports، التي يتم تجاهلها افتراضياً مهما كان رقم إصدارها). فإذا أضفتَ Testing أو Unstable إلى ملف sources.list، سوف يغير الأمر apt upgrade معظم توزيعتك المستقرة إلى اختبارية أو غير مستقرة، وقد لا يكون هذا مقصدك.
حتى تطلب من apt أن تستخدم توزيعة محددة عند البحث عن تحديثات الحزم، عليك استخدام الخيار -t أو --target-release، متبوعاً باسم التوزيعة التي تريد (مثلاً: apt -t stable upgrade). لتفادي تحديد هذا الخيار في كل مرة تستخدم فيها apt، يمكنك إضافة APT::Default-Release "stable";‎ إلى الملف /etc/apt/apt.conf.d/local.
بالنسبة للتحديثات الأهم، مثل الانتقال من أحد إصدارات دبيان الرئيسية إلى التالي، عليك استخدام apt full-upgrade. عند تنفيذ هذه التعليمة، ستكمل apt التحديث حتى لو اضطرت لإزالة بعض الحزم الميتة أو تثبيت اعتماديات جديدة. هذا هو أيضاً الأمر الذي يستعمله مستخدمو إصدارة دبيان غير المستقرةويتابعون تطورها يوماً بيوم. هذه التعليمة أبسط من أن تحتاج لشرح: فهذه الوظيفة العظيمة هي أساس شهرة APT.
بعكس apt وaptitude، لا تملك apt-get الأمر full-upgrade. بل عليك استخدام الأمر التاريخي والشهير apt-get dist-upgrade (من العبارة ‏”distribution upgrade“ أي تحديث التوزيعة)، الذي تقبله apt وaptitude أيضاً لراحة المستخدمين الذي اعتادوا على استخدامه.

6.2.4. خيارات الإعداد

بالإضافة إلى عناصر الضبط التي ذكرناها سابقاً، من الممكن ضبط بعض نواحي 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 بالنسبة للتوزيعات القياسية التي يقدمها مشروع دبيان) وإصدارها (مثلاً 8 بالنسبة لدبيان جيسي). دعنا نلقي نظرة على صيغة هذا الملف عبر دراسة بعض الحالات الواقعية لهذه الآلية.
لنفترض أنك تريد استعمال الحزم من النسخة المستقرة من دبيان فقط. وأن تلك الحزم المتوفرة في الإصدارات الأخرى يجب ألا تثبت إلا إذا طلبت صراحة. يمكن كتابة المدخلات التالية في ملف /etc/apt/preferences:
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10
يُعرِّف a=stable اسم التوزيعة المختارة. ويَقْصُر o=Debian المجال على الحزم ذات المنشأ ”Debian“.
دعنا الآن نتخيل أنك تملك مخدماً عليه عدة برامج محلية تعتمد على النسخة 5.14 من بيرل وأنك تريد التأكد أن التحديثات لن تسبب تثبيت نسخة أخرى منها. يمكنك استخدام هذه المدخلة:
Package: perl
Pin: version 5.14*
Pin-Priority: 1001
الوثائق المرجعية لملف الضبط هذا متوفرة في صفحة الدليل apt_preferences(5)‎، التي يمكن عرضها بالأمر man apt_preferences.

6.2.6. العمل مع عدة توزيعات

بما أن apt أداة رائعة فعلاً، فهي تغريك بالتقاط حزم من توزيعات أخرى. مثلاً، بعد تثبيت التوزيعة المستقرة، قد ترغب بتجربة حزمة برمجية متوفرة في التوزيعة الاختبارية أو غير المستقرة دون الانحراف بعيداً عن حالة النظام الأولية.
حتى لو كنت ستواجه أحياناً مشاكل نتيجة خلط الحزم من توزيعات مختلفة، يدير apt مثل هذه الحالات بشكل جيد جداً وتقلل المخاطر بصورة فعالة. أفضل طريقة للمتابعة تكون بإضافة جميع التوزيعات المستخدمة في /etc/apt/sources.list (بعض الناس يضعون التوزيعات الثلاثة دائماً، لكن تذكر أن التوزيعة غير المستقرة محجوزة للمستخدمين المخضرمين) و تعريف توزيعتك المرجعية بالمتغير APT::Default-Release (انظر قسم 6.2.3, “تحديث النظام”).
دعنا نفرض أن المستقرة هي توزيعتك المرجعية لكن الاختبارية وغير المستقرة موجودتان في ملف sources.list الخاص بك أيضاً. في هذه الحالة، يمكنك استخدام apt install package/testing لتثبيت حزمة من الاختبارية. إذا فشل التثبيت نتيجة اعتماديات لا يمكن تلبيتها، دع apt-get تحل هذه الاعتماديات ضمن التوزيعة الاختبارية بإضافة المتغير -t testing. من الواضح أن الشيء نفسه ينطبق على غير المستقرة.
في هذه الحالة، التحديثات (upgrade و full-upgrade) تتم ضمن التوزيعة المستقرة ما عدا الحزم التي حُدِّثت مسبقاً إلى توزيعة أخرى: هذه الحزم ستتبع التحديثات المتوفرة في التوزيعات الأخرى. سنشرح هذا السلوك بمساعدة الأولويات الافتراضية التي تضبطها APT أدناه. لا تتردد باستخدام apt-cache policy (انظر الملاحظة الجانبية تلميح 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 الأساسية هي تتبع الحزم التي ثبتت على النظام فقط لأنها اعتماديات. هذه الحزم تدعى ”آلية automatic“، وغالباً ما تنتمي المكتبات مثلاً لهذه الفئة.
اعتماداً على هذه المعلومات، يستطيع مدير الحزم عند طلب إزالة حزمة، حساب لائحة بالحزم الآلية التي لم تعد لها حاجة (لعدم وجود حزم أخرى ”مثبتة يدوياً“ تعتمد عليها). يتخلص الأمر apt-get autoremove من هذه الحزم. أما aptitude وapt فليس لهما مثل هذا الأمر لأن الأول يزيل هذه الحزم فور التعرف عليها، أما الثاني فغالباً لأن المستخدم لا يجب أن يستدعي هكذا أمر يدوياً. في كل الحالات، ستعرض الأداة التي تستخدمها رسالة واضحة تبين الحزم المتأثرة.
من الجيد تعليم أي حزمة لا تحتاجها بشكل مباشر على أنها آلية حتى تزال آلياً عندما لا تبقى لها ضرورة. سوف يضع الأمر apt-mark auto package علامة حزمة آلية على الحزمة المحددة، بينما الأمر apt-mark manual package يفعل العكس. يعمل الأمران aptitude markauto و aptitude unmarkauto بنفس الأسلوب، إلا أن لهما ميزات إضافية لتعليم عدة حزم دفعة واحدة (انظر قسم 6.4.1, “‏aptitude). كما أن الواجهة التفاعلية التي تقدمها aptitude في الطرفية تُسهِّل مراجعة ”الأعلام الآلية automatic flag“ على أعداد كبيرة من الحزم.
قد يرغب بعض الأشخاص بمعرفة سبب وجود حزمة آلية مثبتة على النظام. للحصول على هذه المعلومات من سطر الأوامر، يمكنك استخدام aptitude why package (لا تملك apt ولا apt-get ميزة مشابهة):
$ aptitude why python-debian
i   aptitude         Recommends apt-xapian-index         
i A apt-xapian-index Depends    python-debian (>= 0.1.15)