أساسيات إدارة الحزم في أوبنتو ودبيان - الجزء الأول


خالد محمد

إدارة الحزم هي أحد الميزات الرئيسة التي تتحفنا بها توزيعات أنظمة لينكس. طريقة التحزيم وأدوات إدارة الحِزم تختلف من توزيعة إلى أخرى، رغم ذلك ظهرت مجموعتان وتم تصنيفهما الأكثر انتشارًا.

بخصوص التوزيعات المبنية على ريدهات لينكس، فإنها تستخدم أدوات RPM مثل rpm و yum. أما المجموعة الأخرى والتي يتم استخدامها من قِبل دبيان ، أوبنتو ، والتوزيعات ذات العلاقة، فإنها تستخدم هيئة التحزيم بطريقة deb وأدوات مثل apt و dpkg. سيُعني المقال بمناقشة هذه المجموعة الأخيرة.

package-managment-ubunt-debian.png

ما الذي سيغطيه هذا المقال

سيغطي هذا المقال أدوات إدارة الحِزم على مستوى المستخدم، والتي تستخدم غالبًا في أنظمة دبيان وأوبنتو، لن يتم تغطية الأدوات الضرورية لإنشاء الحِزم بسبب الآراء المتباينة حول السياسات بين مختلف التوزيعات والتعقيدات المتضمنة بأمثلة لها اعتبارها.

سوف نناقش كل أداة متاحة بشكل منفرد في ملخص أدوات إدارة نظام الحِزم في دبيان، لكن أغلبية هذا المقال سيكون مرتبًا حسب الوظيفة وليس حسب الأداة؛ حيث أن هذا المقال يعتبر مرجعًا وظيفيًا.

لتحقيق الاستفادة القصوى من هذا المقال يرجى وضع النقاط التالية في الاعتبار:

  • إذا كنت مبتدئًا في أدوات إدارة الحِزم في دبيان يرجى قراءة ملخص أدوات إدارة الحِزم في دبيان أدناه، هذا القسم سيوفر لك ملخصًا شاملا عن ميّزات كل أداة، وكيف ترتبط ببعضها.
  • استخدم كل قسم من هذا المقال كضرورة للوصول لما تريده. هذا المقال ليس إجرائيًا؛ لذا لك الحرية في الوصول إلى ما تراه مناسبًا لك.
  • قم بنسخ ولصق أمثلة الأوامر المعطاة، مع استبدال القيم المذكورة بالقيم الخاصة بك.

نظرة عامة حول أدوات إدارة الحزم الخاصة بدبيان

نظام البيئة المتاح في دبيان / أوبنتو يستخدم أدوات إدارة حِزم مختلفة إلى حدِ ما لإدارة البرامج في النظام.

أغلب هذه الأدوات غير مترابطة، وتعمل على نفس قاعدة البيانات للحزمة، بعض هذه الأدوات يحاول تقديم واجهات ذات مستوى عالٍ لأنظمة الحِزم، بينما تركّز أدوات أخرى على تزويد وظيفة في مستوى متدنّي.

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.





تفاعل الأعضاء


لا توجد أيّة تعليقات بعد



يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن