Package Management with dnf
List the enabled repos: either with dnf repolist or dnf repolist --enabled. I can add the verbose option -v.
user1@localhost:~$ dnf repolist -v
Loaded plugins: builddep, changelog, config-manager, copr, debuginfo-install, download, generate_completion_cache, groups-manager, kpatch, needs-restarting, notify-packagekit, playground, product-id, repoclosure, repodiff, repograph, repomanage, reposync, subscription-manager, system-upgrade, uploadprofile
Not root, Subscription Management repositories not updated
DNF version: 4.20.0
cachedir: /var/tmp/dnf-user1-w76vxc5s
OS software 2.7 MB/s | 2.7 kB 00:00
Application software 2.7 MB/s | 2.8 kB 00:00
Repo-id : AppStream
Repo-name : Application software
Repo-revision : 1761027148
Repo-updated : Tue 21 Oct 2025 08:12:28 AM CEST
Repo-pkgs : 4,514
Repo-available-pkgs: 4,514
Repo-size : 6.5 G
Repo-baseurl : file:///mnt/AppStream
Repo-expire : 172,800 second(s) (last: Sat 04 Jul 2026 10:29:26 PM CEST)
Repo-filename : /etc/yum.repos.d/local.repo
Repo-id : baseOS
Repo-name : OS software
Repo-revision : 1761027164
Repo-updated : Tue 21 Oct 2025 08:12:45 AM CEST
Repo-pkgs : 946
Repo-available-pkgs: 946
Repo-size : 1.3 G
Repo-baseurl : file:///mnt/BaseOS
Repo-expire : 172,800 second(s) (last: Sat 04 Jul 2026 10:29:26 PM CEST)
Repo-filename : /etc/yum.repos.d/local.repo
Total packages: 5,460
user1@localhost:~$
user1@localhost:~$ dnf repolist --enabled -v
Loaded plugins: builddep, changelog, config-manager, copr, debuginfo-install, download, generate_completion_cache, groups-manager, kpatch, needs-restarting, notify-packagekit, playground, product-id, repoclosure, repodiff, repograph, repomanage, reposync, subscription-manager, system-upgrade, uploadprofile
Not root, Subscription Management repositories not updated
DNF version: 4.20.0
cachedir: /var/tmp/dnf-user1-w76vxc5s
Last metadata expiration check: 0:05:39 ago on Sat 11 Jul 2026 05:38:51 PM CEST.
Repo-id : AppStream
Repo-name : Application software
Repo-revision : 1761027148
Repo-updated : Tue 21 Oct 2025 08:12:28 AM CEST
Repo-pkgs : 4,514
Repo-available-pkgs: 4,514
Repo-size : 6.5 G
Repo-baseurl : file:///mnt/AppStream
Repo-expire : 172,800 second(s) (last: Sat 11 Jul 2026 05:38:51 PM CEST)
Repo-filename : /etc/yum.repos.d/local.repo
Repo-id : baseOS
Repo-name : OS software
Repo-revision : 1761027164
Repo-updated : Tue 21 Oct 2025 08:12:45 AM CEST
Repo-pkgs : 946
Repo-available-pkgs: 946
Repo-size : 1.3 G
Repo-baseurl : file:///mnt/BaseOS
Repo-expire : 172,800 second(s) (last: Sat 11 Jul 2026 05:38:51 PM CEST)
Repo-filename : /etc/yum.repos.d/local.repo
Total packages: 5,460
user1@localhost:~$
Observation: There is no difference in output between dnf repolist -v and dnf repolist --enabled -v.
user1@localhost:~$ dnf repolist --enabled
Not root, Subscription Management repositories not updated
repo id repo name
AppStream Application software
baseOS OS software
user1@localhost:~$
user1@localhost:~$ dnf repolist --disabled
Not root, Subscription Management repositories not updated
user1@localhost:~$
user1@localhost:~$ dnf repolist --disabled -v
Loaded plugins: builddep, changelog, config-manager, copr, debuginfo-install, download, generate_completion_cache, groups-manager, kpatch, needs-restarting, notify-packagekit, playground, product-id, repoclosure, repodiff, repograph, repomanage, reposync, subscription-manager, system-upgrade, uploadprofile
Not root, Subscription Management repositories not updated
DNF version: 4.20.0
cachedir: /var/tmp/dnf-user1-w76vxc5s
Last metadata expiration check: 0:06:45 ago on Sat 11 Jul 2026 05:38:51 PM CEST.
Total packages: 0
user1@localhost:~$
Query all available packages from all enabled DNF repos:
user1@localhost:~$ dnf repoquery
Not root, Subscription Management repositories not updated
Last metadata expiration check: 0:41:00 ago on Sat 11 Jul 2026 05:38:51 PM CEST.
389-ds-base-0:3.1.3-5.el10_1.x86_64
389-ds-base-libs-0:3.1.3-5.el10_1.x86_64
389-ds-base-snmp-0:3.1.3-5.el10_1.x86_64
CUnit-0:2.1.3-34.el10.x86_64
HdrHistogram_c-0:0.11.8-7.el10.x86_64
Judy-0:1.0.5-38.el10.x86_64
ModemManager-0:1.22.0-7.el10.x86_64
ModemManager-glib-0:1.22.0-7.el10.x86_64
NetworkManager-1:1.54.0-1.el10.x86_64
NetworkManager-adsl-1:1.54.0-1.el10.x86_64
NetworkManager-bluetooth-1:1.54.0-1.el10.x86_64
NetworkManager-cloud-setup-1:1.54.0-1.el10.x86_64
NetworkManager-config-connectivity-redhat-1:1.54.0-1.el10.noarch
NetworkManager-config-server-1:1.54.0-1.el10.noarch
NetworkManager-libnm-1:1.54.0-1.el10.x86_64
NetworkManager-libreswan-0:1.2.24-2.el10.x86_64
NetworkManager-libreswan-gnome-0:1.2.24-2.el10.x86_64
NetworkManager-ovs-1:1.54.0-1.el10.x86_64
NetworkManager-ppp-1:1.54.0-1.el10.x86_64
NetworkManager-tui-1:1.54.0-1.el10.x86_64
NetworkManager-wifi-1:1.54.0-1.el10.x86_64
NetworkManager-wwan-1:1.54.0-1.el10.x86_64
OpenIPMI-0:2.0.36-3.el10.x86_64
OpenIPMI-lanserv-0:2.0.36-3.el10.x86_64
OpenIPMI-libs-0:2.0.36-3.el10.x86_64
<output omitted>
Verify the enabled DNF repos, choose one of them and query the list of its packages:
user1@localhost:~$ dnf repolist --enabled
Not root, Subscription Management repositories not updated
repo id repo name
AppStream Application software
baseOS OS software
user1@localhost:~$
user1@localhost:~$ dnf repoquery --repo AppStream
Not root, Subscription Management repositories not updated
Last metadata expiration check: 0:44:56 ago on Sat 11 Jul 2026 05:38:51 PM CEST.
389-ds-base-0:3.1.3-5.el10_1.x86_64
389-ds-base-libs-0:3.1.3-5.el10_1.x86_64
389-ds-base-snmp-0:3.1.3-5.el10_1.x86_64
CUnit-0:2.1.3-34.el10.x86_64
HdrHistogram_c-0:0.11.8-7.el10.x86_64
Judy-0:1.0.5-38.el10.x86_64
NetworkManager-cloud-setup-1:1.54.0-1.el10.x86_64
NetworkManager-config-connectivity-redhat-1:1.54.0-1.el10.noarch
NetworkManager-libreswan-0:1.2.24-2.el10.x86_64
NetworkManager-libreswan-gnome-0:1.2.24-2.el10.x86_64
NetworkManager-ovs-1:1.54.0-1.el10.x86_64
NetworkManager-ppp-1:1.54.0-1.el10.x86_64
OpenIPMI-0:2.0.36-3.el10.x86_64
<output omitted>
The name of the repo is case sensitive:
user1@localhost:~$ dnf repoquery --repo appStream
Not root, Subscription Management repositories not updated
Error: Unknown repo: 'appStream'
user1@localhost:~$
user1@localhost:~$ dnf repoquery --repo AppStream | more
Not root, Subscription Management repositories not updated
Last metadata expiration check: 0:46:29 ago on Sat 11 Jul 2026 05:38:51 PM CEST.
389-ds-base-0:3.1.3-5.el10_1.x86_64
389-ds-base-libs-0:3.1.3-5.el10_1.x86_64
389-ds-base-snmp-0:3.1.3-5.el10_1.x86_64
CUnit-0:2.1.3-34.el10.x86_64
HdrHistogram_c-0:0.11.8-7.el10.x86_64
Judy-0:1.0.5-38.el10.x86_64
NetworkManager-cloud-setup-1:1.54.0-1.el10.x86_64
NetworkManager-config-connectivity-redhat-1:1.54.0-1.el10.noarch
NetworkManager-libreswan-0:1.2.24-2.el10.x86_64
NetworkManager-libreswan-gnome-0:1.2.24-2.el10.x86_64
NetworkManager-ovs-1:1.54.0-1.el10.x86_64
NetworkManager-ppp-1:1.54.0-1.el10.x86_64
OpenIPMI-0:2.0.36-3.el10.x86_64
OpenIPMI-lanserv-0:2.0.36-3.el10.x86_64
OpenIPMI-libs-0:2.0.36-3.el10.x86_64
<output omitted>
List all packages, installed and installable, from the available repos:
user1@localhost:~$ dnf list
Not root, Subscription Management repositories not updated
Last metadata expiration check: 0:56:08 ago on Sat 11 Jul 2026 05:38:51 PM CEST.
Installed Packages
ModemManager.x86_64 1.22.0-7.el10 @anaconda
ModemManager-glib.x86_64 1.22.0-7.el10 @anaconda
NetworkManager.x86_64 1:1.54.0-1.el10 @anaconda
NetworkManager-adsl.x86_64 1:1.54.0-1.el10 @anaconda
NetworkManager-bluetooth.x86_64 1:1.54.0-1.el10 @anaconda
NetworkManager-config-server.noarch 1:1.54.0-1.el10 @anaconda
<output truncated>
webrtc-audio-processing.x86_64 1.3-5.el10 @AppStream
wget.x86_64 1.24.5-5.el10 @AppStream
which.x86_64 2.21-44.el10 @anaconda
zlib-ng-compat.x86_64 2.2.3-2.el10 @anaconda
Available Packages
389-ds-base.x86_64 3.1.3-5.el10_1 AppStream
389-ds-base-libs.x86_64 3.1.3-5.el10_1 AppStream
389-ds-base-snmp.x86_64 3.1.3-5.el10_1 AppStream
CUnit.x86_64 2.1.3-34.el10 AppStream
HdrHistogram_c.x86_64 0.11.8-7.el10 AppStream
Judy.x86_64 1.0.5-38.el10 AppStream
NetworkManager-cloud-setup.x86_64 1:1.54.0-1.el10 AppStream
NetworkManager-config-connectivity-redhat.noarch 1:1.54.0-1.el10 AppStream
NetworkManager-libreswan.x86_64 1.2.24-2.el10 AppStream
NetworkManager-libreswan-gnome.x86_64 1.2.24-2.el10 AppStream
NetworkManager-ovs.x86_64 1:1.54.0-1.el10 AppStream
NetworkManager-ppp.x86_64 1:1.54.0-1.el10 AppStream
OpenIPMI.x86_64 2.0.36-3.el10 AppStream
OpenIPMI-lanserv.x86_64 2.0.36-3.el10 AppStream
OpenIPMI-libs.x86_64 2.0.36-3.el10 AppStream
SDL3.x86_64 3.2.4-1.el10 AppStream
WALinuxAgent.noarch 2.13.1.1-2.el10 AppStream
WALinuxAgent-udev.noarch 2.13.1.1-2.el10 AppStream
Xaw3d.x86_64 1.6.5-5.el10 AppStream
a52dec.x86_64 0.7.4-50.el10 AppStream
accel-config.x86_64 4.1.8-3.el10 baseOS
accel-config-libs.x86_64 4.1.8-3.el10 baseOS
acpid.x86_64 2.0.34-10.el10 AppStream
afterburn.x86_64 5.9.0-1.el10 AppStream
afterburn-dracut.x86_64 5.9.0-1.el10 AppStream
aide.x86_64 0.18.6-8.el10.1 AppStream
alsa-firmware.noarch 1.2.4-17.el10 AppStream
alsa-lib-devel.x86_64 1.2.14-1.el10 AppStream
alsa-plugins-arcamav.x86_64 1.2.7.1-13.el10 AppStream
alsa-plugins-maemo.x86_64 1.2.7.1-13.el10 AppStream
alsa-plugins-oss.x86_64 1.2.7.1-13.el10 AppStream
alsa-plugins-pulseaudio.x86_64 1.2.7.1-13.el10 AppStream
alsa-plugins-samplerate.x86_64 1.2.7.1-13.el10 AppStream
alsa-plugins-speex.x86_64 1.2.7.1-13.el10 AppStream
alsa-plugins-upmix.x86_64 1.2.7.1-13.el10 AppStream
alsa-plugins-usbstream.x86_64 1.2.7.1-13.el10 AppStream
alsa-plugins-vdownmix.x86_64 1.2.7.1-13.el10 AppStream
alsa-sof-firmware.noarch 2025.05-1.el10 AppStream
alsa-tools-firmware.x86_64 1.2.11-5.el10 AppStrea
List of all installed packages:
user1@localhost:~$ dnf list installed | more
Not root, Subscription Management repositories not updated
Installed Packages
ModemManager.x86_64 1.22.0-7.el10 @anaconda
ModemManager-glib.x86_64 1.22.0-7.el10 @anaconda
NetworkManager.x86_64 1:1.54.0-1.el10 @anaconda
NetworkManager-adsl.x86_64 1:1.54.0-1.el10 @anaconda
NetworkManager-bluetooth.x86_64 1:1.54.0-1.el10 @anaconda
NetworkManager-config-server.noarch 1:1.54.0-1.el10 @anaconda
NetworkManager-libnm.x86_64 1:1.54.0-1.el10 @anaconda
NetworkManager-tui.x86_64 1:1.54.0-1.el10 @anaconda
NetworkManager-wifi.x86_64 1:1.54.0-1.el10 @anaconda
NetworkManager-wwan.x86_64 1:1.54.0-1.el10 @anaconda
PackageKit.x86_64 1.2.8-8.el10 @AppStream
PackageKit-command-not-found.x86_64 1.2.8-8.el10 @AppStream
PackageKit-glib.x86_64 1.2.8-8.el10 @AppStream
PackageKit-gstreamer-plugin.x86_64 1.2.8-8.el10 @AppStream
PackageKit-gtk3-module.x86_64 1.2.8-8.el10 @AppStream
Another command to display the list of installed packages:
user1@localhost:~$ dnf list --installed
Not root, Subscription Management repositories not updated
Installed Packages
ModemManager.x86_64 1.22.0-7.el10 @anaconda
ModemManager-glib.x86_64 1.22.0-7.el10 @anaconda
NetworkManager.x86_64 1:1.54.0-1.el10 @anaconda
NetworkManager-adsl.x86_64 1:1.54.0-1.el10 @anaconda
NetworkManager-bluetooth.x86_64 1:1.54.0-1.el10 @anaconda
NetworkManager-config-server.noarch 1:1.54.0-1.el10 @anaconda
NetworkManager-libnm.x86_64 1:1.54.0-1.el10 @anaconda
NetworkManager-tui.x86_64 1:1.54.0-1.el10 @anaconda
NetworkManager-wifi.x86_64 1:1.54.0-1.el10 @anaconda
NetworkManager-wwan.x86_64 1:1.54.0-1.el10 @anaconda
PackageKit.x86_64 1.2.8-8.el10 @AppStream
PackageKit-command-not-found.x86_64 1.2.8-8.el10 @AppStream
<output omitted>
List of all packages for which there are available updates:
Wassim@linux:~$ dnf list updates
Rocky Linux 10 - BaseOS 17 kB/s | 4.3 kB 00:00
Rocky Linux 10 - AppStream 16 kB/s | 4.3 kB 00:00
Rocky Linux 10 - CRB 14 kB/s | 4.3 kB 00:00
Rocky Linux 10 - Extras 9.9 kB/s | 3.1 kB 00:00
Available Upgrades
brave-browser.x86_64 1.92.139-1 brave-browser
containerd.io.x86_64 2.2.6-1.el10 docker-ce-stable
freerdp-libs.x86_64 2:3.10.3-12.el10_2.6 appstream
google-chrome-stable.x86_64 150.0.7871.114-1 google-chrome
ipp-usb.x86_64 0.9.27-7.el10_2.2 appstream
libwinpr.x86_64 2:3.10.3-12.el10_2.6 appstream
nodejs.x86_64 2:22.23.1-1nodesource nodesource-nodejs
nodejs-full-i18n.x86_64 1:22.23.1-2.el10_2 appstream
nodejs-libs.x86_64 1:22.23.1-2.el10_2 appstream
nodejs-npm.x86_64 1:10.9.8-1.22.23.1.2.el10_2 appstream
unbound-anchor.x86_64 1.24.2-7.el10_2.2 appstream
unbound-libs.x86_64 1.24.2-7.el10_2.2 appstream
Wassim@linux:~$
Finding out whether a package is installed or installable; The name of the package is case sensitive and the package name must be entered in its fullness. As an example, I took the package ‘NetworkManager’:
user1@localhost:~$ dnf list NetworkManager
Not root, Subscription Management repositories not updated
Last metadata expiration check: 1:03:58 ago on Sat 11 Jul 2026 05:38:51 PM CEST.
Installed Packages
NetworkManager.x86_64
user1@localhost:~$
user1@localhost:~$
user1@localhost:~$ dnf list NetworkManager-cloud-setup.x86_64
Not root, Subscription Management repositories not updated
Last metadata expiration check: 1:04:43 ago on Sat 11 Jul 2026 05:38:51 PM CEST.
Available Packages
NetworkManager-cloud-setup.x86_64 1:1.54.0-1.el10 AppStream
user1@localhost:~$
The dnf list command gives a hint to whether a package is installed or installable. But the command dnf repoquery does not:
user1@localhost:~$
user1@localhost:~$ dnf repoquery | grep NetworkManager
Last metadata expiration check: 1:09:29 ago on Sat 11 Jul 2026 05:38:51 PM CEST.
NetworkManager-1:1.54.0-1.el10.x86_64
NetworkManager-adsl-1:1.54.0-1.el10.x86_64
NetworkManager-bluetooth-1:1.54.0-1.el10.x86_64
NetworkManager-cloud-setup-1:1.54.0-1.el10.x86_64
NetworkManager-config-connectivity-redhat-1:1.54.0-1.el10.noarch
NetworkManager-config-server-1:1.54.0-1.el10.noarch
NetworkManager-libnm-1:1.54.0-1.el10.x86_64
NetworkManager-libreswan-0:1.2.24-2.el10.x86_64
NetworkManager-libreswan-gnome-0:1.2.24-2.el10.x86_64
NetworkManager-ovs-1:1.54.0-1.el10.x86_64
NetworkManager-ppp-1:1.54.0-1.el10.x86_64
NetworkManager-tui-1:1.54.0-1.el10.x86_64
NetworkManager-wifi-1:1.54.0-1.el10.x86_64
NetworkManager-wwan-1:1.54.0-1.el10.x86_64
user1@localhost:~$
Searching for an installed package whose name contains a pattern. Example:
user1@localhost:~$ dnf list --installed Fire*
Not root, Subscription Management repositories not updated
Installed Packages
firefox.x86_64 140.3.0-1.el10_0 @AppStream
firewalld.noarch 2.3.1-1.el10_0 @anaconda
firewalld-filesystem.noarch 2.3.1-1.el10_0 @anaconda
user1@localhost:~$
Notice that the pattern is not case sensitive.
Verifying whether a package is installed:
user1@localhost:~$ dnf list yara
Not root, Subscription Management repositories not updated
Last metadata expiration check: 2:05:23 ago on Sat 11 Jul 2026 05:38:51 PM CEST.
Available Packages
yara.x86_64 4.5.2-2.el10 AppStream
user1@localhost:~$
The example package yara was listed as available.
Up until now, all dnf commands were not requiring superuser privileges. The install option of dnf does:
user1@localhost:~$ dnf install yara
Not root, Subscription Management repositories not updated
Error: This command has to be run with superuser privileges (under the root user on most systems).
user1@localhost:~$
user1@localhost:~$ sudo dnf install yara
[sudo] password for user1:
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
Last metadata expiration check: 2:09:34 ago on Sat 11 Jul 2026 05:48:03 PM CEST.
Dependencies resolved.
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Installing:
yara x86_64 4.5.2-2.el10 AppStream 242 k
Transaction Summary
==============================================================================================
Install 1 Package
Total size: 242 k
Installed size: 585 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : yara-4.5.2-2.el10.x86_64 1/1
Running scriptlet: yara-4.5.2-2.el10.x86_64 1/1
Installed products updated.
Installed:
yara-4.5.2-2.el10.x86_64
Complete!
user1@localhost:~$
The example package ‘yara’ is now displayed as installed:
user1@localhost:~$ dnf list yara
Not root, Subscription Management repositories not updated
Last metadata expiration check: 2:19:18 ago on Sat 11 Jul 2026 05:38:51 PM CEST.
Installed Packages
yara.x86_64 4.5.2-2.el10 @AppStream
user1@localhost:~$
The command dnf update behaves differently, depending on whether the package is installed or installable.
When the package is installed, dnf tries to update it:
user1@localhost:~$ dnf update yara
Not root, Subscription Management repositories not updated
Error: This command has to be run with superuser privileges (under the root user on most systems).
user1@localhost:~$
user1@localhost:~$ sudo dnf update yara
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
Last metadata expiration check: 2:15:24 ago on Sat 11 Jul 2026 05:48:03 PM CEST.
Dependencies resolved.
Nothing to do.
Complete!
user1@localhost:~$
When the package is installable, dnf exits with an error:
user1@localhost:~$ dnf list xterm
Not root, Subscription Management repositories not updated
Last metadata expiration check: 2:23:08 ago on Sat 11 Jul 2026 05:38:51 PM CEST.
Available Packages
xterm.x86_64 389-4.el10 AppStream
user1@localhost:~$
user1@localhost:~$ sudo dnf update xterm
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
Last metadata expiration check: 2:14:09 ago on Sat 11 Jul 2026 05:48:03 PM CEST.
Package xterm available, but not installed.
No match for argument: xterm
Error: No packages marked for upgrade.
user1@localhost:~$