In this article, we are going to learn ‘DNF Commands for RPM Package Management in Fedora Linux’. DNF is a software package manager that installs, updates, and removes packages in RPM-based Linux distributions. It automatically computes dependencies and determines the actions necessary to install packages. Using RNP makes it easy to retain groups of DNF machines by eliminating the need to manually update the individual.
DNF or Dandified Yum is the next-generation version of Yum. It keeps CLI compatibility with Yum and defines rigid API for extensions and plugins. Plugins can enhance or extend the features of the DNF or provide additional CLI commands at the top of the above If you know the name of such a command (along with bold commands) you can find/install the package which uses proper virtualization (as a <aka >>) where <ulias> is the name of the command eg. dnf-command for repoquery command (typical command applies to specify dependencies of the required packages).
Features Of DNF Package Manager:
- Easy configuration
- Support for multiple repositories
- Fast and low memory-centric operations
- Dependency calculation based on modern dep solving technology
- Package Group Support, with Multi-Repository Groups
- Rpm-compatible behavior
- Documented, Solid Python API
- Easy interface
- The DNF runs in Python 2 and Python 3
Follow the below Article For DNF Commands for RPM Package Management in Fedora Linux:
Installation of DNF:
mangesh@localhost ~]$ sudo yum install dnf [sudo] password for mangesh: Last metadata expiration check: 0:03:18 ago on Sun 07 Jul 2019 07:32:40 PM IST. Package dnf-4.2.2-2.fc30.noarch is already installed. Dependencies resolved. Nothing to do. Complete!
Getting DNF Help:
1)Check DNF Version:
Check the version of the DNF installed on your system.
mangesh@localhost ~]$ dnf --version 4.2.2 Installed: dnf-0:4.2.2-2.fc30.noarch at Fri 26 Apr 2019 02:27:04 AM GMT Built : Fedora Project at Fri 05 Apr 2019 11:32:21 AM GMT Installed: rpm-0:4.14.2.1-4.fc30.1.x86_64 at Fri 26 Apr 2019 02:25:15 AM GMT Built : Fedora Project at Sat 02 Feb 2019 06:46:11 PM GMT
2)List all DNF Commands and Options:
All the available dnf commands to help list and options just to type.
[mangesh@localhost ~]$ dnf help usage: dnf [options] COMMAND List of Main Commands: alias List or create command aliases autoremove remove all unneeded packages that were originally installed as dependencies check check for problems in the packagedb check-update check for available package upgrades clean remove cached data deplist List package's dependencies and what packages provide them distro-sync synchronize installed packages to the latest available versions downgrade Downgrade a package group display, or use, the groups information help display a helpful usage message history display, or use, the transaction history info display details about a package or group of packages install install a package or packages on your system list list a package or groups of packages makecache generate the metadata cache mark mark or unmark installed packages as installed by user. module Interact with Modules. provides find what package provides the given value reinstall reinstall a package remove remove a package or packages from your system repolist display the configured software repositories repoquery search for packages matching keyword repository-packages run commands on top of all packages in given repository search search package details for the given string shell run an interactive DNF shell swap run an interactive dnf mod for remove and install one spec updateinfo display advisories about packages upgrade upgrade a package or packages on your system upgrade-minimal upgrade, but only 'newest' package match which fixes a problem that affects your system List of Plugin Commands: builddep Install build dependencies for package or spec file changelog Show changelog data of packages config-manager manage dnf configuration options and repositories copr Interact with Copr repositories. debug-dump dump information about installed rpm packages to file debug-restore restore packages recorded in debug-dump file debuginfo-install install debuginfo packages download Download package to current directory needs-restarting determine updated binaries that need restarting playground Interact with Playground repository. repoclosure Display a list of unresolved dependencies for repositories repodiff List differences between two sets of repositories repograph Output a full package dependency graph in dot format repomanage Manage a directory of rpm packages reposync download all packages from remote repo Optional arguments: -c [config file], --config [config file] config file location -q, --quiet quiet operation -v, --verbose verbose operation --version show DNF version and exit --installroot [path] set install root --nodocs do not install documentations --noplugins disable all plugins --enableplugin [plugin] enable plugins by name --disableplugin [plugin] disable plugins by name --releasever RELEASEVER override the value of $releasever in config and repo files --setopt SETOPTS set arbitrary config and repo options --skip-broken resolve depsolve problems by skipping packages -h, --help, --help-cmd show command help --allowerasing allow erasing of installed packages to resolve dependencies -b, --best try the best available package versions in transactions. --nobest do not limit the transaction to the best candidate -C, --cacheonly run entirely from system cache, don't update cache -R [minutes], --randomwait [minutes] maximum command wait time -d [debug level], --debuglevel [debug level] debugging output level --debugsolver dumps detailed solving results into files --showduplicates show duplicates, in repos, in list/search commands -e ERRORLEVEL, --errorlevel ERRORLEVEL error output level --obsoletes enables dnf's obsoletes processing logic for upgrade or display capabilities that the package obsoletes for info, list and repoquery --rpmverbosity [debug level name] debugging output level for rpm -y, --assumeyes automatically answer yes for all questions --assumeno automatically answer no for all questions --enablerepo [repo] --disablerepo [repo] --repo [repo], --repoid [repo] enable just specific repositories by an id or a glob, can be specified multiple times --enable, --set-enabled enable repos with config-manager command (automatically saves) --disable, --set-disabled disable repos with config-manager command (automatically saves) -x [package], --exclude [package], --excludepkgs [package] exclude packages by name or glob --disableexcludes [repo], --disableexcludepkgs [repo] disable excludepkgs --repofrompath [repo,path] label and path to additional repository, can be specified multiple times. --noautoremove disable removal of dependencies that are no longer used --nogpgcheck disable gpg signature checking (if RPM policy allows) --color COLOR control whether color is used --refresh set metadata as expired before running the command -4 resolve to IPv4 addresses only -6 resolve to IPv6 addresses only --destdir DESTDIR, --downloaddir DESTDIR set directory to copy packages to --downloadonly only download packages --comment COMMENT add a comment to transaction --bugfix Include bugfix relevant packages, in updates --enhancement Include enhancement relevant packages, in updates --newpackage Include newpackage relevant packages, in updates --security Include security relevant packages, in updates --advisory ADVISORY, --advisories ADVISORY Include packages needed to fix the given advisory, in updates --bz BUGZILLA, --bzs BUGZILLA Include packages needed to fix the given BZ, in updates --cve CVES, --cves CVES Include packages needed to fix the given CVE, in updates --sec-severity {Critical,Important,Moderate,Low}, --secseverity {Critical,Important,Moderate,Low} Include security relevant packages matching the severity, in updates --forcearch ARCH Force the use of an architecture
DNF Repositories:
1)List Enabled DNF Repositories:
The option ‘repolist’ with the DNF command will display all enabled repositories within your system.
[mangesh@localhost ~]$ sudo dnf repolist Last metadata expiration check: 0:09:29 ago on Sun 07 Jul 2019 07:32:40 PM IST. repo id repo name status adobe-linux-x86_64 Adobe Systems Incorporated 3 *fedora Fedora 30 - x86_64 56,582 *fedora-modular Fedora Modular 30 - x86_64 135 *updates Fedora 30 - x86_64 - Updates 9,562 *updates-modular Fedora Modular 30 - x86_64 - Updates 140
2)List all Enabled and Disabled DNF Repositories:
The option ‘repolist all‘ will print all the enabled/disabled repositories within your system.
mangesh@localhost ~]$ dnf repolist all Last metadata expiration check: 0:19:38 ago on Sun 07 Jul 2019 07:32:40 PM IST. repo id repo name status adobe-linux-x86_64 Adobe Systems Incorporated enabled: 3 *fedora Fedora 30 - x86_64 enabled: 56,582 fedora-cisco-openh264 Fedora 30 openh264 (From Cisco) - x86_64 disabled fedora-cisco-openh264-debuginfo Fedora 30 openh264 (From Cisco) - x86_64 - Debug disabled fedora-debuginfo Fedora 30 - x86_64 - Debug disabled *fedora-modular Fedora Modular 30 - x86_64 enabled: 135 fedora-modular-debuginfo Fedora Modular 30 - x86_64 - Debug disabled fedora-modular-source Fedora Modular 30 - Source disabled fedora-source Fedora 30 - Source disabled *updates Fedora 30 - x86_64 - Updates enabled: 9,562 updates-debuginfo Fedora 30 - x86_64 - Updates - Debug disabled *updates-modular Fedora Modular 30 - x86_64 - Updates enabled: 140 updates-modular-debuginfo Fedora Modular 30 - x86_64 - Updates - Debug disabled updates-modular-source Fedora Modular 30 - Updates Source disabled updates-source Fedora 30 - Updates Source disabled updates-testing Fedora 30 - x86_64 - Test Updates disabled updates-testing-debuginfo Fedora 30 - x86_64 - Test Updates Debug disabled updates-testing-modular Fedora Modular 30 - x86_64 - Test Updates disabled updates-testing-modular-debuginfo Fedora Modular 30 - x86_64 - Test Updates Debug disabled updates-testing-modular-source Fedora Modular 30 - Test Updates Source disabled updates-testing-source Fedora 30 - Test Updates Source disabled
Listing Packages:
1)List all Available and Installed Packages using DNF:
The command “dnf list” will list all the available packages from all the repositories and installed packages on your Linux system.
[mangesh@localhost ~]$ dnf list
2)List all Installed Packages using DNF:
The “DNF list” command shows all available/installed packages from all repositories. However, you have the option to list only the installed packages using the “List installed” option listed below.
[mangesh@localhost ~]$ dnf list installed Installed Packages GConf2.x86_64 3.2.6-25.fc30 @anaconda GeoIP.x86_64 1.6.12-5.fc30 @anaconda GeoIP-GeoLite-data.noarch 2018.06-3.fc30 @anaconda LibRaw.x86_64 0.19.2-3.fc30 @anaconda ModemManager.x86_64 1.10.0-1.fc30 @anaconda ModemManager-glib.x86_64 1.10.0-1.fc30 @anaconda NetworkManager.x86_64 1:1.16.0-1.fc30 @anaconda NetworkManager-adsl.x86_64 1:1.16.0-1.fc30 @anaconda NetworkManager-bluetooth.x86_64 1:1.16.0-1.fc30 @anaconda NetworkManager-config-connectivity-fedora.noarch 1:1.16.0-1.fc30 @anaconda NetworkManager-libnm.x86_64 1:1.16.0-1.fc30 @anaconda NetworkManager-openconnect.x86_64 1.2.4-11.fc30 @anaconda NetworkManager-openconnect-gnome.x86_64 1.2.4-11.fc30 @anaconda NetworkManager-openvpn.x86_64 1:1.8.10-1.fc30 @anaconda NetworkManager-openvpn-gnome.x86_64 1:1.8.10-1.fc30 @anaconda NetworkManager-ppp.x86_64 1:1.16.0-1.fc30 @anaconda NetworkManager-pptp.x86_64 1:1.2.8-1.fc30.1 @anaconda
3)List all Available Packages using DNF:
The “Available List” option lists all the packages available to install from all enabled repositories.
[mangesh@localhost ~]$ dnf list available systemtap-runtime-python3.x86_64 4.1-1.fc30 updates systemtap-runtime-virtguest.x86_64 4.1-1.fc30 updates systemtap-runtime-virthost.x86_64 4.1-1.fc30 updates systemtap-sdt-devel.i686 4.1-1.fc30 updates systemtap-sdt-devel.x86_64 4.1-1.fc30 updates systemtap-server.x86_64 4.1-1.fc30 updates systemtap-testsuite.x86_64 4.1-1.fc30 updates sysusage.noarch 5.7-3.fc30 fedora sysusage-common.noarch 5.7-3.fc30 fedora sysusage-httpd.noarch 5.7-3.fc30 fedora sysusage-rsysusage.noarch 5.7-3.fc30 fedora t-digest.noarch 3.0-9.fc30 fedora t-digest-javadoc.noarch 3.0-9.fc30 fedora t-prot.noarch 3.4-8.fc30 fedora t1lib.i686 5.1.2-24.fc30 fedora t1lib.x86_64 5.1.2-24.fc30 fedora t1lib-apps.x86_64 5.1.2-24.fc30 fedora t1lib-devel.i686 5.1.2-24.fc30 fedora t1lib-devel.x86_64 5.1.2-24.fc30 fedora t1lib-static.i686 5.1.2-24.fc30 fedora t1lib-static.x86_64 5.1.2-24.fc30 fedora t1utils.x86_64 1.39-9.fc30 fedora
Updating Packages:
1)Check for System Updates using DNF:
Check for updates to system packages installed in the system.
mangesh@localhost ~]$ dnf check-update Last metadata expiration check: 0:27:06 ago on Sun 07 Jul 2019 09:20:37 PM IST. GConf2.x86_64 3.2.6-26.fc30 updates ModemManager.x86_64 1.10.2-1.fc30 updates ModemManager-glib.x86_64 1.10.2-1.fc30 updates NetworkManager.x86_64 1:1.16.2-1.fc30 updates NetworkManager-adsl.x86_64 1:1.16.2-1.fc30 updates NetworkManager-bluetooth.x86_64 1:1.16.2-1.fc30 updates NetworkManager-config-connectivity-fedora.noarch 1:1.16.2-1.fc30 updates NetworkManager-libnm.x86_64 1:1.16.2-1.fc30 updates NetworkManager-ppp.x86_64 1:1.16.2-1.fc30 updates NetworkManager-ssh.x86_64 1.2.10-1.fc30 updates NetworkManager-ssh-gnome.x86_64 1.2.10-1.fc30 updates NetworkManager-team.x86_64 1:1.16.2-1.fc30 updates NetworkManager-wifi.x86_64 1:1.16.2-1.fc30 updates NetworkManager-wwan.x86_64 1:1.16.2-1.fc30 updates SDL.x86_64 1.2.15-39.fc30 updates
Or
mangesh@localhost ~]$ dnf list updates
Package Groups:
1)List all Group Package:
The “Dnf grouplist” command will print all the available or installed packages, if it does not mention it, it lists all known groups.
[mangesh@localhost ~]$ dnf grouplist Last metadata expiration check: 0:35:23 ago on Sun 07 Jul 2019 09:20:37 PM IST. Available Environment Groups: Fedora Custom Operating System Minimal Install Fedora Server Edition Fedora Workstation Fedora Cloud Server KDE Plasma Workspaces Xfce Desktop LXDE Desktop LXQt Desktop Cinnamon Desktop MATE Desktop Sugar Desktop Environment Deepin Desktop Development and Creative Workstation Web Server Infrastructure Server Basic Desktop Installed Groups: LibreOffice Available Groups: 3D Printing Administration Tools Audio Production Authoring and Publishing Books and Guides C Development Tools and Libraries Cloud Infrastructure Cloud Management Tools Compiz Container Management D Development Tools and Libraries Design Suite Development Tools Domain Membership Fedora Eclipse Editors Educational Software Electronic Lab Engineering and Scientific FreeIPA Server Games and Entertainment Headless Management MATE Applications Medical Applications Milkymist Network Servers Office/Productivity Python Classroom Python Science Robotics RPM Development Tools Security Lab Sound and Video System Tools Text-based Internet Window Managers
2)Install a Group Package using DNF:
To install a package group, for example, “’Educational Software’”, run:
mangesh@localhost ~]$ sudo dnf groupinstall 'Educational Software' [sudo] password for mangesh: Adobe Systems Incorporated 2.6 kB/s | 2.9 kB 00:01 Fedora Modular 30 - x86_64 2.8 kB/s | 6.9 kB 00:02 Fedora Modular 30 - x86_64 - Updates 4.7 kB/s | 6.6 kB 00:01 Fedora 30 - x86_64 - Updates 4.4 kB/s | 6.8 kB 00:01 Fedora 30 - x86_64 4.6 kB/s | 7.0 kB 00:01 Dependencies resolved. ========================================================================================================================================== Package Architecture Version Repository Size ========================================================================================================================================== Installing Groups: Educational Software Transaction Summary ========================================================================================================================================== Is this ok [y/N]: y Complete!
3)Update a Group Package:
To Update a package group, run the below command.
mangesh@localhost ~]$ sudo dnf groupupdate 'Educational Software' [sudo] password for mangesh: Last metadata expiration check: 0:02:36 ago on Sun 07 Jul 2019 10:01:54 PM IST. Dependencies resolved. ========================================================================================================================================== Package Architecture Version Repository Size ========================================================================================================================================== Installing Groups: Educational Software Transaction Summary ========================================================================================================================================== Is this ok [y/N]: y Complete!
4)Remove a Group Package:
To remove a package group, run the below command.
mangesh@localhost ~]$ sudo dnf groupremove 'Educational Software' [sudo] password for mangesh: Dependencies resolved. ========================================================================================================================================== Package Architecture Version Repository Size ========================================================================================================================================== Removing Groups: Educational Software Transaction Summary ========================================================================================================================================== Is this ok [y/N]: y Complete!
DNF History:
1)View History of DNF:
Using the “Dnf history” command, we can see all the actions done by the DNF command.
mangesh@localhost ~]$ sudo dnf history [sudo] password for mangesh: ID | Command line | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 5 | groupremove Educational | 2019-07-07 22:08 | Removed | 1 4 | groupupdate Educational | 2019-07-07 22:04 | Install | 1 3 | groupinstall Educational | 2019-07-07 22:02 | Install | 1 2 | install flash-plugin als | 2019-07-07 14:07 | Install | 1 < 1 | | 2019-04-26 07:54 | Install | 1632 >E
Use the following ID to view information about a particular transaction.
[mangesh@localhost ~]$ sudo dnf history list 2 ID | Command line | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 2 | install flash-plugin als | 2019-07-07 14:07 | Install | 1
Cleaning Up:
1)Remove Orphan Packages using DNF:
To remove those orphan packages run the below command.
mangesh@localhost ~]$ sudo dnf autoremove Last metadata expiration check: 0:46:30 ago on Sun 07 Jul 2019 10:01:54 PM IST. Dependencies resolved. Nothing to do. Complete!
2)Remove Cached Packages using DNF:
Often we encounter headers and incomplete transactions, so there is an error in executing the DNF. We may include remote package information by executing all cached packages and headers.
[mangesh@localhost ~]$ dnf clean all 41 files removed
Also Read – Useful RPM Command With Examples In Linux
That’s all, In this article, we have explained DNF Commands for RPM Package Management in Fedora Linux. I hope you enjoy this article. If you like this article, then just share it. If you have any questions about this article, please comment