Krótki przewodnik po Menedżerze pakietów DNF
Opublikowany: 2020-06-06DNF jest obecnie domyślnym systemem zarządzania pakietami w większości dystrybucji Linuksa opartych na RPM.
DNF pobiera pakiety z repozytoriów, instaluje, odinstalowuje i aktualizuje pakiety. Wykonuje automatyczne rozpoznawanie zależności dla instalowanych, aktualizowanych lub usuwanych pakietów i instaluje wszystkie pakiety potrzebne do spełnienia wymagań dotyczących zależności.
W Fedorze jest domyślnym menedżerem pakietów od Fedory 22. W RHEL 8.x jest teraz domyślnym menedżerem pakietów.
DNF zapewnia bezpieczne zarządzanie pakietami, umożliwiając weryfikację podpisu GPG na pakietach podpisanych przez GPG. DNF nie zainstaluje żadnego pakietu nie podpisanego poprawnym kluczem dla tego repozytorium.
Aby zapewnić kompatybilność wsteczną, RHEL 8.x ma również polecenie YUM, chociaż jest to łącze do DNF.
Dlaczego DNF?
DNF lub Dandified YUM to następna generacja YUM. W porównaniu z YUM, DNF ma lepsze wykorzystanie pamięci, ulepszone zarządzanie zależnościami i możliwość uruchamiania przy użyciu zarówno Pythona 2, jak i Pythona 3.
Zarządzanie pakietami za pomocą DNF
Musisz mieć uprawnienia superużytkownika, aby używać polecenia DNF do instalowania, aktualizowania lub usuwania pakietu. Poniżej znajduje się zestaw poleceń DNF często używanych przez administratorów systemu.
Wyszukiwanie paczki
Aby wyszukać pakiet zainstalowany lub dostępny we wszystkich repozytoriach, użyj
$ sudo dnf search <em>package_name</em>
Na przykład, aby wyszukać pakiet 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
Wyświetlanie pakietów
Aby wyświetlić listę wszystkich zainstalowanych i dostępnych pakietów:
$ 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 ...
Aby wyświetlić listę wszystkich zainstalowanych pakietów:
$ 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 ...
Aby wyświetlić listę wszystkich dostępnych pakietów:
$ 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 ...
Na przykład, aby wyświetlić listę wszystkich dostępnych pakietów 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
Wyświetlanie informacji o paczce
Aby wyświetlić informacje o paczce:
$ sudo dnf info <em>package_name </em>
Na przykład, aby wyświetlić informacje o serwerze 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.
Instalowanie pakietów
Instalacja pojedynczego pakietu
Aby zainstalować pojedynczy pakiet i wszystkie jego niezainstalowane zależności:
$ sudo dnf install package_name
Na przykład, aby zainstalować 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 ..
Spowoduje to zainstalowanie Nginx i wszystkich jego niezainstalowanych wymagań dotyczących zależności.
Instalowanie wielu pakietów
Możesz także zainstalować wiele pakietów, dodając nazwy pakietów do tego polecenia. Na przykład, aby zainstalować serwer Nginx, PHP i MySQL, wpisz:
$ 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 ...
Instalowanie pakietu według jego binarnej nazwy pliku
Jeśli znasz nazwę pliku binarnego do zainstalowania, ale nie znasz nazwy pakietu, nawet to wystarczy, aby zainstalować odpowiedni pakiet.

Na przykład, jeśli wpiszesz:
$ 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 wyszukuje i znajduje pakiet zawierający /usr/sbin/
o nazwie i monituje o jego zainstalowanie.
Znalezienie, który pakiet jest właścicielem pliku
Jeśli znasz nazwę pliku i chcesz dowiedzieć się, który pakiet ją zapewnia (zainstalowany lub nie), użyj:
$ sudo dnf provides <em>file_name</em>
Na przykład, aby dowiedzieć się, który pakiet zawiera nazwę, plik binarny dla serwera DNS użyj:
$ 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
Usuwanie pakietu
Aby usunąć pakiet:
sudo dnf remove <em>package_name</em>
Ale bądź ostrożny, DNF nie jest w stanie usunąć pakietu bez usunięcia pakietów, które od niego zależą. Aby usunąć pakiet nmap użyj:
$ 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]:
Zarządzanie grupami pakietów
Grupa pakietów to zbiór pakietów, które są ze sobą ściśle powiązane i służą wspólnemu celowi. Instalowanie grupy pakietów powoduje zainstalowanie zestawu pakietów, co pozwala zaoszczędzić dużo czasu.
Wyświetl listę wszystkich grup pakietów
Aby wyświetlić listę wszystkich grup pakietów:
$ 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
Wyświetl listę wszystkich pakietów w grupie
Aby wyświetlić listę wszystkich pakietów w grupie:
$ sudo dnf group info <em>package_name</em>
Na przykład, aby wyświetlić pakiety w grupie Narzędzia bezpieczeństwa:
$ 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
Instalowanie grupy pakietów
Zainstalowanie grupy spowoduje zainstalowanie wszystkich pakietów w grupie. Aby zainstalować grupę pakietów, użyj:
sudo dnf group install <em>package_group_name</em>
Na przykład, aby zainstalować grupę „Serwery sieciowe”:
$ 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]:
Usuwanie grupy pakietów
Aby usunąć grupę pakietów:
sudo dnf remove <em>package_name</em>
Aby usunąć grupę pakietów „Narzędzia bezpieczeństwa”:
$ 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]:
Aktualizowanie pakietów
Aktualizacja wszystkich pakietów
Aby zaktualizować wszystkie pakiety i ich zależności, możesz użyć:
$ 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!
Spowoduje to zainstalowanie wszystkich aktualizacji, które można zainstalować. Zarówno aktualizacja dnf , jak i aktualizacja dnf mają ten sam efekt, ale preferowana jest aktualizacja dnf.
Aktualizacja pojedynczego pakietu
Aby zaktualizować pojedynczy pakiet, uruchom:
$ sudo dnf upgrade package_name
Na przykład, aby zaktualizować pakiet Pythona:
$ sudo dnf upgrade python
Wniosek
Nauka DNF może być satysfakcjonująca, ponieważ często jest to najszybszy sposób wykonywania zadań administracyjnych systemu. Jeśli jesteś zainteresowany nauką RHEL 8, możesz sprawdzić ten kurs Udemy.