Un ghid rapid pentru Managerul de pachete DNF
Publicat: 2020-06-06DNF este sistemul implicit de gestionare a pachetelor pe majoritatea distribuțiilor Linux bazate pe RPM acum.
DNF descarcă pachete din depozite, instalează, dezinstalează și actualizează pachetele. Efectuează rezoluția automată a dependenței pentru pachetele pe care le instalați, actualizați sau eliminați și instalează toate pachetele necesare pentru a îndeplini cerințele de dependență.
Pe Fedora, acesta a fost managerul implicit de pachete de la Fedora 22. Pe RHEL 8.x, acum este managerul implicit de pachete.
DNF asigură gestionarea securizată a pachetelor prin activarea verificării semnăturii GPG pe pachetele semnate GPG. DNF nu va instala niciun pachet care nu este semnat cu cheia corectă pentru acel depozit.
Pentru compatibilitate inversă, RHEL 8.x are și o comandă YUM, deși este o legătură către DNF.
De ce DNF?
DNF sau Dandified YUM este YUM de următoarea generație. În comparație cu YUM, DNF are o utilizare mai bună a memoriei, un management îmbunătățit al dependenței și capacitatea de a rula folosind atât Python 2, cât și Python 3.
Managementul pachetelor cu DNF
Trebuie să aveți privilegii de superutilizator pentru a utiliza comanda DNF pentru a instala, actualiza sau elimina pachetul. Urmează un set de comenzi DNF utilizate frecvent de administratori de sistem.
Căutarea unui pachet
Pentru a căuta un pachet instalat sau disponibil în toate depozitele, utilizați
$ sudo dnf search <em>package_name</em>
De exemplu, pentru a căuta pachetul 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
Listarea pachetelor
Pentru a vedea o listă cu toate pachetele instalate și disponibile:
$ 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 ...
Pentru a lista toate pachetele instalate:
$ 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 ...
Pentru a lista toate pachetele disponibile:
$ 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 ...
De exemplu, pentru a lista toate pachetele MySQL care sunt disponibile:
$ 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
Afișarea informațiilor despre pachet
Pentru a afișa informații despre un pachet:
$ sudo dnf info <em>package_name </em>
De exemplu, pentru a afișa informații despre serverul 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.
Instalarea pachetelor
Instalarea unui singur pachet
Pentru a instala un singur pachet și toate dependențele sale neinstalate:
$ sudo dnf install package_name
De exemplu, pentru a instala 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 ..
Acest lucru va instala Nginx și toate cerințele sale de dependență neinstalate.
Instalarea mai multor pachete
De asemenea, puteți instala mai multe pachete adăugând nume de pachete la această comandă. De exemplu, pentru a instala serverul Nginx, PHP și MySQL, introduceți:
$ 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 ...
Instalarea unui pachet după numele său binar de fișier
Dacă știți numele fișierului binar de instalat, dar nu și numele pachetului, chiar și asta este suficient pentru a instala pachetul relevant.

De exemplu, dacă introduceți:
$ 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 caută și găsește pachetul care furnizează /usr/sbin/
numit și vă solicită să îl instalați.
Găsirea pachetului deține un fișier
Dacă știți numele fișierului și doriți să găsiți ce pachet îl oferă (instalat sau nu), utilizați:
$ sudo dnf provides <em>file_name</em>
De exemplu, pentru a găsi pachetul care furnizează numele, binarul pentru serverul DNS utilizează:
$ 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
Scoaterea unui pachet
Pentru a elimina un pachet:
sudo dnf remove <em>package_name</em>
Dar aveți grijă, DNF nu poate elimina un pachet fără a elimina și pachetele care depind de el. Pentru a elimina pachetul nmap utilizați:
$ 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]:
Gestionarea grupurilor de pachete
Un grup de pachete este o colecție de pachete care sunt strâns legate și servesc unui scop comun. Instalarea unui grup de pachete instalează un set de pachete, economisind mult timp.
Listați toate grupurile de pachete
Pentru a lista toate grupurile de pachete:
$ 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
Listați toate pachetele dintr-un grup
Pentru a lista toate pachetele dintr-un grup:
$ sudo dnf group info <em>package_name</em>
De exemplu, pentru a vizualiza pachetele din grupul Instrumente de securitate:
$ 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
Instalarea unui grup de pachete
Instalarea unui grup va instala toate pachetele dintr-un grup. Pentru a instala un grup de pachete utilizați:
sudo dnf group install <em>package_group_name</em>
De exemplu, pentru a instala grupul „Servere de rețea”:
$ 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]:
Eliminarea unui grup de pachete
Pentru a elimina un grup de pachete:
sudo dnf remove <em>package_name</em>
Deci, pentru a elimina grupul de pachete „Instrumente de securitate”:
$ 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]:
Actualizarea pachetelor
Actualizarea tuturor pachetelor
Pentru a actualiza toate pachetele și dependențele acestora, puteți utiliza:
$ 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!
Aceasta instalează toate actualizările care pot fi instalate. Atât upgrade-ul dnf , cât și actualizarea dnf au același efect, dar este de preferat upgrade-ul dnf.
Actualizarea unui singur pachet
Pentru a actualiza un singur pachet, rulați:
$ sudo dnf upgrade package_name
De exemplu, pentru a actualiza pachetul python:
$ sudo dnf upgrade python
Concluzie
Învățarea DNF poate fi plină de satisfacții, deoarece este adesea cea mai rapidă modalitate de a efectua sarcini de administrare a sistemului. Dacă sunteți interesat să învățați RHEL 8, puteți consulta acest curs Udemy.