دليل سريع لإدارة الحزم DNF
نشرت: 2020-06-06DNF هو نظام إدارة الحزم الافتراضي في معظم توزيعات Linux التي تستند إلى RPM الآن.
يقوم DNF بتنزيل الحزم من حزم تثبيت المستودعات وإلغاء التثبيت والتحديثات. يقوم بتنفيذ حل تبعية تلقائي للحزم التي تقوم بتثبيتها أو تحديثها أو إزالتها وتثبيت جميع الحزم اللازمة للوفاء بمتطلبات التبعية.
في Fedora ، كان هو مدير الحزم الافتراضي منذ Fedora 22. في RHEL 8.x ، أصبح الآن مدير الحزم الافتراضي.
يوفر DNF إدارة آمنة للحزم من خلال تمكين التحقق من توقيع GPG على الحزم الموقعة لـ GPG. لن يقوم DNF بتثبيت أي حزمة غير موقعة بالمفتاح الصحيح لهذا المستودع.
للتوافق مع الإصدارات السابقة ، يحتوي RHEL 8.x على أمر YUM أيضًا ، على الرغم من أنه ارتباط بـ DNF.
لماذا DNF؟
DNF أو Dandified YUM هو الجيل التالي من YUM. مقارنةً بـ YUM ، يتمتع DNF باستخدام أفضل للذاكرة وإدارة تبعية محسّنة وقدرة على التشغيل باستخدام كل من Python 2 و Python 3.
إدارة الحزم مع DNF
يجب أن يكون لديك امتيازات المستخدم المتميز لاستخدام أمر DNF لتثبيت الحزمة أو تحديثها أو إزالتها. فيما يلي مجموعة من أوامر DNF التي كثيرًا ما يستخدمها مسؤولو النظام.
البحث عن طرد
للبحث عن حزمة مثبتة أو متاحة عبر جميع المستودعات ، استخدم
$ sudo dnf search <em>package_name</em>
على سبيل المثال للبحث عن الحزمة Nmap:
$ sudo dnf search nmap
Last metadata expiration check: 0:05:14 ago on Tue 02 Jun 2020 08:38:09 PM UTC. ==================================== Name Exactly Matched: nmap ===================================== nmap.x86_64 : Network exploration tool and security scanner =================================== Name & Summary Matched: nmap ==================================== nmap-ncat.x86_64 : Nmap's Netcat replacement
سرد الحزم
لمشاهدة قائمة بجميع الحزم المثبتة والمتاحة:
$ sudo dnf list all
Installed Packages GConf2.x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-tui.x86_64 1:1.22.8-4.el8 ...
لسرد كافة الحزم المثبتة:
$ sudo dnf list installed
Installed Packages NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-tui.x86_64 1:1.22.8-4.el8 @anaconda PackageKit.x86_64 1.1.12-4.el8 @AppStream PackageKit-glib.x86_64 1.1.12-4.el8 @AppStream WALinuxAgent.noarch 2.2.38-1.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms abattis-cantarell-fonts.noarch 0.0.25-4.el8 @AppStream acl.x86_64 2.2.53-1.el8 @anaconda ...
لسرد جميع الحزم المتاحة:
$ sudo dnf list available
Last metadata expiration check: 1:15:10 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Available Packages CUnit.i686 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms CUnit.x86_64 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms CUnit-devel.i686 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms CUnit-devel.x86_64 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms ...
على سبيل المثال ، لسرد جميع حزم MySQL المتوفرة:
$ sudo dnf list available "mysql*"
Last metadata expiration check: 1:17:04 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Available Packages mysql.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-common.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-devel.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-errmsg.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-libs.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-server.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-test.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
عرض معلومات العبوة
لعرض معلومات حول الحزمة:
$ sudo dnf info <em>package_name </em>
على سبيل المثال ، لعرض معلومات حول خادم httpd:
$ sudo dnf info httpd
Last metadata expiration check: 0:15:04 ago on Mon 01 Jun 2020 11:23:11 PM UTC. Available Packages Name : httpd Version : 2.4.37 Release : 21.module+el8.2.0+5008+cca404a3 Architecture : x86_64 Size : 1.4 M Source : httpd-2.4.37-21.module+el8.2.0+5008+cca404a3.src.rpm Repository : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Summary : Apache HTTP Server URL : https://httpd.apache.org/ License : ASL 2.0 Description : The Apache HTTP Server is a powerful, efficient, and extensible : web server.
تثبيت الحزم
تثبيت حزمة واحدة
لتثبيت حزمة واحدة وجميع تبعياتها غير المثبتة:
$ sudo dnf install package_name
على سبيل المثال ، لتثبيت Nginx:
$ sudo dnf install nginx
Dependencies resolved. =========================================================================================== Package Arch Version Repository Size =========================================================================================== Installing: nginx x86_64 1:1.14.1-9.module+el8.0.0+4108+af250afe rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k Installing dependencies: gd x86_64 2.2.5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k jbigkit-libs x86_64 2.1-14.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 55 k ..
سيؤدي هذا إلى تثبيت Nginx وجميع متطلبات التبعية غير المثبتة.
تثبيت حزم متعددة
يمكنك أيضًا تثبيت حزم متعددة عن طريق إضافة أسماء الحزم إلى هذا الأمر. على سبيل المثال ، لتثبيت Nginx و PHP و MySQL-server ، أدخل:
$ sudo dnf install nginx php mysql-server
Dependencies resolved. =========================================================================================== Package Arch Version Repository Size =========================================================================================== Installing: mysql-server x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms 22 M nginx x86_64 1:1.14.1-9.module+el8.0.0+4108+af250afe rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k php x86_64 7.2.24-1.module+el8.2.0+4601+7c76a223 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.5 M Installing dependencies: apr x86_64 1.6.3-9.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 125 k apr-util x86_64 1.6.1-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 105 k gd x86_64 2.2.5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k httpd x86_64 2.4.37-21.module+el8.2.0+5008+cca404a3 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.4 M httpd-filesystem noarch 2.4.37-21.module+el8.2.0+5008+cca404a3 ...
تثبيت حزمة باسم ملفها الثنائي
إذا كنت تعرف اسم الملف الثنائي المراد تثبيته ، ولكن ليس اسم الحزمة ، فحتى هذا يكفي لتثبيت الحزمة ذات الصلة.

على سبيل المثال ، إذا قمت بإدخال:
$ sudo dnf install /usr/sbin/named
Last metadata expiration check: 1:21:25 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Dependencies resolved. ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Installing: bind x86_64 32:9.11.13-5.el8_2 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 2.1 M Transaction Summary ===================================================================================================== Install 1 Package Total download size: 2.1 M Installed size: 4.5 M Is this ok [y/N]:
يقوم DNF بالبحث والعثور على الحزمة التي توفر /usr/sbin/
المسماة وتطالبك بتثبيتها.
البحث عن الحزمة التي تمتلك ملفًا
إذا كنت تعرف اسم الملف وتريد العثور على الحزمة التي توفرها (مثبتة أم لا) ، فاستخدم:
$ sudo dnf provides <em>file_name</em>
على سبيل المثال ، للعثور على الحزمة التي توفر اسمًا ، يستخدم الملف الثنائي لخادم DNS:
$ sudo dnf provides named
Last metadata expiration check: 1:27:30 ago on Mon 01 Jun 2020 11:23:11 PM UTC. bind-32:9.11.4-16.P2.el8.x86_64 : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) : server Repo : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Matched from: Filename : /usr/sbin/named
إزالة الحزمة
لإزالة الحزمة:
sudo dnf remove <em>package_name</em>
لكن كن حذرًا ، DNF غير قادر على إزالة الحزمة دون إزالة الحزم التي تعتمد عليها. لإزالة حزمة nmap ، استخدم:
$ sudo dnf remove nmap Dependencies resolved. ===================================================================================================== Package Architecture Version Repository Size ===================================================================================================== Removing: nmap x86_64 2:7.70-5.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 24 M Transaction Summary ===================================================================================================== Remove 1 Package Freed space: 24 M Is this ok [y/N]:
إدارة مجموعات الحزم
مجموعة الحزم هي مجموعة من الحزم وثيقة الصلة وتخدم غرضًا مشتركًا. يؤدي تثبيت مجموعة حزم إلى تثبيت مجموعة من الحزم ، مما يوفر الكثير من الوقت.
ضع قائمة بجميع مجموعات الحزم
لسرد كافة مجموعات الحزم:
$ sudo dnf group list
Available Environment Groups: Server with GUI Server Workstation Custom Operating System Virtualization Host Installed Environment Groups: Minimal Install Installed Groups: Security Tools Container Management Available Groups: Legacy UNIX Compatibility Development Tools Scientific Support .NET Core Development Graphical Administration Tools Headless Management RPM Development Tools Network Servers System Tools Smart Card Support
قائمة بجميع الحزم في مجموعة
لسرد كل الحزم في مجموعة:
$ sudo dnf group info <em>package_name</em>
على سبيل المثال ، لعرض الحزم في مجموعة أدوات الأمان:
$ sudo dnf group info “security tools”
Group: Security Tools Description: Security tools for integrity and trust verification. Default Packages: scap-security-guide Optional Packages: aide hmaccalc openscap openscap-engine-sce openscap-utils scap-security-guide-doc scap-workbench tpm-quote-tools tpm-tools tpm2-tools trousers
تثبيت مجموعة حزم
سيؤدي تثبيت مجموعة إلى تثبيت جميع الحزم في مجموعة. لتثبيت مجموعة حزم ، استخدم:
sudo dnf group install <em>package_group_name</em>
على سبيل المثال ، لتثبيت مجموعة "خوادم الشبكة":
$ sudo dnf group install “Network Servers”
Last metadata expiration check: 1:40:14 ago on Wed 03 Jun 2020 05:53:11 PM UTC. Dependencies resolved. =========================================================================================== Package Architecture Version Repository Size =========================================================================================== Installing Groups: Network Servers Transaction Summary =========================================================================================== Is this ok [y/N]:
إزالة مجموعة حزم
لإزالة مجموعة حزم:
sudo dnf remove <em>package_name</em>
لذلك ، لإزالة مجموعة حزم "أدوات الأمان":
$ sudo dnf group remove "security tools"
Dependencies resolved. ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Removing: scap-security-guide noarch 0.1.48-7.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 182 M Removing unused dependencies: GConf2 x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 6.3 M libxslt x86_64 1.1.32-4.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 734 k openscap x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 58 M openscap-scanner x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 137 k xml-common noarch 0.6.3-50.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 78 k Removing Groups: Security Tools Transaction Summary ===================================================================================================== Remove 6 Packages Freed space: 247 M Is this ok [y/N]:
تحديث الحزم
تحديث كافة الحزم
لتحديث جميع الحزم وتبعياتها ، يمكنك استخدام:
$ sudo dnf upgrade
Last metadata expiration check: 1:09:31 ago on Tue 02 Jun 2020 08:38:09 PM UTC. Dependencies resolved. Nothing to do. Complete!
يقوم هذا بتثبيت كافة التحديثات التي يمكن تثبيتها. كل من ترقية dnf وتحديث dnf لهما نفس التأثير ، لكن يُفضل ترقية dnf.
تحديث حزمة واحدة
لتحديث حزمة واحدة ، قم بتشغيل:
$ sudo dnf upgrade package_name
على سبيل المثال ، لتحديث حزمة python:
$ sudo dnf upgrade python
استنتاج
يمكن أن يكون تعلم DNF مجزيًا لأنه غالبًا ما يكون أسرع طريقة لأداء مهام إدارة النظام. إذا كنت مهتمًا بتعلم RHEL 8 ، فيمكنك الاطلاع على دورة Udemy هذه.