خالد محمد

الأعضاء
  • المساهمات

    2
  • تاريخ الانضمام

  • تاريخ آخر زيارة

السُّمعة بالموقع

0 Neutral
  1. نواصل معكم في هذا المقال استعراض أساسيات إدارة الحزم في أوبنتو ودبيان. إذا لم تقرأ الجزء الأول فأنصحك بقراءته أوّلا قبل مواصلة قراءة هذا المقال. إزالة الحزم وحذف الملفات العمليات المعاكسة لعملية التنصيب والتحميل الحِزم متاحة أيضًا من مدير الحِزم. هذا القسم سيناقش كيفية إزالة تنصيب الحِزم وتنظيف الملفات التي قد تبقى كنتيجة لعمل الحزمة. إزالة حزمة لإزالة حزمة منصبة، يجب إضافة الأمر الفرعي remove إلى الأمر apt-get. سيقوم هذا الأمر بإزالة الملفات التي قامت الحزمة بتنصيبها على نظامك مع استثناء جدير بالاهتمام. الأمر يُبقي ملفات الإعدادات محفوظة في مكانِ ما في حال تم إعادة تنصيب الحزمة مرة أخرى فيما بعد. تعتبر هذه الطريقة مفيدة في حالة الحذف المفاجئ للحزمة؛ حيث لا تضيع جهودك هدرًا في إعادة ضبط الإعدادات وتخصيصها. لإكمال العملية يلزمك تزويد الأمر باسم الحزمة المراد إزالتها أو إلغاء تصيبها: sudo apt-get remove package ستتم إزالة الحزمة، باستثناء ملف الإعدادات. إزالة حزمة وكل ملفات الإعدادات ذات العلاقة إذا كنت ترغب في إزالة حزمة وكل الملفات المتعلقة بها من نظامك، متضمنة ملفات الإعدادات، يمكنك استخدام الأمر الفرعي purge من الأمر apt-get. بخلاف الأمر remove -الذي تم ذكره بالأعلى- فإن الأمر purge يزيل كل شيء. تعتبر هذه الطريقة مفيدة في حال عدم رغبتك الاحتفاظ بملفات الإعدادات، أو في حال ما كانت لديك بعض المشاكل وترغب في البدء من الصفر. تجدر الإشارة هنا إلى أن ملفات الإعدادات لا يمكن استرجاعها في حال تم حذفها: sudo apt-get purge package في هذه الحالة، عندما تقوم بإعادة تنصيب الحزمة مرة أخرى فسيتم استخدام الإعدادات الافتراضية. إزالة الاعتماديات التلقائية التي لم تعد لها حاجة تتم إزالة الحِزم من النظام باستخدام الأوامر apt-get remove أو apt-get purge، لكن بعض هذه الحزم كان قد تطلّب وقت التنصيب بعض الاعتماديات لاستكمال التنصيب، وبعد إزالة الحزمة تبقى هذه الاعتماديات. لإزالة أي حِزم تم تنصيبها كاعتماديات ولم تعد مطلوبة لأي حزمة أخرى، يمكنك تنفيذ الأمر autoremove كما يلي: sudo apt-get autoremove إذا كنت ترغب في إزالة كل ملفات الإعدادات المتعلقة من الاعتماديات التي تمت إزالتها، يجب إضافة purge-- إلى الأمر autoremove. سيقوم هذا الأمر بإزالة ملفات الإعدادات مثل وظيفة الأمر purge: sudo apt-get --purge autoremove تنظيف ملفات الحزم المهجورة Obsolete بعض الحِزم تُصبح قديمة ومهجورة مع مرور الوقت. بإمكان الأداة apt-get إزالة أيٍ من ملفات هذه الحِزم عن النظام المحلي، تلك الملفات المرتبطة بالحِزم والتي لم تعد متاحة من قِبل المستودعات باستخدام الأمر autoclean. يقوم هذا الأمر بتحرير المزيد من المساحة على الخادوم، ويسمح بتحديث الذاكرة المؤقتة على النظام المحلي وتجنّب الاحتفاظ ببيانات غير مستخدمة. sudo apt-get autoclean الحصول على معلومات حول الحزم كل حزمة تحتوي على كمية كبيرة من البيانات التي يمكن الوصول إليها من خلال أدوات إدارة الحِزم. في هذا القسم سنقوم بتسليط الضوء على بعض الطرق الشائعة للحصول على المعلومات حول الحزم المتاحة والمنصبة. عرض المعلومات حول حزمة لعرض المعلومات التفصيلية حول حزمة في التوزيعة التي تستخدمها، يمكنك استخدام الأمر الفرعي show من الأمر apt-cache. هذا الأمر يعتمد على اسم الحزمة في المستودع: apt-cache show package سيقوم الأمر بعرض معلومات حول الحِزم التي تظهر في نتاج البحث عن تلك الحزمة التي يتم الاستفسار عنها. كل حزمة مرشحة تتضمن معلومات حول اعتمادياتها، الإصدار، التركيبة أو المعمارية، التعارضات، الاسم الفعلي للحزمة، حجم الحزمة وحجم تنصيبها، الوصف التفصيلي، بالإضافة إلى معلومات أخرى. لعرض المزيد من المعلومات حول كل حزمة مرشحة، شاملة لقائمة كاملة للاعتماديات العكسية ( قائمة الحِزم التي تعتمد على الحزمة التي نستفسر عنها) استخدم الأمر showpkg بدلا من الأمر المذكور أعلاه، والذي سيتضمن الكثير من المعلومات حول علاقة هذه الحزمة بالحِزم الأخرى: apt-cache showpkg package عرض المعلومات حول حزمة deb. لعرض تفاصيل حول ملف deb. يمكنك استخدام المؤشر info-- مع الأمر dpkg، الهدف لهذا الأمر يجب أن يكون مسار ملف deb.: dpkg --info debfile.deb سيعرض لك هذا الأمر بعض البيانات الوصفية حول الحزمة التي تستفسر عنها، المعلومات تتضمن اسم الحزمة وإصدارها، المعمارية التي بُنيت لها، الحجم والاعتماديات المطلوبة، الوصف والتعارضات. عرض الاعتماديات والاعتماديات العكسية لعرض الاعتماديات (اعتماد حزمة على أخرى) بشكل دقيق، وكذلك الاعتماديات العكسية (الحِزم التي تعتمد على هذه الحزمة) يمكنك استخدام الأداة apt-cache. لعرض معلومات الاعتماديات بشكل جيد، يمكنك استخدام الأمر الفرعي depends: apt-cache depends package سيقوم الأمر بعرض معلومات حول كل حِزمة تم التعرف عليها كاعتمادية، بالإضافة إلى الاقتراحات، التوصيات أو التعارضات. إذا كنت ترغب في معرفة أي حِزم تعتمد على حزمة معينة، يمكنك إضافة اسم الحزمة إلى الأمر الفرعي rdepends: apt-cache rdepends package عرض إصدارات الحزمة المنصبة والمتاحة في الكثير من الأحيان تتوفر عدّة إصدارات من حزمة ما في المستودع، مع حزمة واحدة افتراضية. لعرض الإصدارات المتاحة لحزمة ما، يمكنك استخدام الأمر الفرعي policy من الأمر apt-cache: apt-cache policy package سيقوم الأمر بعرض أي إصدار تم تنصيبه (إذا كان الحزمة منصبة)، الحزمة المرشحة والتي سيتم تنصيبها بشكل افتراضي إذا لم تقم بتحديد إصدار في أمر التنصيب، بالإضافة إلى جدول إصدارات الحزم، منتهيًا بمؤشر يشير إلى أولوية كل إصدار. يمكنك استخدام تلك الطريقة لتحديد أي إصدار سيتم تنصيبه والبدائل المتاحة. ولأن هذه الطريقة ترصد المستودعات التي يتواجد فيها كل إصدار، فإنه يمكن استخدامها لتحديد إذا ما توافرت مستودعات أخرى أو الأرشيف الشخصي للحِزم (PPAs) تقوم بنسخ الحِزم من المستودع الافتراضي. عرض الحزم المنصبة باستخدام الأمر dpkg -l لعرض الحِزم التي تم تنصيبها على نظامك، لديك القليل من الخيارات، اعتمادًا على هيئة المخرجات، وكذلك حجم المعلومات المطلوبة. الطريقة الأولى تتضمن استخدام dpkg أو dpkg-query مع l-. المخرجات من الأمرين كليهما ستكون متطابقة، بلا شك ستعطي قائمة لكل حزمة منصبة (جزئيا أو كليّا) على النظام، وشكلها كما يلي: dpkg -l Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-===========================================-=======================================-============-===================================================================================================================== ii account-plugin-generic-oauth 0.10bzr13.03.26-0ubuntu1.1 amd64 GNOME Control Center account plugin for single signon - generic OAuth ii accountsservice 0.6.34-0ubuntu6 amd64 query and manipulate user account information ii acl 2.2.52-1 amd64 Access control list utilities ii acpi-support 0.142 amd64 scripts for handling many ACPI events ii acpid 1:2.0.18-1ubuntu2 amd64 Advanced Configuration and Power Interface event daemon . . . ستستمر المخرجات لكل حزمة في النظام على المخرجات يمكنك رؤية مدلولات الحروف الثلاثة الأولى في كل سطر. الحرف الأولى يشير إلى الحالة المرغوب فيها للحزمة، وتكون أحد ما يلي: u: غير معروف i: تم التنصيب r: تمت إزالتها. p: تمت إزالتها كليّا ( تنظيف بعد الإزالة) h: إصدار معلّق. الحرف الثاني يشير إلى الحالة الحقيقة للحزمة كما هو معروف لنظام التحزيم Packaging system، يمكن أن تكون إحدى الحالات التالية: n: لم يتم تنصيبها. i: تم تنصيبها. c: ملف الإعدادات موجود، لكن الحزمة تمت إزالتها. u: تم فك ضغط الحزمة لكن لم يُشرع في إعدادها بعد. f: الحزمة منصبة (جزئيًا) مما يعني حدوث فشل أثناء عملية التنصيب مما لم يسمح باكتمال عملية التنصيب. w: الحزمة تنتظر حدثًا من حزمة منفصلة. p: الحزمة تم تفعيلها من قِبل حزمة أخرى. الحرف الثالث، والذي يكون عبارة عن مسافة فارغة لأغلب الحِزم، له خيار واحد كما يلي: r: إشارة إلى ضرورة إعادة التنصيب، مما يفيد أن الحزمة غير مكتملة ولا يمكن الاستفادة من وظائفها. باقي الأعمدة تحتوي اسم الحزمة، الإصدار، المعمارية وكذلك الوصف. عرض حالة التنصيب للحِزم التي تم ترشيحها إذا قمت بإضافة معيار بحث بعد l- ، فإن dpkg سيعرض كل الحِزم التي تحوي معيار البحث، سواءً كانت منصّبة أم لا، على سبيل المثال، نستطيع البحث عن عمليات المكتبات YAML كما يلي: dpkg -l libyaml* Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-===============-============-============-=================================== ii libyaml-0-2:amd 0.1.4-2ubunt amd64 Fast YAML 1.1 parser and emitter li ii libyaml-dev:amd 0.1.4-2ubunt amd64 Fast YAML 1.1 parser and emitter li un libyaml-perl <none> (no description available) un libyaml-syck-pe <none> (no description available) ii libyaml-tiny-pe 1.51-2 all Perl module for reading and writing كما ترى في العمود الأول، النتيجة الثالثة والرابعة غير منصبة. هذا الأمر يعرض كل حزمة يتوفر فيها معيار البحث، بالإضافة إلى الحالة الحالية والمرغوب فيها. عرض الحِزم المنصبة بالأمر dpkg --get-selections يمكنك استعراض الحِزم المنصبة على نظامك بطريقة أخرى، باستخدام مؤشر get-selections-- مع الأداة dpkg، حيث يزودنا هذا الأمر بقائمة لكل الحِزم التي تم تنصيبها، والتي تمت إزالتها دون التنظيف بعد الإزالة: dpkg --get-selections للتفريق بين تلك الحالتين، يمكنك استخدام awk للتصفية حسب الحالة. لاستعراض الحِزم المنصّبة فقط، اطبع: dpkg --get-selections | awk '$2 ~ /^install/` لعرض قائمة الحِزم التي تمت إزالتها لكن لم يتم إزالة ملفات الإعدادات، يمكنك استخدام الأمر: dpkg --get-selections | awk '$2 !~ /^install/' البحث ضمن الحزم المنصبة للبحث في الحِزم المنصبة عن حزمة معينة، يمكنك إضافة نص التصفية/الترشيح بعد خيار get-selections--. هذا الأمر يستخدم البدائل لمحاولة العثور على تطابق ما. مرة أخرى، يقوم هذا الأمر بعرض أي حزمة منصبة، أو ملفات الإعدادات الخاصة بها ما زالت على النظام: dpkg --get-selections libz* مرة أخرى، يمكنك التصفية باستخدام تعبيرات awk من القسم أعلاه. استعراض الملفات المنصبة من خلال حزمة لاستعراض الملفات الخاصة بحزمة ما، يمكنك استخدام مؤشر L- مع الأمر dpkg: dpkg -L package سيقوم هذا الأمر بطباعة المسار الكامل لكل ملف خاص بتلك الحزمة. بالطبع لن تتضمن القائمة ملفات الإعدادات التي يتم إنشاؤها من خلال عمليات الحزمة البحث عن ما تنصبه الحزمة لموقع ما لاستكشاف أي حزمة مسؤولة عن ملف معين في نظام الملفات، يمكنك إضافة الملف الكامل إلى الأمر dpkg مع مؤشر S-. سيقوم الأمر بطباعة اسم الحزمة التي قامت بتنصيب الملف: dpkg -S /path/to/file تجدر الإشارة إلى أن أي ملفات تم نقلها إلى مكان ما من خلال عملية ما بعد التنصيب، لا يمكن ربطها بحزمتها من خلال هذا الأمر. معرفة أي حزمة تقوم بتوفير ملف ما دون تنصيبها قد تحتاج في بعض الأحيان لمعرفة أي حزمة تزودك بملف ما أو أمر ما، حتى بدون أن تقوم بتنصيب الحزمة على نظامك. من السهل معرفة إذا ما كانت حزمة معينة تحتوي ملفًا ما باستخدام dpkg بإضافة الخيار S-. لعمل ذلك يلزم تنصيب الأداة apt-file. تمتلك هذه الأداة قاعدة بيانات لمعلوماتٍ حول الحزم، من ضمن هذه المعلومات مسار التنصيب لكل ملف خاص بالحزمة من قاعدة البيانات تلك. قم بتنصيب الأداة بتنفيذ: sudo apt-get update sudo apt-get install apt-file الآن، قم بتحديث قاعدة البيانات الخاصة بالأداة وقم بالبحث عن ملف بتنفيذ: sudo apt-file update sudo apt-file search /path/to/file سيعمل هذا الأمر فقط للمواقع التي تم تنصيبها مباشرة بواسطة حزمة ما. لن يتم إيجاد الملفات التي تم إنشاؤها بواسطة برامج ما بعد التثبيت. تحويل قوائم الحزم بين الأنظمة في كثير من الأحيان قد تحتاج لعمل نسخة احتياطية لقائمة الحِزم التي تم تنصيبها على نظامك، واستخدامها لتنصيب نفس القائمة من الحِزم على نظام آخر. بالطبع تعتبر هذه الطريقة مفيدة لأغراض النسخ الاحتياطي. هذا القسم يوضح آلية تصدير واستيراد قوائم الحِزم. تصدير قائمة الحزم إذا كنت ترغب في تكرار مجموعة الحزم التي تم تنصيبها على نظامك إلى نظام آخر، يتوجب عليك في البداية تصدير قائمة الحزم. يمكنك تصدير قائمة الحزم المنصّبة إلى ملف بتلك الصيغة المطلوبة لاحقًا لعمية الاستيراد عن طريق مخرجات الأمر dpkg --get-selections : dpkg --get-selections > ~/packagelist.txt يمكنك نسخ هذه القائمة إلى نظام أو حاسوب آخر واستيرادها. قد تحتاج أيضًا لأخذ نسخة احتياطية لقوائم المصادر وقائمة المفاتيح الموثوقة. يمكنك أخذ نسخة احتياطية من المصادر بإنشاء مجلد بالملفات الضرورية ونسخها: mkdir ~/sources cp -R /etc/apt/sources.list* ~/sources المفاتيح الموثوقة يمكن نسخها احتياطيًا بتنفيذ: apt-key exportall > ~/trusted_keys.txt الآن يمكنك تحويل الملف packagelist.txt ومجلد sources والملف trusted_keys.txt إلى حاسوب آخر بغرض استيرادها. استيراد قائمة الحزم إذا قمت بإنشاء قائمة الحزم باستخدام dpkg --get-selections كما تم شرحه أعلاه، بإمكانك استيراد الحِزم على حاسوب آخر باستخدام الأمر dpkg . في البداية يجب أن تقوم بإضافة مفاتيح الثقة، وتحضير قوائم المصادر التي تم نسخها من الحاسوب الأول. على افتراض أنك قمت بنسخ جميع الملفات المنقولة إلى مجلد home في الحاسوب الثاني، يمكنك تنفيذ: sudo apt-key add ~/trusted_keys.txt sudo cp -R ~sources/* /etc/apt/ ثم قم بإزالة الحالة عن الحزِم غير الضرورية من الحاسوب الجديد. مما يعني أنك تقوم بتطبيق التغييرات من جديد. يجب تطبيق هذا من خلال حساب root أو صلاحيات sudo: sudo dpkg --clear-selections سيقوم الأمر باختيار كل الحِزم التي لا ترغب بتنصيبها. يجب أيضا تحديث قائمة الحِزم المحلية لضمان أن عمليات التنصيب سيكون لديها سجل أو معلومات لكل البرامج التي نحتاج تنصيبها. عملية التنصيب والتحدث الفعلية سيتم معالجتها من خلال أداة dselect. يجب التأكد أن الأداة dselect قد تم تنصيبها. تمتلك هذه الأداة قاعدة بيانات خاصة بها، لذا يجب تحديثها قبل الاستكمال: sudo apt-get update sudo apt-get install dselect sudo dselect update الآن نستطيع تطبيق قائمة الحزم فوق القائمة الحالية؛ لمعرفة أي حزم يجب الاحتفاظ بها أو تحميلها: sudo dpkg --set-selections < packagelist.txt يقوم هذا الأمر بضبط حالات الحزم التي نريدها. لتطبيق التغييرات يجب تطبيق الأمر الفرعي dselect-upgrade من الأمر apt-get: sudo apt-get dselect-upgrade سيقوم هذا الأمر بتحميل وتنصيب الحزم الضرورية. وسيقوم بإزالة الحزم التي لم يتم اختيارها. وفي النهاية فإن قائمة الحزم يجب أن تتطابق مع تلك التي تم استيرادها من الحاسوب الأول، بغض النظر عن أن ملفات الإعدادات ما زالت تحتاج لأن يتم نسخها أو تعديلها. إضافة المستودعات والأرشيف الشخصي للحزم PPA تحتوي المجموعة الافتراضية من المستودعات التي يتم توفيرها في أغلب التّوزيعات على حِزم كافية لأغلب المستخدمين. بالرغم من ذلك فإنك تحتاج في الكثير من الأحيان إلى مصادر إضافية. سنقوم في هذا القسم بمناقشة آلية أعداد أدوات الحزم لتتعامل مع مصادر إضافية. إضافة أرشيف شخصي للحزم يعتبر الأرشيف الشخصي للحزم (PPAs) بديلا عن المستودعات التقليدية. الأرشيف الشخصي للحزم متاح فقط لأنظمة أوبنتو، حتى كتابة هذا المقال. عادة ما يتميز الأرشيف الشخصي للحزم بمجال أصغر من المستودعات، ويحتوي مجموعة مركزة من التطبيقات التي يتم الاحتفاظ بها مِن خلال مَن يمتلك الأرشيف الشخصي للحِزم. إضافة أرشيف الشخصي للحزم لنظامك، يسمح لك بإدارة الحِزم التي يحتويها مع أدوات إدارة الحِزم التي اعتدت عليها. هذه الطريقة ستزودنا بحزمة أو مجموعة من الحِزم المحدّثة والتي لا يتضمنها مستودع الحِزم الخاص بالتوزيعة. يجب الانتباه إلى ضرورة إضافة الأرشيف الشخصي للحزم الذي تثق به، حيث أنك تسمح لحافظة غير رسمية ببناء الحِزم لنظامك. لإضافة أرشيف الشخصي للحزم، يمكنك استخدام الأمر add-apt-repository. يجب أن تضيف الاسم ppa:، متبوعًا باسم مالك الأرشيف الشخصي للحزم على Launchpad، شرطة مائلة ثم اسم الأرشيف الشخصي للحزم: sudo add-apt-repository ppa:owner_name/ppa_name قد يتطلب الأمر الموافقة على قبول مفتاح صاحب الحِزم. بعد ذلك سيتم إضافة الأرشيف الشخصي للحزم لنظامك، مما يسمح لك بتنصيب الحزم بأوامر apt الاعتيادية. قبل البحث عن الحزم أو تنصيبها، قمت بالتأكد من تحديث ذاكرة التخزين المؤقت المحلية بالمعلومات حول الأرشيف الشخصي الجديد للحِزم: sudo apt-get update إضافة مستودعات لإضافة المزيد من المستودعات لأنظمة أوبنتو أو دبيان، يمكنك اتباع أحدِ مسارين. المسار الأول يتم بتعديل قوائم المصادر لديك مباشرة. بإمكانك تعديل ملف etc/apt/sources.list/ أو استبدال ملف قائمة جديد في مجلد /etc/apt/sources.list.d/. إذا قمت باستخدام الطريقة الثانية فيجب الانتباه إلى أن اسم الملف الذي قمت بإنشائه يجب أن ينتهي بـ list.: sudo nano /etc/apt/sources.list.d/new_repo.list يمكنك إضافة موقع المستودع الجديد في الملف الجديد باستخدام الشكل التالي: deb_or_deb-src url_of_repo release_code_name_or_suite component_names الأجزاء المختلفة لمواصفات المستودع موضحة كما يلي: deb أو deb-src: لتحديد نوع المستودع. تستخدم deb لتحديد المستودع العادي، بينما مستودعات المصادر تبدأ بـ deb-src. url: العنوان الرئيسي للمستودع. يجب أن يكون الموقع الذي يتواجد فيه المستودع. release code name or suite: عادة ما يكون الاسم الرسمي لإصدار التوزيعة، لكن قد يكون أي اسم مستخدم لتعريف مجموعة محددة من الحِزم التي تم إنشاؤها للإصدار الذي تستخدمه من التوزيعة. component names: علامات لاختيار الحِزم التي ترغب بتوفرها. وتعتبر ميزة يتم توفيرها من القائمين على التوزيعة؛ لتقديم توضيح حول المصداقية أو قيود الترخيص للبرامج التي تحتويها. باستطاعتك إضافة هذه الأسطر بداخل الملف. معظم المستودعات تحتوي معلومات حول الهيئة التي يجب استخدامها. الطّريقة الأخرى لإضافة المزيد من المستودعات يتم باستخدام الأمر add-apt-repository. توزيعات أوبنتو تحتوي هذا الأمر بشكل افتراضي، بينما يمكن تنصيبها إلى توزيعات دبيان من خلال حزمة software-properties-common: sudo apt-get update sudo apt-get install software-properties-common بعد ذلك يمكن إضافة الأسطر التي تريد إضافتها إلى الأمر add-apt-repository. بالطبع يجب أن تكون الإضافات بنفس الهيئة أو الشكل الذي تستخدمه في حالة الإضافات اليدوية: sudo add-apt-repository 'deb url release component' يجب التأكد من تحديث الذاكرة المؤقتة المحلية للحِزم بعد تطبيق أي تحديث للمستودع؛ كي يكون النظام على وعي بالحِزم المتاحة حديثًا: sudo apt-get update خاتمة هناك العديد من عمليات إدارة الحِزم التي يمكنك إجراؤها، لكننا حاولنا تغطية أغلب الخطوات الشائعة هنا. إذا كان لديك أي تفضيلات أو اهتمامات أخرى، يرجى استخدام قسم التعليقات أدناه لنعرفها. ترجمة -وبتصرف- للمقال Ubuntu and Debian Package Management Essentials لصاحبه Justin Ellingwood.
  2. إدارة الحزم هي أحد الميزات الرئيسة التي تتحفنا بها توزيعات أنظمة لينكس. طريقة التحزيم وأدوات إدارة الحِزم تختلف من توزيعة إلى أخرى، رغم ذلك ظهرت مجموعتان وتم تصنيفهما الأكثر انتشارًا. بخصوص التوزيعات المبنية على ريدهات لينكس، فإنها تستخدم أدوات RPM مثل rpm و yum. أما المجموعة الأخرى والتي يتم استخدامها من قِبل دبيان ، أوبنتو ، والتوزيعات ذات العلاقة، فإنها تستخدم هيئة التحزيم بطريقة deb وأدوات مثل apt و dpkg. سيُعني المقال بمناقشة هذه المجموعة الأخيرة. ما الذي سيغطيه هذا المقال سيغطي هذا المقال أدوات إدارة الحِزم على مستوى المستخدم، والتي تستخدم غالبًا في أنظمة دبيان وأوبنتو، لن يتم تغطية الأدوات الضرورية لإنشاء الحِزم بسبب الآراء المتباينة حول السياسات بين مختلف التوزيعات والتعقيدات المتضمنة بأمثلة لها اعتبارها. سوف نناقش كل أداة متاحة بشكل منفرد في ملخص أدوات إدارة نظام الحِزم في دبيان، لكن أغلبية هذا المقال سيكون مرتبًا حسب الوظيفة وليس حسب الأداة؛ حيث أن هذا المقال يعتبر مرجعًا وظيفيًا. لتحقيق الاستفادة القصوى من هذا المقال يرجى وضع النقاط التالية في الاعتبار: إذا كنت مبتدئًا في أدوات إدارة الحِزم في دبيان يرجى قراءة ملخص أدوات إدارة الحِزم في دبيان أدناه، هذا القسم سيوفر لك ملخصًا شاملا عن ميّزات كل أداة، وكيف ترتبط ببعضها. استخدم كل قسم من هذا المقال كضرورة للوصول لما تريده. هذا المقال ليس إجرائيًا؛ لذا لك الحرية في الوصول إلى ما تراه مناسبًا لك. قم بنسخ ولصق أمثلة الأوامر المعطاة، مع استبدال القيم المذكورة بالقيم الخاصة بك. نظرة عامة حول أدوات إدارة الحزم الخاصة بدبيان نظام البيئة المتاح في دبيان / أوبنتو يستخدم أدوات إدارة حِزم مختلفة إلى حدِ ما لإدارة البرامج في النظام. أغلب هذه الأدوات غير مترابطة، وتعمل على نفس قاعدة البيانات للحزمة، بعض هذه الأدوات يحاول تقديم واجهات ذات مستوى عالٍ لأنظمة الحِزم، بينما تركّز أدوات أخرى على تزويد وظيفة في مستوى متدنّي. Apt-get يعتبر الأمر Apt-get الأكثر استخدامًا من مجموعة apt، هدفه الرئيسي هو عمل واجهة مع المستودعات البعيدة التي يتم الاحتفاظ بها من قِبل فريق الحِزم الخاص بالتوزيعة، بالإضافة إلى تنفيذ العمليات على الحِزم المتاحة. تعمل مجموعة apt بشكل عام عن طريق سحب المعلومات من المستودعات إلى الذاكرة المؤقتة التي يتم إدارتها من خلال النظام المحلي. الأمر apt-get يستخدم لتحديث الذاكرة المؤقتة المحلية، ويستخدم أيضًا للتعديل على حالة الحِزمة؛ نقصد تنصيب أو إزالة الحزمة من النظام. Apt-cache أحد الأوامر الأخرى المهمة في مجموعة apt هو الأمر apt-cache، والذي يستخدم الذاكرة المؤقتة المحلية ليستعلم عن المعلومات المتعلقة بالحِزم المتاحة في مستودعاته. على سبيل المثال، في أي وقت ترغب في البحث عن حزمة معينة أو أداة لتنفيذ وظيفة معينة، فإن الأمر apt-cache يُعتبر نقطة جيدة للبداية. يمكن أن تكون مفيدة أيضًا لمعرفة أيّ إصدار حزمة سيتم استخدامه من لأي إجراء. كما وتعتبر apt-cache مفيدة في حالة معلومات الاعتمادية، والاعتمادية العكسية. Aptitude يقوم الأمر aptitude بدمج الكثير من وظائف الأمرين المذكورين أعلاه، تتوفر فيه ميزة العمل كأداة سطر الأوامر حيث تدمج وظائف الأداتين المذكورتين أعلاه، وتستطيع أيضًا العمل باستخدام ncurses والتي تعتبر واجهة قائمة نصية. عند العمل من سطر الأوامر، العديد من الأوامر تقوم بتمثيل الإمكانيات الخاصة بـ apt-get و apt-cache بالضبط. لن نناقش aptitude باستفاضة في هذا المقال بسبب التداخل الواضح في وظائف الأوامر. إذا كنت تفضل هذه الأداة فإنك تستطيع دومًا استخدام aptitude بالمبادلة مع apt-get أو apt-cache. Dpkg بينما تركّز الأدوات السابقة على إدارة الحِزم المحفوظة في المستودعات، إلا أن الأمر dpkg يمكن استخدامه ليعمل على حزم deb. بشكل منفرد. هذا الأمر مسؤول بالضبط عن الأعمال التي تجري في كواليس الأوامر المذكورة أعلاه. Tasksel يعتبر برنامج tasksel نوعًا مختلفًا من أدوات إدارة البرامج. فبدلاً من إدارة الحزم أو حتى التطبيقات بشكل منفرد، فإن tasksel تركّز على تجميع البرامج المطلوبة لتنفيذ مهام محددة. يمكن اختيار المهام المنظمة باستخدام واجهة نصيَة، أو يمكن استهدافها مثلما تستهدف بعض الحِزم في أدواة الحزم المعتادة. تعتبر الأداة مفيدة جدًا للبداية والمضي قدمًا في العمل، بالرغم من أنها ليست الطريقة الأمثل. أدوات أخرى هناك العديد من الأدوات المتاحة لإدارة الحزم والتي تزودنا بالعديد من المهام والوظائف، أو تستحضر معلومات بطرق مختلفة. بعض هذه الأدوات مفيدة في مواقف معينة لكننا سنذكر بعض هذه الأدوات عند الضرورة. تحديث الذاكرة المؤقتة للحزم والنظام تزودنا أدوات إدارة الحزم بطرق ممتازة لدوام تحديث قائمة النظام الخاصة بالحزم المتاحة، كما وتزودنا بطرق بسيطة لتحدث الحزم المنصبة حاليا على خادومك. تحديث الذاكرة المؤقتة للحزم المحلية تعتبر المستودعات التي تعتمد عليها أدوات الحزم الخاصة بك في الحصول على معلومات الحزمة محدثة على الدوام، لكن معظم أدوات إدارة الحِزم تعمل بالذاكرة المؤقتة لهذه المعلومات. يحبذ دائمًا عمل تحديث للذاكرة المؤقتة الخاصة بالحِزم لكل جلسة قبل إجراء أي أوامر خاصة بالحزم، هذا سوف يضمن أنك تعمل على المعلومات المحدثة حول البرنامج المتاح. إضافة إلى أن بعض أوامر التنصيب سوف لن تتم إذا كنت تعمل على معلومات قديمة لبعض الحِزم. لتحديث الذاكرة المؤقتة، استخدم الأمر apt-get مع اللاحقة update: sudo apt-get update هذا سوف يجلب قائمة المعلومات المحدثة من المستودعات عن الحزم التي تتابعها. تحديث الحزم بدون إزالة مجموعة الحزم apt تسهل عملية تحديث كل البرامج المنصبة على الخادوم. الأمر apt يميّز بين عمليتي تحديثٍ مختلفتين، العملية الأولى (والتي سيتم تفصيلها في هذا القسم) يمكن استخدامها لتحديث أي جزء لا يتطلب إزالة أجزاء أخرى. تعتبر هذه الطريقة مهمة جدا عندما لا ترغب في إزالة أي حزمة مـُنصبّة تحت أي ظرف. لكن – في الحقيقة – بعض التحديثات تتضمن استبدال أجزاء النظام أو إزالة ملفات التعارض. سوف تتجاهل هذه الطريقة أي تحديثات تتطلب إزالة حِزم: sudo apt-get upgrade بعد تنفيذ هذا الإجراء، سيتم تطبيق أي تحديث لا يتضمن إزالة أجزاء. تحديث الحِزم والإزالة حسب الضرورة تقوم مجموعة apt بتسهيل عملية التحديث لكافة البرامج المنصبة على الخادوم. يقوم الأمر بالتمييز بين عمليتي تحديث مختلفتين، الأولى تقوم بتجاهل أي عملية تحديث تتطلب إزالة أي حزمة، وهذه العملية تم شرحها في القسم أعلاه. العملية الثانية، تقوم بتحديث كل الحِزم، حتى تلك التي تتطلب إزالة حزم معينة. هذا الأمر ضروري غالبًا كاعتمادية لتغيير الحِزم. عادة، يتم استبدال الحِزم التي تمت إزالتها ببديل وظيفي خلال عملية التحديث، مما يجعل عملية التحديث آمنة. على أي حال يجب الانتباه إلى الحزم التي يتوجب إزالتها. لإجراء هذه الوظيفة، نفّذ الأمر: sudo apt-get dist-upgrade سيقوم بتحديث كل الحزم على النظام، تعتبر هذه العملية تحديث كامل أكبر التحديث السّابق. تحميل وتنصيب الحزم تُعد مهمة تسهيل تحميل وتنصيب الحِزم على النظام كإحدى المهام الرئيسة في أدوات إدارة الحِزم. البحث عن الحزم بعد عملية تحميل وتنصيب الحِزم، أول خطوة هي البحث في مستودعات التوزيعة عن الحِزم التي تلزمك. أغلب أوامر apt تعمل بشكل رئيسي على الذاكرة المؤقتة لمعلومات الحِزم المحفوظة على الحاسوب المحلي. بالطبع فإن هذا الأمر يسمح بالمزيد من السرعة في التنفيذ، والتقليل من حركة البيانات عبر الشبكة. البحث عن الحِزم هي عملية تستهدف المعلومات في الذاكرة المؤقتة للحِزم. الأمر الفرعي apt-cache search هو الأداة المستخدمة في البحث عن الحِزم المتاحة. يرجى الانتباه إلى ضرورة التأكد من تحديث الذاكرة المؤقتة المحلية قبل عملية البحث من خلال الأمر sudo apt-get update: apt-cache search package حيث أن هذه العملية تستعلم عن المعلومات فقط، فإنها لا تتطلب صلاحيات sudo. أي بحث يتم إجراؤه سيبحث عن أسماء الحِزم بالإضافة إلى الوصف الكامل لها. على سبيل المثال، إذا كنت تبحث عن htop، ستكون النتائج كما يلي: apt-cache search htop aha - ANSI color to HTML converter htop - interactive processes viewer libauthen-oath-perl - Perl module for OATH One Time Passwords كما ترى، لدينا حزمة اسمها htop، لكننا نرى أيضا برنامجين آخرين، كلاهما أشار إلى htop في حقل الوصف الكامل للحزمة (الوصف الذي يلي المخرجات هو وصف مختصر). تنصيب الحزم من المستودعات لتنصيب حزمة من المستودعات، بالإضافة إلى كل الحزمة المعتمدة عليها، نستخدم الأمر apt-get مع الأمر الفرعي install. المدخلات مع هذا الأمر يجب أن تكون اسم أو أسماء الحزم كما هو ظاهر/مُستخدم في المستودع: sudo apt-get install package بإمكانك تنصيب عدة حِزم دفعة واحدة، مع الفصل بينها بمسافة: sudo apt-get install package1 package2 إذا طلبت حِزمة تتطلب اعتمادات أخرى، سيتم عرضها ويُطلب منك تأكيد العملية، ستكون شبيهة بما يلي: Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: apache2-data Suggested packages: apache2-doc apache2-suexec-pristine apache2-suexec-custom apache2-utils The following NEW packages will be installed: apache2 apache2-data 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 236 kB of archives. After this operation, 1,163 kB of additional disk space will be used. Do you want to continue [Y/n]? كما ترى، بالرغم من أننا طلبنا تنصيب apache2 فأن الحزمة apache2-data مطلوبة كاعتمادية. في هذه الحالة يمكنك الاستكمال بالضغط على زر الإدخال ENTER أو "y" أو تجاهل العملية بالضغط على حرف "n". تنصيب إصدار حِزمة معين من المستودعات إذا كنت تريد تنصيب إصدار محدد لحزمة ما، يمكنك إضافة الإصدار الذي ترغب به مع إشارة التساوي، كما يلي: sudo apt-get install package=version الإصدار في هذه الحالة يجب أن يتوافق مع الأرقام المتاحة في المستودع. هذا يعني استخدام نموذج الإصدارات الموجود في التوزيعة التي تستخدمها. تستطيع إيجاد الإصدارات المتاحة عبر تنفيذ الأمر apt-cache policy package إعادة ضبط الإعدادات العديد من الحِزم تتضمن إعدادات ما قبل التنصيب، والتي يتم تنفيذها بعد اكتمال عملية التنصيب. غالبا يكون لمدير النظام الحرية في اختيار الإعدادات. إذا كنت تريد تأجيل خطوات هذه الإعدادات الإضافية، يمكنك استخدام الأمر dpkg-reconfigure، الذي بدوره يبحث في الحزمة التي يتم تمريرها له، ويعيد تنفيذ أي أوامر للإعدادات اللاحقة المتضمنة في مواصفات الحزمة: sudo dpkg-reconfigure package هذا سيسمح لك بالوصول إلى الإعدادات الإضافية (وربما غيرها) التي تجاوزتها خلال التنصيب. إجراء محاكاة لعمليات الحزمة في بعض الأحيان، تحتاج لترى التأثيرات الجانبية لعملية ما بدون الاعتماد الفعلي لتنفيذ الأمر. لحسن الحظ فإن apt تسمح لك بإضافة s- لمحاكاة العملية. على سبيل المثال، تريد أن ترى ما يمكن أن يحصل عندما تختار تنصيب حزمة، يمكنك تنفيذ الأمر: apt-get install -s package هذا سيسمح لك برؤية كل الاعتمادات والتغييرات على نظامك، والتي سوف تحدث لو قمت بإزالة لاحقة s-. إحدى فوائد هذه الطريقة هو تمكينك من رؤية نتائج عملية ما، والتي تتطلب صلاحية root، بدون استخدام sudo. على سبيل المثال، لتقييم ما يمكن تنصيبه مع apache2، يمكنك تنفيذ الأمر: NOTE: This is only a simulation! apt-get needs root privileges for real execution. Keep also in mind that locking is deactivated, so don't depend on the relevance to the real current situation! Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: apache2-data Suggested packages: apache2-doc apache2-suexec-pristine apache2-suexec-custom apache2-utils The following NEW packages will be installed: apache2 apache2-data 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst apache2-data (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [all]) Inst apache2 (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [amd64]) Conf apache2-data (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [all]) Conf apache2 (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [amd64]) سنحصل على كل المعلومات عن الحِزم والإصدارات دون الحاجة إلى إكمال العملية فعليًا. هذه الطريقة تعمل أيضا مع عمليات أخرى مثل تحديثات النظام: apt-get -s dist-upgrade عدم التنبيه لطلب التأكيد مع إجراءات الحزمة تقوم apt بتنبيه المستخدم بشكل افتراضي لتأكيد العديد من العمليات، هذا يتضمن عمليات التنصيب التي تتطلب اعتماديات إضافية وتحديث للحزم. لتجاوز هذه التحديثات، يمكنك إضافة y- عند تنفيذ هذه الأوامر: sudo apt-get install -y package سيقوم هذا الأمر بتنصيب الحزمة وأي اعتماديات دون طلب التأكيد من المستخدم، يستخدم أيضا في عملية التحديث أيضًا: sudo apt-get dist-upgrade –y إصلاح الاعتماديات غير المكتملة والحِزم في بعض الأحيان لا تكتمل بعض عمليات التنصيب بسبب الاعتماديات أو أي مشاكل أخرى. إحدى هذه الحالات الشائعة لحدوث مثل هذه المشاكل عند تنصيب حزمة من نوع deb. من خلال dpkg، والتي لا تقوم بتحليل الاعتماديات. يقوم الأمر apt-get بمحاولة تنظيم الوضع بتمرير الأمر f-. sudo apt-get install -f سيقوم بالبحث عن أي اعتماديات غير متوفرة ومحاولة تنصيبها لإصلاح شجرة الاعتماديات. إذا كان التنصيب غير مكتمل بسبب مشكلة في الاعتماديات، فيجب أن تكون هذه الخطوة الأولى لمحاولة الحل. تحميل حزمة من المستودعات في الكثير من الأحيان يكون من المفيد تحميل الحِزم من المستودعات دون تنصيبها فعليًا. يمكنك تنفيذ ذلك من خلال الأمر الفرعي download التابع للأمر apt-get. بما أن الحالة هي تحميل ملف فقط، فلا يتأثر النظام، وبالتالي لا حاجة لصلاحيات sudo: apt-get download package يقوم هذا الأمر بتحميل حزمة / حِزم معينة إلى المجلد الحالي. تحميل مصدر الحزمة من المستودعات يمكنك تحميل الملفات المصدرية للحِزم على الرغم من أن الأمر apt يتعامل بشكل رئيسي مع حِزم deb.، طالما أن قوائم المصدر الخاصة بـ apt تكون مجهّزة بتلك المعلومات. لتحميل مصدر الحزمة، يجب أن يكون هناك سطر deb-src مُوافق لذلك في ملف source.list لتلك الـ apt. بإمكانك الاطلاع على كيفية عمل ذلك في قسم إضافة مستودعات apt. بعد أن يتم إعداد المستودعات، يمكنك تحميل مصدر حزمة ما من خلال تنفيذ: sudo apt-get source package هذا الأمر سيقوم بتحميل ملفات الحزمة إلى المجلد الحالي. بالطبع فإن التحميل يشمل مجلد الحزمة، ملف الوصف dsc، وملف الحزمة مضغوطًا ومؤرشفًا. ls -F sublime-text-2.0.2/ sublime-text_2.0.2-1~webupd8~3.tar.gz sublime-text_2.0.2-1~webupd8~3.dsc إذا كنت تود استخدام حِزم التوزيعة كأساس لتعديلات مستقبلية، يمكنك استخدام الطريقة المذكورة. تنصيب حزمة deb. بعض المزودين يقدمون الملفات الخام deb. لبرامجهم، والتي يمكنك تنصيبها على نظامك، ولكن أغلب التوزيعات توصِي بتنصيب البرامج من مستودعاتهم التي تنال قدرًا كافيًا من اهتمامهم. لتنصيب ملفات deb.، نستخدم أداة dpkg والتي تستخدم بشكل رئيسي للعمل مع الحِزم المستقلة. لا تقوم الأداة بإجراءات التنصيب، بدلا من ذلك تبحث عن حِزم deb. في المجلد الحالي، أو المسار الذي يتم تزويده: sudo dpkg --install debfile.deb من المهم ملاحظة أن أداة dpkg لا تقوم بالتعامل مع الاعتماديات، مما يعني أن التنصيب سيبوء بالفشل في حال عدم وجود الحزم التي تعتمد عليها الحزمة الحالية. لحُسن الحظ تقوم الأداة بتحديد الاعتماديات المطلوبة، حيث أنه إذا كانت الاعتماديات متوفرة في المستودعات يمكنك توفيرها بسهولة فيما بعد من خلال تنفيذ الأمر sudo apt-get install -f سيقوم هذا الأمر بتنصيب الاعتماديات المطلوبة، من بينها تلك التي قامت الأداة dpkg بتحديدها. تنصيب "مهام" البرامج من خلال Tasksel من الممكن تنصيب مجموعة كبيرة من البرامج ذات العلاقة من خلال استخدام المهام "tasks". المهام – ببساطة – هي مجموعات من الحِزم التي تقوم بتجهيز بيئة معينة عندما يتم تنصيبها مع بعضها البعض. من الأمثلة على هذه المهام ما يلي: خادوم LAMP (خاص ببيئة تطوير مواقع الويب)، بيئة سطح المكتب، خادوم التطبيقات. قد تحتوي بعض الأنظمة على حزمة tasksel موجودة بشكل افتراضي. للحصول عليها يمكنك تنفيذ: sudo apt-get update sudo apt-get install tasksel كما ويمكنك اختيار حِزم مهام مختلفة بتنفيذ: sudo tasksel سيقوم هذه الأمر بعرض واجهة تسمح لك باختيار مجموعات حِزم مختلفة وتطبيق التغييرات. يمكنك استعراض قائمة المهام المتاحة وحالتها (من حيث التنصيب) بتنفيذ الأمر: tasksel --list-task أخيرًا، يمكنك تنصيب مهام من سطر الأوامر بتنفيذ: sudo tasksel install task_name سنواصل في الجزء القادم المزيد من أساسيات إدارة الحزم في أوبنتو ودبيان. ترجمة -وبتصرف- للمقال Ubuntu and Debian Package Management Essentials لصاحبه Justin Ellingwood.