دليل استخدام مدير الحزم Dnf

مقدمة:

أداة dnf اختصارا ل (Dandified YUM) هي مدير حزم لعدد من التوزيعات التي تستخدم نظام التحزيم rpm مثل RHEL، فيدورا، ألما لينكس، روكي لينكس…، ظهر أول مرة في فيدورا 18 في عام 2013 واستبدل مدير الحزم السابق في فيدورا المسمى yum في الإصدار 22.
كما أصبح مدير الحزم الافتراضي في توزيعة ريد هات إنتربرايز لينكس RHEL 8 وباقي التوزيعات المبنية عليها

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

تحديث الحزم:

- التحقق من وجود تحديثات:

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

dnf check-update

- تحديث كامل النظام:

يمكن ترقية النظام والحزم المثبتة يدويًا إلى أحدث متضمنا ترقيعات للحزم وإصلاحات الأمان باستخدام الأمر التالي.

dnf update

- تحديث حزمة أو مجموعة من الحزم:

dnf update package_name

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

هذا مفيد في حال كان هناك علة في حزمة ما وتريد تجنب تحديثها أو تريد الإبقاء على إصدار قديم لأي سبب كان.

dnf update --exclude package_name
أو اختصارا 
dnf update -x package_name

مع استبدال package_name باسم الحزمة وإذا كان هناك أكثر من واحدة يفصل بينها بفاصلة ,.

- مزامنة الحزم مع المستودعات:

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

dnf distro-sync

البحث عن الحزم:

يمكنك البحث عن الحزم كلمة عن طريق اسمها أو كلمات مفتاحية تصفها.

dnf search package_name

أحيانا تريد البحث عن حزمة ما لكن لا تعرف اسمها كما في الأمثلة التالية:

  • ماهي الحزمة التي تقدم ملف ما في النظام مثل /etc/hosts؟
  • ماهي الحزمة التي تحتوي على الأمر mkdir؟
  • ماهي الحزمة التي تحتوي على برنامج َadb أو fastboot؟
    في هذه الحالة نستخدم الأمر التالي:
dnf provides expression

عرض معلومات عن الحزم:

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

dnf info package_name

تثبيت الحزم:

- تثبت الحزم:

يمكن تثبيت حزمة أو مجموعة من الحزم عن طريق فصلها بمسافة (Space) باستخدام الأمر التالي.

dnf install package_name

- إعادة تثبيت الحزم:

في حال عدم عمل حزمة ما مثل حذف أحد ملفاتها بالخطأ، يمكن إعادة تثبيتها باستخدام خيار إعادة التثبيت.

dnf reinstall package_name

- تنزيل الحزم دون تثبيتها:

بدلاً من تثبيت حزمة، يمكننا اختياريًا تنزيل حزمة ما من المستودع سواء كانت ثنائية (binary) أو مصدرية (SRPMs). بشكل افتراضي يتم تنزيل الحزمة في الدليل الحالي.

  • للحزم الثنائية:
dnf download package_name
  • للحزم المصدرية:
dnf download -- source package_name

إذا كنت ترغب في تنزيل الحزمة في دليل آخر فاستخدم خيار - destdir متبوعًا بمسار الدليل.

dnf download package_name --destdir /tmp/

- تثبيت حزمة rpm تم تنزيلها مسبقا:

في حالة وجود حُزْمَة RPM تم تنزيلها مسبقًا وتريد تثبيتها يمكن استخدام الأمر أدناه متبوعا بالمسار الكامل لحزمة RPM.

dnf install ~/package_name.rpm

حذف الحزم:

لحذف حزمة أو مجموعة من الحزم يمكن استعمال الأمر التالي.

dnf remove package_name

حذف الحزم غير الضرورية:

تساعد إزالة الحزم غير الضرورية -والتي هي تبعيات لحزم مثبتة من قبل المستخدم ولكن لم تعد مطلوبة من قبل أي حزمة- على تقليل مساحة التخزين.

dnf autoremove

العمليات على مجموعات الحزم:

من مزايا dnf إمكانية التعامل مع مجموعة من الحزم - عدة الحزم تحت اسم واحد تخدم جميعها نفس الهدف-، استخدامه يبسط بشكل كبير عملية تثبيت البرامج بدل تثبيتها بشكل فردي.

- عرض مجموعات الحزم:

لسرد جميع مجموعات البرامج المتاحة يمكن اتباع الأمر أدناه:

dnf group list

- سرد حزم مجموعات الحزم:

لمعرفة الحزم التي تحتويها مجموعة ما يمكن اتباع الأمر أدناه:

dnf group info group_name

- تثبيت مجموعة الحزم:

dnf group install group_name

- حذف مجموعة الحزم:

dnf group remove group_name

- تحديث مجموعة الحزم:

dnf group update group_name

ملاحظة
لديك ثلاث حالات ل group_name كما هو موضح في المثال التالي وتطبق على التثبيت، الحذف والترقية:

"dnf group install "KDE Plasma Workspaces"
dnf group install kde-desktop-environment
dnf install @kde-desktop-environment

عرض قائمة الحزم:

ملاحظة:

  • يمكن استخدام الأمر more لتسهيل التنقل.
  • يمكن تحديد اسم حزمة أو مجموعة من الحزم لعرضها.
  • يمكن استعمال الأمر grep إن كنت تريد البحث عن حزمة ما.

- عرض جميع الحزم:

للاطلاع على قائمة الحزم المثبتة محليًا والمتاحة للتثبيت في المستودعات المفعلة.

dnf list
dnf list | more
dnf list package_name

- عرض الحزم المتاحة للتثبيت:

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

dnf list available
dnf list available | more
dnf list available package_name

- عرض الحزم المثبتة:

سيقوم الأمر أدناه بإرجاع قائمة بالحزم المثبتة على النظام الخاص بك،

dnf list installed
dnf list installed | more
dnf list installed package_name
dnf list installed | grep package_name

التعامل مع عمليات dnf (Transaction History):

يسمح الأمر dnf history للمستخدمين بمراجعة عمليات DNF المتمثلة في التثبيت والحذف والترقية… وترتيبها في جدول زمني.

- عرض جميع العمليات:

dnf history list

لعرض سجل العمليات (Transaction) في نطاق معين ، استخدم النموذج التالي:

dnf history list start_id..end_id

بالإضافة إلى عرض سجل Transaction يسمح لك dnf بالتراجع أو تكرارعملية معينة.

- التراجع عن Transaction:

dnf history undo id

- تكرار Transaction:

dnf history redo id

التعامل مع مستودعات الحزم:

يشرح هذا القسم كيفية إضافة مستودع،تفعيله وتعطيله باستخدام الأمر dnf config-manager.
يتم حفظ المستودعات في هذا الدليل /etc/yum.repos.d/.

- عرض المستودعات:

يعرض الأمر التالي مستودعات الحزم الموجودة على النظام بما في ذلك اسمها معرفها وحالتها:

dnf repolist --all
dnf repolist --enabled
dnf repolist --disabled

- إضافة مستودع:

dnf config-manager --add-repo repository_url

  • تفعيل مستودع:
dnf config-manager --set-enabled repository_id

- تعطيل مستودع:

dnf config-manager --set-disabled repository…

خاتمة:

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

أرجو أن يكون هذا الدليل مفيدًا في رحلتك مع التوزيعات الريدهاتية.


المراجع:

Fedora Wiki: DNF

DNF Command Reference

5 إعجابات

بارك الله فيك.
لتأكيد العمليات و أيضا تخفيف رسائل المخرجات. لاحقة :

-yq

وفيك بارك الله

أردت إضافتها في آخر المقال كملاحظة لكني وجدتها غير مفيدة خاصة وأني أريد أن أعرف ما أوافق عليه

بارك الله فيك
لم أجرب dnf من قبل و لم اكن اعلم ان المخرج جميل بهذه الطريقه بعد القرائة تحمست لتجربة فيدورا بعد حل مشكلة البطئ في التحديثات القادمه بإذن الله

وفيك بارك الله.
ترتيب المخرجات جميل، وليس ذلك فحسب بل ما يميز dnf هو وجود أوامر غير متوفرة في باقي مدراء الحزم بعضها موجود في المقال والبعض الآخر لم أذكرها إن تسنى لي الوقت سأكتب عنها مثل dnf module, dnf swap, dnf automatic,… كما يمكن توسيع عمله باسخدام الإضافات.

عند التحديث في فيدورا يقوم بتنزيل الحزم ثم يختبر transaction إن كان سليما سيقوم بالتحديث عندها ثم يختبر transaction مرة أخرى كما يسمح لك بالتراجع عن الأوامر وهذا ما لم ألاحظه لا في pacman ولا في apt.

مدير الحزم dnf عند استعمال مستودع copr سيقوم بتنبيهك بأنه غير رسمي بعكس apt مع ppa.

بالنسبة لمشكل السرعة فجرب الحل الذي وضعة فارس على المنتدى: طريقة زيادة سرعة مدير حزم DNF على Fedora.

في البداية شكرا لردك المكتوب بعنايه :pray:

اعتقد انه لا يوجد مماثل للخيار provide في pacman (علي قدر معرفتي )

بالنسبة للسرعه فقد اطلعت علي مقال الأخ فارس و لكن افضل انتظار dnf5

العفو أخي الكريم

بل أكثر من ذلك ومع dnf5 والذي سيمثل نقلة نوعية للتوزيعات التي ستعتمد عليه وكالعادة فيدورا ستكون أول من سيعتمده في الإصدار 38 على حسب المخطط وسيكون افتراضيا في الإصدار 39.

نقوم بتجربته وقت صدورها إن شاء الله

بالتوفيق، ما دمت لا تواجه مشاكل على توزيعة ما فحاول البقاء معها كما يمكنك استعمال distrobox لتجريب التوزيعات داخل حاوية إن كنت مهتما بها.

شكرا لنصيحتك ، اتمني لو سمعتها في بداية دخولي لعالم لينكس