Product SiteDocumentation Site

فصل 6. الصيانة والتحديث: أدوات APT

6.1. تعبئة الملف sources.list
6.1.1. صيغة الملف
6.1.2. مستودعات مستخدمي دبيان المستقرة
6.1.3. مستودعات مستخدمي الاختبارية أو غير المستقرة
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. واجهات APT: ‏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. صيغة الملف

يحتوي كل سطر فعال من الملف /etc/apt/sources.list على وصف لمصدر حزم واحد، يتألف من 3 أجزاء تفصلها مسافات.
يبين الحقل الأول نوع المصدر:
  • deb“ للحزم الثنائية،
  • deb-src“ للحزم المصدرية.
يعطي الحقل الثاني عنوان URL الأساسي للمصدر (وإذا أضفناه إلى أسماء الملفات الموجودة في ملفات Packages.gz، يجب أن يعطي عناوين URL كاملة وصالحة لتنزيل هذه الملفات): يمكن أن يشير هذا العنوان إلى مرآة دبيان أو أي أرشيف حزم آخر تديره أطراف أخرى. يمكن أن يبدأ العنوان بـ file:// ليشير إلى مصدر محلي مرتبط بشجرة ملفات النظام، أو http:// ليشير إلى مصدر متاح عبر مخدم وب، أو ftp:// لمصدر متوفر على مخدم FTP. كما يمكن أن يبدأ العنوان أيضاً بـ cdrom: بالنسبة للتثبيت عبر الأقراص الليزرية (DVD-ROM/CD-ROM/Blu-ray)، بَيْدَ أن هذا أقل شيوعاً، نظراً لزيادة انتشار طرق التثبيت عبر الشبكات.
تعتمد صيغة الحقل الأخير على بنية المستودع. في أبسط الحالات، يمكنك ببساطة تحديد مجلد فرعي (تتلوه شرطة مائلة ”/“ إلزامية) من مجلدات المصدر المرغوب (غالباً ما يستعمل الرمز ”./“ للدلالة على عدم وجود مجلد فرعي – أي أن الحزم متوفرة مباشرة على العنوان المحدد). لكن على الأرجح، ستكون بنية المستودع كبنية مرآة دبيان، حيث يحوي عدة توزيعات كل منها تحوي عدة مكونات. في هذه الحالات، عليك إضافة اسم التوزيعة المختارة (اسمها ”الرمزي“ —انظر القائمة في الملاحظة الجانبية مجتمع بروس بيرنز، قائد مثير للجدل— أو اسم ”الفرع suite“ الموافق: stable،‏ testing،‏ unstable)، بعدها ضع أسماء المكونات (أو الأقسام) التي تريد تفعيلها (إما main أو contrib أو non-free في مرايا دبيان النموذجية).
تصف مدخلات cdrom أقراص CD أو DVD. أقراص CD-ROM غير متوفرة دوماً بخلاف المدخلات الأخرى، لأنه يجب وضعها في السواقة التي لا تستطيع سوى قراءة قرص واحد في كل مرة. لهذا السبب، تدار هذه المصادر بطريقة مختلفة قليلاً، ويجب إضافتها باستخدام البرنامج apt-cdrom، باستخدام البارامتر add عادة. عندها سيطلب البرنامج إدخال القرص في السواقة ويتصفح محتوياته بحثاً عن ملفات Packages. ثم يستخدم هذه الملفات لتحديث قاعدة بيانات الحزم المتوفرة التي يديرها (تنفذ هذه العملية عادة بالأمر apt update). بعد ذلك، تستطيع APT أن تطلب إدخال القرص إذا احتاجت إحدى الحزم المخزنة عليه.

6.1.2. مستودعات مستخدمي دبيان المستقرة

هذا ملف sources.list قياسي لنظام يعمل بالنسخة المستقرة من دبيان:

مثال 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
هذا الملف يسرد جميع مصادر حزم النسخة جيسي من دبيان (المستقرة الحالية في زمن هذا الكتاب). لقد فضلنا تسمية ”جيسي“ صراحة بدلاً من استخدام ”stable“ ‏(stable، ‏stable-updates، ‏stable-backports) لأننا لا نريد أن تحدث تغييرات خارجة عن سيطرتنا في التوزيعة عندما تصدر النسخة المستقرة التالية.
تتوفر معظم الحزم عبر ”المستودع الأساسي“ الذي يحوي جميع الحزم لكنه نادراً ما يتم تحديثه (يُحَدَّث هذا المستودع مرة كل شهرين تقريباً عند كل ”إصدار ثانوي point release“). أما المستودعات الأخرى فهي جزئية (لا تحوي جميع الحزم) ويمكن أن تحوي تحديثات (حزم ذات إصدارات أحدث) يمكن أن تنزلها APT. تشرح الأقسام التالية الغرض من كل واحد من هذه المستودعات والقواعد التي تحكمه.
لاحظ أنه عند توفر الحزمة المرغوبة في عدة مستودعات، سيستخدم المستودع الأول حسب ترتيبها في ملف sources.list. لذلك تضاف المصادر غير الرسمية عادة إلى نهاية الملف.
كملاحظة جانبية، معظم ما يذكر في هذه الأقسام عن النسخة المستقرة ينطبق أيضاً على المستقرة القديمة بما أن الأخيرة ليست إلا نسخة مستقرة سابقة لا تزال صيانتها جارية على التوازي مع الحالية.

6.1.2.1. التحديثات الأمنية

تستضاف التحديثات الأمنية على security.debian.org (على مجموعة صغيرة من الأجهزة يشرف عليها Debian System Administrators) بدلاً من استضافتها على شبكة مرايا دبيان العادية. يحتوي هذا الأرشيف على التحديثات الأمنية (التي يجهزها Debian Security Team وربما مشرفو الحزم أيضاً) للتوزيعة المستقرة.
يمكن أن يستضيف هذا المخدم أيضاً التحديثات الأمنية للتوزيعة الاختبارية لكن هذا قليلاً ما يحدث لأن هذه التحديثات تصل إلى الاختبارية غالباً عبر التحديثات المنتظمة التي ترد إليها من التوزيعة غير المستقرة.

6.1.2.2. التحديثات المستقرة

التحديثات المستقرة ليست حساسة من الناحية الأمنية لكنها تعتبر هامة بما يكفي لدفعها إلى المستخدمين قبل إطلاق الإصدار الثانوي التالي.
يحوي هذا المستودع نموذجياً إصلاحات العلل الحرجة التي لم يكن إصلاحها ممكناً قبل الإصدار أو التي نتجت عن التحديثات التالية له. قد يحتوي أيضاً –حسب الضرورة– على تحديثات للحزم التي لا بد لها أن تتطور مع الزمن… مثل قواعد اكتشاف الرسائل الإلكترونية الدعائية (spam) الخاصة ببرنامج spamassassin، وقواعد بيانات الفيروسات الخاصة ببرنامج clamav، أو قواعد ضبط التوقيت الصيفي للمناطق الزمنية كافة (tzdata).
عملياً هذا المستودع هو جزء من المستودع proposed-updates، ينتقيه مديرو الإصدارة المستقرة بعناية.

6.1.2.3. التحديثات المقترحة

بعد إصدار التوزيعة المستقرة، لا يتم تحديثها إلا مرة واحدة كل شهرين تقريباً. المستودع proposed-updates هو المكان الذي يتم فيه تحضير التحديثات المنتظرة (تحت إشراف مديري الإصدارة المستقرة).
التحديثات المستقرة والأمنية التي تحدثنا عنها في القسمين السابقين متوفرة دائماً في هذا المستودع، لكن هناك تحديثات إضافية أيضاً، لأنه يمكن لمشرفي الحزم أيضاً إصلاح العلل المهمة لكنها لا تستحق الإصدار فوراً.
يستطيع أي شخص استعمال هذا المستودع لاختبار هذه التحديثات قبل إصدارها الرسمي. السطر التالي يستعمل الاسم jessie-proposed-updates لأنه أكثر وضوحاً وتلاؤماً نظراً لأن المستودع wheezy-proposed-updates متوفر أيضاً (لتحديثات التوزيعة المستقرة القديمة):
deb http://ftp.debian.org/debian jessie-proposed-updates main contrib non-free

6.1.2.4. المنقولات الخلفية للنسخة المستقرة

يستضيف المستودع stable-backports ”الحزم المنقولة خلفاً package backports“. يشير هذا المصطلح إلى حزم لبرمجيات حديثة أعيدت ترجمتها لتوزيعة قديمة (نقلت إلى الخلف)، وعادة ما يكون النقل إلى التوزيعة المستقرة.
عندما تتقادم التوزيعة قليلاً، تُطلِق العديد من مشروعات البرمجيات إصدارات جديدة غير متوفرة في التوزيعة المستقرة الحالية (التي لا تُعدَّل إلا لتصحيح المشاكل الحيوية فقط، مثل المشاكل الأمنية). وبما أن استخدام التوزيعتين الاختبارية وغير المستقرة فيه مخاطرة أكبر، يُقدِّم المشرفون على الحزم أحياناً نسخاً من البرمجيات الحديثة بعد إعادة ترجمتها للتوزيعة المستقرة، وباستخدام هذه الحزم ينحصر خطر عدم الاستقرار في عدد من الحزم المحددة.
أصبح المستودع stable-backports الآن متوفراً على المرايا العادية لدبيان. لكن المنقولات الخلفية لنسخة سكويز لا تزال مستضافة على مخدم خاص (backports.debian.org)، وتحتاج المدخلة التالية في ملف sources.list:
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
تُنشَأ المنقولات في المستودع stable-backports دائماً من الحزم المتوفرة في الاختبارية. يضمن هذا الإجراء قابلية تحديث جميع المنقولات الخلفية المُثبَّتَة إلى النسخ المستقرة الموافقة لها فور إطلاق الإصدارة المستقرة التالية من دبيان.
رغم أن هذا المستودع يقدم إصدارات أحدث من الحزم، إلا أن APT لن تثبتها ما لم تأمرها بذلك صراحة (أو إذا كانت هناك نسخة قديمة من المنقول الخلفي نفسه مثبتة مسبقاً):
$ sudo apt-get install package/jessie-backports
$ sudo apt-get install -t jessie-backports package

6.1.3. مستودعات مستخدمي الاختبارية أو غير المستقرة

فيما يلي ملف sources.list قياسي لنظام يعمل بالنسخة الاختبارية أو غير المستقرة من دبيان:

مثال 6.2. ملف /etc/apt/sources.list لمستخدمي دبيان الاختبارية/غير المستقرة

# 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
عند استخدام هذا الملف سوف تثبت APT الحزم من التوزيعة غير المستقرة. إذا لم ترغب بذلك، استخدم الخيار APT::Default-Release (انظر قسم 6.2.3, “تحديث النظام”) لإرشاد APT إلى توزيعة أخرى لالتقاط الحزم منها (ستكون الاختبارية على الأغلب في هذه الحالة).
هناك أسباب وجيهة لإضافة كل هذه المستودعات، رغم أن مستودعاً واحداً منها يكفي. سيستفيد مستخدمو الاختبارية من إمكانية التقاط حزمة من غير المستقرة بعد إصلاح علة مزعجة كانت تعاني منها النسخة المتوفرة في الاختبارية. من جهة أخرى، يستطيع مستخدمو التوزيعة غير المستقرة إذا واجهتهم تدهورات غير متوقعة تخفيض إصدارات حزمهم (downgrade) إلى نسخ التوزيعة الاختبارية (التي يفترض أنها تعمل).
تضمين المستقرة قابل للنقاش لكنه غالباً يسمح بالوصول إلى بعض الحزم التي تمت إزالتها من النسخ التطويرية. كما أنه يضمن لك الحصول على آخر التحديثات للحزم التي لم تُعدَّل منذ الإصدار المستقر الأخير.

6.1.3.1. المستودع Experimental

يتوفر أرشيف حزم التوزيعة التجريبية Experimental على جميع مرايا دبيان، ويحوي حزماً غير موجودة في النسخة غير المستقرة بعد بسبب نوعيتها دون المعيارية — فهي غالباً نسخ تطويرية من البرمجيات أو إصدارات أولية (ألفا، بيتا، مرشح للإصدار rc = release candidate…). يمكن إرسال الحزمة إلى هناك أيضاً بعد إجراء تغييرات عليها يمكن أن تؤدي إلى مشاكل. يحاول المشرف بعدها استرجاعها بمساعدة المستخدمين المتقدمين القادرين على معالجة المشاكل الخطيرة. بعد هذه المرحلة الأولى، تُنقَل الحزمة إلى النسخة غير المستقرة، حيث تلقى جمهوراً أوسع بكثير ويتم فحصها بتدقيق أكبر بكثير.
يستخدم النسخة التجريبية عادة المستخدمون الذي لا يهتمون إذا تعطل نظامهم واضطروا لإصلاحه ثانية. تعطي هذه التوزيعة إمكانية استيراد حزمة يريد المستخدم تجربتها أو استخدامها عند الحاجة. تستخدم دبيان هذا المستودع بهذه الطريقة بالضبط، إذ أن إضافته إلى ملف sources.list لا تؤدي إلى استخدام حزمها آلياً. السطر الذي تجب إضافته هو:
deb http://ftp.debian.org/debian experimental main contrib non-free

6.1.4. مصادر غير رسمية: mentors.debian.net

هناك مصادر غير رسمية عديدة لحزم دبيان يعدها مستخدمون محترفون يعيدون تجميع بعض البرمجيات (ساهمت أوبنتو في نشر هذا الأمر من خلال خدمة أرشيف الحزم الشخصي Personal Package Service أو PPA)، أو مبرمجون يوفرون برامجهم للعموم، أو ربما مطورو دبيان يقدمون نسخاً أولية من حزمهم.
موقع mentors.debian.net مثير للاهتمام (ولو أنه لا يقدم إلا الحزم المصدرية)، حيث يجمع الحزم التي يصنعها المرشحون لمنصب مطور دبيان رسمي أو المتطوعون الراغبون بصناعة حزم دبيان دون الدخول في تفاصيل عملية دمجها في التوزيعة. هذه الحزم متوفرة دون أي ضمان لجودتها؛ فاحرص على التحقق من مصدرها وسلامتها ثم اختبرها قبل أن تقرر الاعتماد عليها في الإنتاج.
إن تثبيت حزمة ما يعني منح صلاحيات الجذر لصانعها، لأنه من يقرر محتويات سكربتات التهيئة التي تعمل بتلك الصلاحيات. حزم دبيان الرسمية يصنعها متطوعون عملنا معهم واختبرناهم ولديهم إمكانية ختم حزمهم بحيث يمكن التحقق من مصدرها وسلامتها.
عموماً، كن حذراً من الحزم التي لا تعرف مصدرها والتي لا يستضيفها أحد مخدّمات دبيان الرسمية: قيّم مدى ثقتك بصانعها، وتحقق من سلامة الحزمة.

6.1.5. بروكسيات التخبئة لحزم دبيان

عند إعداد شبكة كاملة من الأجهزة لاستخدام المخدم البعيد نفسه لتنزيل نفس الحزم المُحَدَّثة، يدرك أي مدير نظم أنه سيستفيد من استخدام بروكسي وسيط يعمل كمخبأ (كاش) للشبكة المحلية (انظر الملاحظة الجانبية مصطلحات المخبأ (Cache)).
يمكنك إعداد APT لاستخدام بروكسي ”معياري“ (انظر قسم 6.2.4, “خيارات الإعداد” لإعداد APT، وقسم 11.6, “بروكسي HTTP/FTP” لإعداد البروكسي)، لكن بيئة دبيان تقدم خيارات أفضل لمعالجة هذه المشكلة. البرمجيات المتخصصة المذكورة في هذا القسم أذكى من بروكسيات التخبئة (Cache Proxies) العادية لأنها تستطيع الاعتماد على البنية الخاصة لمستودعات APT (مثلاً تعرف هذه البرمجيات إذا انتهت صلاحية الملف أم لا، وبالتالي تستطيع ضبط فترة الاحتفاظ به).
يعمل apt-cacher وapt-cacher-ng مثل مخدمات التخبئة الوسيطة العادية. حيث يبقى الملف sources.list دون تعديل، لكن تُضبَطُ APT حتى تَستَخدِم أحد البرنامجين كبروكسي للطلبات الخارجية.
من ناحية أخرى، يعمل approx كمخدم HTTP ينسخ (أو يعكس ”mirror“) أي عدد من المستودعات البعيدة إلى عناوين URL من المستوى الأول خاصة به. تخزن العلاقات بين هذه المجلدات ذات المستوى الأول والعناوين البعيدة للمستودعات في /etc/approx/approx.conf:
# <name> <repository-base-url>
debian   http://ftp.debian.org/debian
security http://security.debian.org
يعمل approx افتراضياً على المنفذ 9999 (انظر قسم 9.6, “المخدم الفائق inetd) ويتطلب من المستخدم تعديل ملف 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