اذهب إلى المحتوى

استخدام أوامر مدير الحزم باك مان Pacman في آرتش لينكس


Heidi Melhem

يُعَد مدير الحزم باك مان Pacman أهم ما يميز توزيعة آرتش عن التوزيعات الرئيسية الأخرى، مثل ريد هات Red Hat وأوبنتو Ubuntu وديبيان Debian، فهو يجمع بين صيغة حزمة ثنائية بسيطة وتصميم نظام سهل الاستخدام، كما يساعد على إدارة الحزم بسهولة إما من المستودعات الرسمية، أو من الحزم التي يبنيها المستخدم. ولتبسيط مفهوم باك مان، يمكن عدّ هذا المدير على أنه المكافئ لأوامر apt-get أو apt المستخدمة في أوبنتو أو التوزيعات القائمة على ديبيان.

يُعَد تعلم استخدام أوامر باك مان خطوةً أساسيةً لمستخدمي آرتش لينكس Arch Linux الجدد، إذ تساعدهم على إدارة النظام بالكامل، وهو ما سيتم شرحه في هذه المقال.

أوامر باك مان الأساسية

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

تشمل أوامر باك مان الأساسية عدة عمليات مثل تثبيت حزم أو ترقيتها أو إزالتها أو تنظيف النظام.

تثبيت حزم

يمكنك تثبيت حزمة واحدة أو حزم متعددة باستخدام أوامر باك مان بهذه الطريقة:

pacman -S package_name1 package_name2 ...

تثبيت حزمة باستخدام أوامر باك مان.PNG

يرمز S- في الأمر السابق يرمز للتزامن، أي أن باك مان يقوم بالمزامنة أولًا، وبعد تثبيت الحزم تقوم قاعدة بيانات باك مان بتصنيف هذه الحزم إلى مجموعتين وفقًا لسبب تثبيتها:

  • مثبتة صراحةً explicitly-installed: الحزم التي ثُبّتت باستخدام أمر باك مان العام مع استعمال الخيار S- أو U-.
  • الاعتماديات: الحزم التي ثُبّتت ضمنيًا لأنها مطلوبة من قِبل حزمة أخرى مثبتة صراحةً.

إزالة حزم مثبتة

يمكن إزالة حزمة واحدة مع ترك جميع اعتمادياتها مثبتة عن طريق الأمر التالي:

pacman -R package_name

إزالة حزمة.PNG

أما لإزالة حزمة وجميع اعتمادياتها التي لم تَعُد مطلوبةً من قبل حزمة أخرى مُثبتة، يُستخدم الأمر التالي:

pacman -Rs package_name

قد نحتاج لإزالة اعتماديات لم تَعُد مطلوبةً بسبب حذف الحزمة التي كانت تتطلب هذه الاعتماديات، ويمكن ذلك عن طريق الأمر التالي:

pacman -Qdtq | pacman -Rs -

ترقية الحزم

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

تتم عملية التحديث باستخدام الأمر التالي:

pacman -Syu

نلاحظ وجود ثلاثة خيارات في أمر التحديث ودلالتها كما يلي:

  • الخيار S يشير إلى المزامنة.
  • الخيار y يدل على التحديث، والذي يتم على ذاكرة التخزين المؤقت المحلية.
  • الخيار u يشير إلى تحديث النظام.

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

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

اقتباس

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

عند ظهور مشكلات تخص بعض البرمجيات الأساسية مثل النواة أو xorg أو systemd أو glibc، يجب البحث قبل ترقية هذه البرمجيات عن نماذج سابقة مناسبة فتحها آخرون وأجروا تحديثات.

لا تدعم التوزيعات المتدحرجة مثل آرتش وManjaro التحديثات الجزئية، مما يعني أنه عند إتاحة إصدارات جديدة من مكتبة ما في المستودعات، يجب إعادة بناء جميع الحزم الموجودة في المستودعات. على سبيل المثال، تعتمد الحزمة X والحزمة Y في عملهما على المكتبة L، بالتالي عند تحديث المكتبة L وتحديث الحزمة X فقط، فإن هذا قد يؤدي إلى تعطيل الحزمة Y التي مازالت تعتمد على الإصدار القديم من المكتبة L.

البحث عن حزم عبر pacman

يمكن لمدير الحزم باك مان البحث عن الحزم في قاعدة البيانات سواءً في بيانات أسماء الحزم أو في التوصيف الخاص بها. يقوم باك مان بالاستعلام عن قاعدة البيانات الخاصة بالحزمة المحلية باستخدام الخيار Q- وقاعدة بيانات الملفات باستخدام الخيار F- وقاعدة بيانات المزامنة باستخدام الخيار S-، وذلك كما يلي:

pacman -Ss string1 string2 ...

البحث عن حزمة.PNG

يُستخدم الأمر التالي للبحث عن الحزم المثبتة مسبقًا:

pacman -Qs string1 string2 ...

يُستخدم الأمر التالي للبحث عن أسماء ملفات الحزم في الحزم البعيدة:

pacman -F string1 string2 ...

ويمكن عرض شجرة الاعتماديات لحزمة ما باستخدام الأمر التالي:

pactree package_naenter code hereme

مسح ذاكرة التخزين المؤقت لحزمة

يخزن باك مان الحزم التي نُزلت في المسار /var/cache/pacman/pkg/، ولا يقوم بإزالة أو حذف الإصدارات القديمة للحزم أو تلك التي تم إلغاء تثبيتها تلقائيًا، ويوفر هذا السلوك بعض المزايا:

  1. يسمح للمستخدم بتخفيض إصدار الحزمة دون الحاجة إلى استرداد الإصدار السابق من مصادر أخرى.
  2. يمكن التراجع بسهولة عن إلغاء تثبيت حزمة ما وإعادة تثبيتها مباشرةً من مجلد ذاكرة التخزين المؤقت cache folder.

من الضروري حتى مع هذه المزايا مسح ذاكرة التخزين المؤقت دوريًا لمنع زيادة حجم المجلد وامتلاء الذاكرة. ويمكن ذلك باستخدام سكربت (8)paccache المتوفر في حزمة pacman-contrib، والذي يحذف جميع الإصدارات المخزنة مؤقتًا الخاصة بالحزم المثبتة، والحزم غير المثبتة التي نزلت باسثناء آخر 3 ملفات نزلت، وهو الإعداد الافتراضي ويمكن تغييره، ولاستخدامه يُكتب الأمر بالشكل التالي:

paccache -r

مسح ذاكرة التخزين المؤقت.PNG

ويستخدم الأمر التالي لإزالة جميع الحزم المخزنة مؤقتًا وغير المثبتة حاليًا بالإضافة إلى قاعدة بيانات المزامنة غير المُستخدَمة:

pacman -Sc

كما يمكن استخدام إجراء أشمل يُفرّغ ذاكرة التخزين المؤقت تمامًا عن طريق إزالة جميع الملفات الموجودة فيها، وذلك بكتابة نفس الأمر السابق مع تكرار الخيار c مرتين كما يلي:

pacman -Scc

تثبيت حزم محلية أو خارجية

يستخدم الأمر التالي لتثبيت حزمة محلية ليست من مستودع بعيد:

pacman -U /path/to/package/package_name-version.pkg.tar.xz

أما لتثبيت حزمة بعيدة غير مضمنة في مستودع رسمي يُستخدم الأمر التالي:

pacman -U http://www.example.com/repo/example.pkg.tar.xz

بعض الأخطاء الشائعة

قد تحدث بعض الأخطاء عند استخدام باك مان لإدارة الحزم، مثل حدوث فشل عند بداية الإجراء أو أثناء تنفيذه، وفيما يلي بعض هذه الحالات وطريقة إصلاحها:

فشل عند بدء الإجراء

ينشئ باك مان عند تثبيت حزمة ما ملف قفل يمنع أي نسخة أخرى من باك مان من محاولة تعديل قاعدة بيانات الحزمة في نفس الوقت، ويتم وضع الملف في المسار var/lib/pacman/db.lck/، وهنا قد يصبح ملف القفل بلا فائدة، وذلك عندما تتم مقاطعة باك مان أثناء تغيير قاعدة البيانات، بالتالي حدوث هذا الخطأ؛ والذي يمكن إصلاحه عن طريق التحقق مما إذا كانت هناك عملية ما تحتفظ بملف القفل باستخدام الأمر lsof كما يلي:

lsof /var/lib/pacman/db.lck

يعطي خرج الأمر السابق رقم التعريف الخاص بالعملية الذي يحمل ملف القفل، والذي يمكن من خلاله إيقاف العملية ثم إزالة ملف القفل؛ أما إذا لم ينفذ الأمر السابق أي شيء، فيجب استخدام طريقة أخرى وهي حذف ملف القفل، ولكن قبل ذلك يجب التأكد من عدم تشغيل أي نسخ أخرى من باك مان ثم إزالة ملف القفل باستخدام الأمر التالي:

rm /var/lib/pacman/db.lck

فشل تنفيذ الإجراء

بعد بدء الإجراء قد تحدث أخطاء أثناء تنفيذه، مثل وجود ملفات متعارضة أو أخطاء تتعلق بالحزم، حيث قد تكون الحزمة غير صالحة:

ملفات متعارضة

يحدث هذا الخطأ لاكتشاف باك مان وجود تعارض في الملف ولن يقوم بتعديل الملفات، وتظهر رسالة الخطأ بالشكل التالي:

error: could not prepare transaction
error: failed to commit transaction (conflicting files)
package: /path/to/file exists in filesystem
Errors occurred, no packages were upgraded.

يوجد طريقة آمنة لتصحيحه وتتضمن التحقق أولًا مما إذا كانت حزمة أخرى تمتلك الملف، باستخدام الأمر التالي:

pacman -Qo /path/to/file

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

ويمكن بدلًا من ذلك إعادة التسمية يدويًا ثم إزالة جميع الملفات التي تنتمي إلى الحزمة المعنية، ثم إجبار باك مان على تعديل الملفات التي تطابق الاسم المطلوب كما يلي:

pacman -S –overwrite glob package

حزمة غير صالحة أو تالفة

ينتج هذا الخطأ غالبًا بسبب استخدام أمر Xfer المخصص في ملف ضبط باك مان pacman.conf، ويتعلق الأمر بملفات ذات امتداد part. وهي اختصار كلمة partially أي الحزم التي تم تنزيلها جزئيًا، حيث يجب البحث عن هذه الملفات في المسار /var/cache/pacman/pkg ثم إزالتها.

نستنتج مما ذُكر في المقال أن تعلم أوامر باك مان الأساسية هي أول ما يجب فعله فوريًا بعد تثبيت توزيعة آرتش.

ترجمة -وبتصرف- للمقال Getting Started With Pacman Commands in Arch-based Linux Distributions لصاحبه Dimitrios

اقرأ أيضًا


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

أفضل التعليقات

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



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...