Polecenie dnf: instalacja, aktualizacja i usuwanie pakietów oraz różnice względem yum
Polecenie dnf to polecenie do zarządzania pakietami, którym w dystrybucjach Linuksa z rodziny RHEL wyszukujesz, instalujesz, aktualizujesz i usuwasz pakiety. W AlmaLinux 9 wpisanie yum uruchamia ten sam program. Na serwerze AlmaLinux 9 faktycznie uruchomiono search, info, provides i history, a w wynikach sprawdzono, gdzie szukają pakietów search, info i provides oraz jakie zapisy operacji zostają w history.
Poleceń zmieniających system, takich jak instalacja, usuwanie i aktualizacja, nie uruchamiano. Ich działanie sprawdzono w oficjalnej dokumentacji DNF i w historii operacji zapisanej wcześniej na serwerze.
1️⃣ Związek polecenia dnf z yum
Łatwo założyć, że wpisanie yum uruchamia stary yum, ale w AlmaLinux 9 yum i dnf to dowiązania do tego samego pliku wykonywalnego dnf-3.
ls -l /usr/bin/yum /usr/bin/dnflrwxrwxrwx 1 root root 5 May 21 04:48 /usr/bin/dnf -> dnf-3
lrwxrwxrwx 1 root root 5 May 21 04:48 /usr/bin/yum -> dnf-3Jedyna różnica między yum a dnf to wpisywana nazwa; niezależnie od tego, której użyjesz, podpolecenia i opcje są te same. Wynik search htop uruchomionego osobno przez yum i przez dnf też był identyczny.
Według oficjalnej dokumentacji DNF [Changes in DNF CLI compared to YUM] update i upgrade działają tak samo, a dokumentacja zaleca upgrade.
W starszych dystrybucjach bez dnf używasz polecenia yum tak jak dotąd. Nazwy podpoleceń z tego artykułu, takie jak install, search i history, są w yum takie same.
2️⃣ Wyszukiwanie pakietów poleceniem dnf: search, info, provides
Jeśli nie znasz dokładnej nazwy pakietu programu, który chcesz zainstalować, szukaj poleceniem search z jednym słowem. search szuka słowa w nazwach i podsumowaniach (Summary) pakietów, a pakiet o dokładnie pasującej nazwie umieszcza na samej górze.
dnf search htopLast metadata expiration check: 0:21:53 ago on Wed Oct 28 15:24:31 2026.
========================== Name Exactly Matched: htop ==========================
htop.x86_64 : Interactive process viewerDla htop istniał tylko jeden pakiet o dokładnie tej nazwie, więc wynik skończył się na jednym wierszu pod [Name Exactly Matched].
dnf search wgetLast metadata expiration check: 0:22:35 ago on Wed Oct 28 15:24:31 2026.
========================== Name Exactly Matched: wget ==========================
wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
========================= Name & Summary Matched: wget =========================
perl-HTTP-Tinyish-Wget.noarch : HTTP::Tinyish wget backend
wget2-devel.x86_64 : Libraries and header files needed for using wget2 libraries
wget2-libs.x86_64 : Runtime libraries for GNU Wget2
============================== Name Matched: wget ==============================
wget2.x86_64 : An advanced file and recursive website downloaderSłowo występujące w wielu pakietach, takie jak wget, pojawiło się w trzech grupach: dokładnie ta sama nazwa, słowo w nazwie i w podsumowaniu oraz słowo tylko w nazwie.
search nie przegląda opisu (Description), więc nie nadaje się do szukania słowa, które jest tylko w opisie. Wtedy dodaj opcję [--all], aby rozszerzyć wyszukiwanie także na opis i URL.
Gdy znasz już nazwę pakietu, poleceniem info sprawdzisz wersję, rozmiar i to, z którego repozytorium pochodzi.
dnf info htopLast metadata expiration check: 0:22:37 ago on Wed Oct 28 15:24:31 2026.
Available Packages
Name : htop
Version : 3.3.0
Release : 1.el9
Architecture : x86_64
Size : 198 k
Source : htop-3.3.0-1.el9.src.rpm
Repository : epel
Summary : Interactive process viewer
URL : http://hisham.hm/htop/
License : GPLv2+
Description : htop is an interactive text-mode process viewer for Linux, similar to
: top(1).Jeszcze niezainstalowany htop pojawia się w info htop pod [Available Packages] z wersją 3.3.0 i repozytorium epel. htop jest tylko w repozytorium epel, więc jeśli ponownie uruchomisz search bez epel, nic się nie pojawi.
dnf info wgetLast metadata expiration check: 0:22:38 ago on Wed Oct 28 15:24:31 2026.
Installed Packages
Name : wget
Version : 1.21.1
Release : 11.el9_8
Architecture : x86_64
Size : 3.1 M
Source : wget-1.21.1-11.el9_8.src.rpm
Repository : @System
From repo : appstream
Summary : A utility for retrieving files using the HTTP or FTP protocols
URL : http://www.gnu.org/software/wget/
License : GPLv3+
Description : GNU Wget is a file retrieval utility which can use either the HTTP or
: FTP protocols. Wget features include the ability to work in the
: background while you are logged out, recursive retrieval of
: directories, file name wildcard matching, remote file timestamp
: storage and comparison, use of Rest with FTP servers and Range with
: HTTP servers to retrieve files over slow or unstable connections,
: support for Proxy servers, and configurability.Zainstalowany już wget pojawił się pod [Installed Packages]. Repository miało wartość @System, a repozytorium, z którego pobrano go przy instalacji, było zapisane jako appstream w wierszu [From repo].
Odwrotnie, gdy znasz tylko nazwę pliku i nie wiesz, w którym pakiecie się znajduje, podaj ścieżkę pliku poleceniu provides.
dnf provides /usr/bin/treeLast metadata expiration check: 0:22:40 ago on Wed Oct 28 15:24:31 2026.
tree-1.8.0-10.el9.x86_64 : File system tree viewer
Repo : @System
Matched from:
Filename : /usr/bin/tree
tree-1.8.0-10.el9.x86_64 : File system tree viewer
Repo : baseos
Matched from:
Filename : /usr/bin/treeWyszukiwanie /usr/bin/tree dało dwie grupy dla pakietu tree: stronę zainstalowaną (@System) i stronę repozytorium (baseos). Filename pod [Matched from] to ścieżka, która faktycznie pasowała. Jeśli podasz samą nazwę pliku bez ścieżki, dnf doda przed nią /usr/bin/ i /usr/sbin/ i poszuka ponownie, a jeśli nadal nic nie znajdzie, zakończy się poniższym błędem.
dnf provides nosuchfileLast metadata expiration check: 0:22:41 ago on Wed Oct 28 15:24:31 2026.
Error: No matches found. If searching for a file, try specifying the full path or using a wildcard prefix ("*/") at the beginning.Komunikat błędu radzi podać pełną ścieżkę albo dodać na początku symbol wieloznaczny [*/]. Co każde z trzech poleceń przyjmuje i gdzie szuka, możesz porównać krok po kroku na diagramie poniżej.
3️⃣ Instalacja, usuwanie i aktualizacja pakietów: install, remove, upgrade
Znaleziony pakiet instalujesz poleceniem install. dnf instaluje za jednym razem nie tylko wskazany pakiet, ale też pakiety zależne, których on potrzebuje.
dnf install htopWedług oficjalnej dokumentacji dnf wyświetla listę pakietów do zainstalowania (podsumowanie transakcji) i pyta, czy kontynuować; z [-y] przechodzi dalej bez pytania.
Pakiety zależne potrzebne przy instalacji możesz sprawdzić wcześniej poleceniem repoquery [--requires].
dnf repoquery --requires htopLast metadata expiration check: 0:22:59 ago on Wed Oct 28 15:24:31 2026.
libc.so.6(GLIBC_2.34)(64bit)
libcap.so.2()(64bit)
libhwloc.so.15()(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libm.so.6(GLIBC_2.29)(64bit)
libncursesw.so.6()(64bit)
libnl-3.so.200()(64bit)
libnl-3.so.200(libnl_3)(64bit)
libnl-genl-3.so.200()(64bit)
libnl-genl-3.so.200(libnl_3)(64bit)
libtinfo.so.6()(64bit)
rtld(GNU_HASH)Z samym [--requires] pojawiają się tylko nazwy bibliotek, których wymaga htop. W którym pakiecie są te biblioteki, sprawdzisz następującym poleceniem.
dnf repoquery --requires --resolve htopLast metadata expiration check: 0:23:01 ago on Wed Oct 28 15:24:31 2026.
glibc-0:2.34-283.el9_8.i686
glibc-0:2.34-283.el9_8.x86_64
hwloc-libs-0:2.4.1-6.el9_7.x86_64
libcap-0:2.48-10.el9_8.1.x86_64
libnl3-0:3.11.0-1.el9.x86_64
ncurses-libs-0:6.2-12.20210508.el9.x86_64Po dodaniu [--resolve] wynik zmienia się na nazwy pakietów dostarczających te biblioteki. Spośród nich hwloc-libs nie było na serwerze testowym, więc zostanie zainstalowany razem z htop.
remove usuwa wskazany pakiet razem z pakietami, które od niego zależą, a przy domyślnych ustawieniach usuwa też pakiety zależne, które przestały być potrzebne.
dnf remove htopNawet gdy usuniesz tylko htop, razem z nim znikną pakiety zależne, których nie potrzebuje żaden inny pakiet, jak hwloc-libs zainstalowany z powodu htop.
Pakiety zainstalowane kiedyś jako zależności, których teraz nie potrzebuje już żaden pakiet, usuwa autoremove. Listę tego, co zostanie usunięte, sprawdź najpierw poleceniem list [--autoremove].
dnf list --autoremoveLast metadata expiration check: 0:23:09 ago on Wed Oct 28 15:24:31 2026.
Autoremove Packages
cmake-rpm-macros.noarch 3.31.8-3.el9 @appstream
grub2-tools-efi.x86_64 1:2.06-126.el9_8.alma.1 @baseos
grub2-tools-extra.x86_64 1:2.06-126.el9_8.alma.1 @baseos
libatomic.x86_64 11.5.0-14.el9.alma.1 @baseos
libvisual.x86_64 1:0.4.0-34.el9 @appstream
libwayland-server.x86_64 1.21.0-1.el9 @appstreamdnf autoremoveNa serwerze testowym lista zawierała 6 pakietów, a autoremove usuwa te 6 za jednym razem.
Czy dla zainstalowanych pakietów wyszła nowa wersja, sprawdzasz poleceniem check-update. Gdy dodasz nazwę pakietu, sprawdzi tylko ten pakiet.
dnf check-update libavif libdav1dLast metadata expiration check: 0:52:20 ago on Wed Oct 28 15:24:31 2026.
libavif.x86_64 1.1.1-3.el9 epel
libdav1d.x86_64 1.5.4-1.el9 epelPowyższe polecenie z libavif i libdav1d zakończyło się kodem wyjścia 100, bo oba pakiety miały nową wersję. check-update kończy się kodem 100, gdy są aktualizacje, 0, gdy ich nie ma, i 1 przy błędzie, więc możesz używać go jako warunku w skryptach.
Gdy dodasz nazwę pakietu do list, zobaczysz razem wersję zainstalowaną i nową wersję z repozytorium. Poleceniem updateinfo list sprawdzisz, któremu biuletynowi (advisory) odpowiada ta aktualizacja.
dnf list libavifLast metadata expiration check: 0:52:21 ago on Wed Oct 28 15:24:31 2026.
Installed Packages
libavif.x86_64 0.11.1-5.el9 @epel
Available Packages
libavif.x86_64 1.1.1-3.el9 epelDla libavif zainstalowana wersja 0.11.1-5.el9 pojawiła się pod [Installed Packages], a wersja 1.1.1-3.el9 z repozytorium osobno pod [Available Packages].
dnf updateinfo list libavifLast metadata expiration check: 0:52:24 ago on Wed Oct 28 15:24:31 2026.
FEDORA-EPEL-2026-d611eab94a bugfix libavif-1.1.1-3.el9.x86_64Ta nowa wersja była aktualizacją z biuletynu bugfix FEDORA-EPEL-2026-d611eab94a. Przy aktualizacjach bezpieczeństwa w tym samym miejscu pojawia się poziom ważności z dopiskiem Sec., na przykład [Moderate/Sec.].
Aktualizację uruchamiasz poleceniem upgrade. upgrade instaluje nowe wersje tylko w zakresie, na jaki pozwalają zależności, więc wersja widoczna w check-update może nie zostać zainstalowana dokładnie w tej postaci.
dnf upgrade libavifGdy dodasz nazwę pakietu, do nowej wersji zostaną podniesione tylko ten pakiet i potrzebne pakiety zależne.
dnf upgradeGdy pominiesz nazwę, celem są wszystkie zainstalowane pakiety. Przebieg, czyli wyświetlenie podsumowania transakcji i pytanie o kontynuację, jest taki sam jak przy install, a wykonana transakcja zostaje zapisana z numerem w history.
4️⃣ Lista repozytoriów w poleceniu dnf: repolist
Miejscem, w którym search i install szukają pakietów, jest repozytorium (repository). repolist wyświetla id i nazwy obecnie włączonych repozytoriów.
dnf repolistrepo id repo name
appstream AlmaLinux 9 - AppStream
baseos AlmaLinux 9 - BaseOS
epel Extra Packages for Enterprise Linux 9 - x86_64
epel-cisco-openh264 Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64
extras AlmaLinux 9 - Extras
nginx-stable nginx stable repo
remi-modular Remi's Modular repository for Enterprise Linux 9 - x86_64
remi-safe Safe Remi's RPM repository for Enterprise Linux 9 - x86_64Łatwo założyć, że repozytorium spoza listy nie istnieje na serwerze, ale domyślny wynik repolist pokazuje tylko włączone repozytoria. Z [--all] wyświetla też wyłączone, razem z kolumną status. Na serwerze testowym wszystkie trzy repozytoria CRB z AlmaLinux 9 miały stan disabled.
dnf repolist --all | grep -i crbcrb AlmaLinux 9 - CRB disabled
crb-debuginfo AlmaLinux 9 - CRB - Debug disabled
crb-source AlmaLinux 9 - CRB - Source disabledLiczbę pakietów, adres mirrora, czas wygaśnięcia metadanych i położenie pliku konfiguracyjnego jednego repozytorium sprawdzasz poleceniem repoinfo.
dnf repoinfo baseosLast metadata expiration check: 0:22:55 ago on Wed Oct 28 15:24:31 2026.
Repo-id : baseos
Repo-name : AlmaLinux 9 - BaseOS
Repo-status : enabled
Repo-revision : 1793090609
Repo-updated : Tue Oct 27 17:43:29 2026
Repo-pkgs : 3458
Repo-available-pkgs: 3458
Repo-size : 21 G
Repo-mirrors : https://mirrors.almalinux.org/mirrorlist/9/baseos
Repo-baseurl : http://aws.repo.almalinux.org/almalinux/9.8/BaseOS/x86_64/os/ (9 more)
Repo-expire : 86400 second(s) (last: Wed Oct 28 15:24:26 2026)
Repo-filename : /etc/yum.repos.d/almalinux-baseos.repo
Total packages: 3458W repoinfo baseos pojawiło się 3458 pakietów, a metadane były ustawione na ponowne sprawdzanie co 86 400 sekund (jeden dzień). Plik .repo z wiersza [Repo-filename] to plik konfiguracyjny tego repozytorium. Opcji [--set-enabled] i [--set-disabled], które włączają i wyłączają repozytoria, używa się z poleceniem config-manager z dnf-plugins-core.
5️⃣ Historia operacji i cofanie zmian w poleceniu dnf: history
Po wielu instalacjach i usunięciach trudno śledzić, co i kiedy zmieniono, ale dnf nadaje każdej transakcji (transaction) numer i zapisuje ją w history. Gdy dodasz nazwę pakietu, pojawią się tylko transakcje, które zmieniły ten pakiet.
dnf history list tmuxID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
51 | install -y tmux | 2026-10-15 20:40 | Install | 1W wyniku zawężonym do tmux został tylko jeden wiersz: transakcja 51, która zainstalowała tmux. Zakres numerów zapisuje się z dwiema kropkami, na przykład [50..51].
dnf history list 50..51ID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
51 | install -y tmux | 2026-10-15 20:40 | Install | 1
50 | -y -q install mlocate | 2026-10-07 19:39 | Install | 1 EELiczba w kolumnie [Altered] to liczba zmienionych pakietów. Na końcu wiersza 50 pojawiło się [EE], co oznacza, że transakcja się zakończyła, ale w wyjściu były ostrzeżenia lub błędy.
Wiersz poleceń, zmienione pakiety i kod wyniku jednej transakcji sprawdzisz poleceniem history info.
dnf history info 51Transaction ID : 51
Begin time : Thu Oct 15 20:40:51 2026
Begin rpmdb : d3db9c92a9d0f6ef9a7a1404552bb76e9d56ba7602b1fce73fa5a62170d33c5c
End time : Thu Oct 15 20:40:51 2026 (0 seconds)
End rpmdb : a862c33ee6a2f2d0479e4dc2631907dee47591c5b6795551b755c6cd090ac1df
User : root <root>
Return-Code : Success
Releasever : 9
Command Line : install -y tmux
Persistence : Persist
Comment :
Packages Altered:
Install tmux-3.2a-5.el9.x86_64 @baseosPo otwarciu transakcji 51 w [Command Line] widniało dokładnie uruchomione polecenie install -y tmux. W [Packages Altered] zapisano zainstalowany tmux i repozytorium @baseos, a w [Return-Code] wartość Success. Gdy pominiesz numer, pojawi się najnowsza transakcja.
Jeśli zainstalujesz coś przez pomyłkę, podaj numer transakcji poleceniu history undo, aby wykonać operację odwrotną do tej transakcji. rollback przywraca stan pakietów do chwili tuż po wskazanej transakcji.
dnf history undo 51Transakcja 51 była instalacją tmux, więc undo 51 staje się odwrotną transakcją, która usuwa tmux.
dnf history rollback 50rollback 50 cofa wszystkie transakcje wykonane po 50, aż do ostatniej, więc wynik może być inny niż przy undo 51, które usuwa tylko tmux.
Według oficjalnej dokumentacji, jeśli jest pakiet, którego nie da się cofnąć, undo i rollback kończą działanie bez żadnych zmian. Nawet jeśli zmian wprowadzonych bezpośrednio przez rpm nie ma w historii, nie zatrzymują się z błędem.
🔲 Symulator polecenia dnf
W symulatorze poniżej możesz samodzielnie wpisać polecenia search, info, provides, repolist i history i zobaczyć wynik. Wpisanie ich z yum daje ten sam rezultat.
🔢 FAQ & polecane treści



ℹ️ Informacja o linkach partnerskich
Treści tej witryny zawierają linki partnerskie. Jeśli odwiedzający kupi produkt lub usługę przez taki link, witryna otrzymuje od sprzedawcy prowizję. Kwota płacona przy tym przez kupującego (podczas promocji spada↓) nie wzrasta. Podane ceny, rabaty i dostępność odnoszą się do chwili pisania i mogą różnić się od stanu faktycznego, dlatego przed zakupem sprawdź je u sprzedawcy. Produkty wybieramy i oceniamy według własnych kryteriów, a prowizja nie wpływa ani na kolejność prezentacji, ani na treść ocen.