yum2dnf(8) — Linux manual page
YUM2DNF(8) DNF YUM2DNF(8)
NAME
yum2dnf - Changes in DNF compared to YUM
--SKIP-BROKEN
For install command:
The --skip-broken option is an alias for --setopt=strict=0. Both
options could be used with DNF to skip all unavailable packages
or packages with broken dependencies given to DNF without raising
an error causing the whole operation to fail. This behavior can
be set as default in dnf.conf file. See strict conf option.
For upgrade command:
The semantics that were supposed to trigger in YUM with
--skip-broken are now set for plain dnf update as a default.
There is no need to use --skip-broken with the dnf upgrade
command. To use only the latest versions of packages in
transactions, there is the --best command line switch.
UPDATE AND UPGRADE COMMANDS ARE THE SAME
Invoking dnf update or dnf upgrade, in all their forms, has the
same effect in DNF, with the latter being preferred. In YUM yum
upgrade was exactly like yum --obsoletes update.
CLEAN_REQUIREMENTS_ON_REMOVE ON BY DEFAULT
The clean_requirements_on_remove switch is on by default in DNF.
It can thus be confusing to compare the "remove" operation
results between DNF and YUM as by default DNF is often going to
remove more packages.
NO RESOLVEDEP COMMAND
The YUM version of this command is maintained for legacy reasons
only. The user can just use dnf provides to find out what package
provides a particular file.
NO DEPLIST COMMAND
An alternative to the YUM deplist command to find out
dependencies of a package is dnf repoquery --deplist using
repoquery command.
NOTE:
Alternatively there is a YUM compatibility support where yum
deplist is alias for dnf repoquery --deplist command
EXCLUDES AND REPO EXCLUDES APPLY TO ALL OPERATIONS
YUM only respects excludes during installs and upgrades. DNF
extends this to all operations, among others erasing and listing.
If you e.g. want to see a list of all installed python-f*
packages but not any of the Flask packages, the following will
work:
dnf -x '*flask*' list installed 'python-f*'
THE INCLUDE OPTION HAS BEEN REMOVED
Inclusion of other configuration files in the main configuration
file is no longer supported.
DNF PROVIDES /BIN/<FILE> IS NOT FULLY SUPPORTED
After UsrMove there's no directory /bin on Fedora systems and no
files get installed there, /bin is only a symlink created by the
filesystem package to point to /usr/bin. Resolving the symlinks
to their real path would only give the user a false sense that
this works, while in fact provides requests using globs such as:
dnf provides /b*/<file>
will fail still (as they do in YUM now). To find what provides a
particular binary, use the actual path for binaries on Fedora:
dnf provides /usr/bin/<file>
Also see related Fedora bugzillas 982947 and 982664.
SKIP_IF_UNAVAILABLE COULD BE ENABLED BY DEFAULT
In some distributions DNF is shipped with
skip_if_unavailable=True in the DNF configuration file. The
reason for the change is that third-party repositories can often
be unavailable. Without this setting in the relevant repository
configuration file YUM immediately stops on a repository
synchronization error, confusing and bothering the user.
See the related Fedora bug 984483.
OVERWRITE_GROUPS DROPPED, COMPS FUNCTIONS ACTING AS IF ALWAYS DISABLED
%%%SH%%%
This config option has been dropped. When DNF sees several groups
with the same group ID it merges the groups' contents together.
MIRRORLIST_EXPIRE DROPPED
To simplify things for the user, DNF uses metadata_expire for
both expiring metadata and the mirrorlist file (which is a kind
of metadata itself).
METALINK NOT RECOGNIZED IN THE MIRRORLIST REPO OPTION
The following part of yum.conf(5) no longer applies for the
mirrorlist option:
As a special hack if the mirrorlist URL contains the word
"metalink" then the value of mirrorlist is copied to metalink
(if metalink is not set).
The relevant repository configuration files have been fixed to
respect this, see the related Fedora bug 948788.
ALWAYSPROMPT DROPPED
Unsupported to simplify the configuration.
UPGRADE_REQUIREMENTS_ON_INSTALL DROPPED
Dropping this config option with blurry semantics simplifies the
configuration. DNF behaves as if this was disabled. If the user
wanted to upgrade everything to the latest version she'd simply
use dnf upgrade.
DNF HISTORY ROLLBACK CHECK DROPPED
Since DNF tolerates the use of other package managers, it is
possible that not all changes to the RPMDB are stored in the
history of transactions. Therefore, DNF does not fail if such a
situation is encountered and thus the force option is not needed
anymore.
PACKAGES REPLACEMENT WITHOUT YUM SWAP
Time after time one needs to remove an installed package and
replace it with a different one, providing the same capabilities
while other packages depending on these capabilities stay
installed. Without (transiently) breaking consistency of the
package database this can be done by performing the remove and
the install in one transaction. The common way to set up such a
transaction in DNF is to use dnf shell or use the --allowerasing
switch.
E.g. say you want to replace A (providing P) with B (also
providing P, conflicting with A) without deleting C (which
requires P) in the process. Use:
dnf --allowerasing install B
This command is equal to yum swap A B.
DNF provides swap command but only dnf swap A B syntax is
supported
DEPENDENCY PROCESSING DETAILS ARE NOT SHOWN IN THE CLI
During its depsolving phase, YUM outputs lines similar to:
---> Package rubygem-rhc.noarch 0:1.16.9-1.fc19 will be an update
--> Processing Dependency: rubygem-net-ssh-multi >= 1.2.0 for package: rubygem-rhc-1.16.9-1.fc19.noarch
DNF does not output information like this. The technical reason
is that depsolver below DNF always considers all dependencies for
update candidates and the output would be very long. Secondly,
even in YUM this output gets confusing very quickly especially
for large transactions and so does more harm than good.
See the related Fedora bug 1044999.
DNF PROVIDES COMPLIES WITH THE YUM DOCUMENTATION OF THE COMMAND
When one executes:
yum provides sandbox
YUM applies extra heuristics to determine what the user meant by
sandbox, for instance it sequentially prepends entries from the
PATH environment variable to it to see if it matches a file
provided by some package. This is an undocumented behavior that
DNF does not emulate. Just typically use:
dnf provides /usr/bin/sandbox
or even:
dnf provides '*/sandbox'
to obtain similar results.
BANDWIDTH LIMITING
DNF supports the throttle and bandwidth options familiar from
YUM. Contrary to YUM, when multiple downloads run simultaneously
the total downloading speed is throttled. This was not possible
in YUM since downloaders ran in different processes.
INSTALLONLYPKGS CONFIG OPTION
Compared to YUM, DNF appends list values from the installonlypkgs
config option to DNF defaults, where YUM overwrites the defaults
by option values.
THE USAGE OF DELTA RPM FILES
The boolean deltarpm option controls whether delta RPM files are
used. Compared to YUM, DNF does not support deltarpm_percentage
and instead chooses some optimal value of DRPM/RPM ratio to
decide whether using deltarpm makes sense in the given case.
HANDLING .SRPM FILES AND NON-EXISTENT PACKAGES
DNF will terminate early with an error if a command is executed
requesting an installing operation on a local .srpm file:
$ dnf install fdn-0.4.17-1.fc20.src.rpm tour-4-6.noarch.rpm
Error: Will not install a source rpm package (fdn-0.4.17-1.fc20.src).
The same applies for package specifications that do not match any
available package.
YUM will only issue a warning in this case and continue
installing the "tour" package. The rationale behind the result in
DNF is that a program should terminate with an error if it can
not fulfill the CLI command in its entirety.
PROMOTING PACKAGE TO INSTALL TO A PACKAGE THAT OBSOLETES IT
DNF will not magically replace a request for installing package X
to installing package Y if Y obsoletes X. YUM does this if its
obsoletes config option is enabled but the behavior is not
properly documented and can be harmful.
See the related Fedora bug 1096506 and guidelines for renaming
and obsoleting packages in Fedora.
BEHAVIOR OF --INSTALLROOT OPTION
DNF offers more predictable behavior of installroot. DNF handles
the path differently from the --config command-line option, where
this path is always related to the host system (YUM combines this
path with installroot). Reposdir is also handled slightly
differently, if one path of the reposdirs exists inside of
installroot, then repos are strictly taken from installroot (YUM
tests each path from reposdir separately and use installroot path
if existed). See the detailed description for --installroot
option.
DIFFERENT PROMPT AFTER TRANSACTION TABLE
DNF doesn't provide download functionality after displaying
transaction table. It only asks user whether to continue with
transaction or not. If one wants to download packages, they can
use the 'download' command.
LIST COMMAND SHOWS ALL REPO ALTERNATIVES
DNF lists all packages from all repos, which means there can be
duplicates package names (with different repo name). This is due
to providing users possibility to choose preferred repo.
YUM-LANGPACKS SUBCOMMANDS HAVE BEEN REMOVED
Translations became part of core DNF and it is no longer
necessary to manage individual language packs.
Following sub-commands were removed:
• langavailable
• langinstall
• langremove
• langlist
• langinfo
─────────────────────────────────────────────────────────────────────────────────────────────────
Original YUM tool DNF command/option Package
─────────────────────────────────────────────────────────────────────────────────────────────────
yum check dnf repoquery dnf
--unsatisfied
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-langpacks dnf
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-plugin-aliases dnf alias dnf
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-plugin-auto-update-debug-info option in dnf-plugins-core
debuginfo-install.conf
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-plugin-changelog dnf-plugins-core
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-plugin-copr dnf copr dnf-plugins-core
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-plugin-fastestmirror fastestmirror option dnf
in dnf.conf
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-plugin-fs-snapshot dnf-plugins-extras-snapper
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-plugin-local dnf-plugins-core
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-plugin-merge-conf dnf-plugins-extras-rpmconf
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-plugin-post-transaction-actions dnf-plugins-core
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-plugin-priorities priority option in dnf
dnf.conf
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-plugin-remove-with-leaves dnf autoremove dnf
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-plugin-show-leaves dnf-plugins-core
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-plugin-tmprepo --repofrompath option dnf
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-plugin-tsflags tsflags option in dnf
dnf.conf
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-plugin-versionlock python3-dnf-plugin-versionlock
─────────────────────────────────────────────────────────────────────────────────────────────────
yum-rhn-plugin dnf-plugin-spacewalk
┌─────────────────────────────────────┬────────────────────────┬────────────────────────────────┐
│ │ │ │
│ Plugins that have not been port│ed yet: │ │
│ │ │ │
│ yum-plugin-filter-data, yum-plu│gin-keys, yum-plugin-list│-data, │
│ yum-plugin-protectbase, yum-plu│gin-ps, yum-plugin-puppet│verify, │
│ yum-plugin-refresh-updatesd, yu│m-plugin-rpm-warm-cache, │ │
│ yum-plugin-upgrade-helper, yum-│plugin-verify │ │
│ │ │ │
│ Feel free to file an RFE for mi│ssing functionality if yo│u need │
│ it. │ │ │
│ │ │ │
│ All ported YUM tools are now im│plemented as DNF plugins.│ │
├─────────────────────────────────────┼────────────────────────┼─────────────── │
│ Original YUM tool New DNF comm│and Package │ │
├─────────────────────────────────────┼────────────────────────┼─────────────── │
│ debuginfo-install dnf │ dnf-plugins-core│ │
│ debuginfo-in│stall │ │
├─────────────────────────────────────┼────────────────────────┼─────────────── │
│ find-repos-of-install dnf list ins│talled dnf │ │
├─────────────────────────────────────┼────────────────────────┼─────────────── │
│ needs-restarting dnf tracer │ dnf-plugins-extr│as-tracer │
├─────────────────────────────────────┼────────────────────────┼─────────────── │
│ package-cleanup dnf list, dn│f dnf, dnf-plugins│-core │
│ repoquery │ │ │
└─────────────────────────────────────┴────────────────────────┴─────────────── │
repoclosure dnf repoclosure dnf-plugins-extras-repoclosure
───────────────────────────────────────────────────────────────────────────────
repodiff dnf repodiff dnf-plugins-core
───────────────────────────────────────────────────────────────────────────────
repo-graph dnf repograph dnf-plugins-extras-repograph
───────────────────────────────────────────────────────────────────────────────
repomanage dnf repomanage dnf-plugins-extras-repomanage
───────────────────────────────────────────────────────────────────────────────
repoquery dnf repoquery dnf
───────────────────────────────────────────────────────────────────────────────
reposync dnf reposync dnf-plugins-core
───────────────────────────────────────────────────────────────────────────────
repotrack dnf download dnf-plugins-core
--resolve
--alldeps
───────────────────────────────────────────────────────────────────────────────
yum-builddep dnf builddep dnf-plugins-core
───────────────────────────────────────────────────────────────────────────────
yum-config-manager dnf config-manager dnf-plugins-core
───────────────────────────────────────────────────────────────────────────────
yum-debug-dump dnf debug-dump dnf-plugins-extras-debug
───────────────────────────────────────────────────────────────────────────────
yum-debug-restore dnf debug-restore dnf-plugins-extras-debug
───────────────────────────────────────────────────────────────────────────────
yumdownloader dnf download dnf-plugins-core
┌───────────────────────┬────────────────────┬────────────────────────────────┐
│ │ │ │
│ Detailed table fo│r package-cleanup rep│lacement: │
│ ┌────────────┼─────────────┬──────┼───────────────────┐ │
│ │ package-cle│anup --dupes │ dnf r│epoquery │ │
│ │ │ │ --dup│licates │ │
│ ├────────────┼─────────────┼──────┼───────────────────┤ │
│ │ package-cle│anup --leaves │ dnf r│epoquery --unneeded │ │
│ ├────────────┼─────────────┼──────┼───────────────────┤ │
│ │ package-cle│anup │ dnf r│epoquery --extras │ │
│ │ --orphans │ │ │ │ │
│ ├────────────┼─────────────┼──────┼───────────────────┤ │
│ │ package-cle│anup │ dnf r│epoquery │ │
│ │ --problems │ │ --uns│atisfied │ │
│ ├────────────┼─────────────┼──────┼───────────────────┤ │
│ │ package-cle│anup │ dnf r│emove --duplicates │ │
│ │ --cleandupe│s │ │ │ │
│ ├────────────┼─────────────┼──────┼───────────────────┤ │
│ │ package-cle│anup │ dnf r│emove │ │
│ │ --oldkernel│s │ --old│installonly │ │
│ ├────────────┼─────────────┼──────┼───────────────────┤ │
│ │ package-cle│anup │ dnf r│emove $(dnf │ │
│ │ --oldkernel│s --keep=2 │ repoq│uery --installonly │ │
│ │ │ │ --lat│est-limit=-2) │ │
│ └────────────┼─────────────┴──────┼───────────────────┘ │
│ │ │ │
│YUM-UPDATEONBOOT AND YUM│-CRON %%%SH%%% │ │
│ DNF does not have│a direct replacement│of yum-updateonboot and │
│ yum-cron commands│. However, the simil│ar result can be achieved │
│ by dnf automatic │command (see DNF Auto│matic). │
│ │ │ │
You can either use the shortcut:
$ systemctl enable --now dnf-automatic-install.timer
Or set apply_updates option of /etc/dnf/automatic.conf to True
and use generic timer unit:
$ systemctl enable --now dnf-automatic.timer
The timer in both cases is activated 1 hour after the system was
booted up and then repetitively once every 24 hours. There is
also a random delay on these timers set to 5 minutes. These
values can be tweaked via dnf-automatic*.timer config files
located in the /usr/lib/systemd/system/ directory.
UTILITIES THAT HAVE NOT BEEN PORTED YET
repo-rss, show-changed-rco, show-installed, verifytree,
yum-groups-manager
Take a look at the FAQ about YUM to DNF migration. Feel free to
file an RFE for missing functionality if you need it.
AUTHOR
See AUTHORS in DNF source distribution.
COPYRIGHT
2012-2020, Red Hat, Licensed under GPLv2+
COLOPHON
This page is part of the dnf (DNF Package Manager) project.
Information about the project can be found at
⟨https://github.com/rpm-software-management/dnf⟩. It is not known
how to report bugs for this man page; if you know, please send a
mail to man-pages@man7.org. This page was obtained from the
project's upstream Git repository
⟨https://github.com/rpm-software-management/dnf.git⟩ on
2024-06-14. (At that time, the date of the most recent commit
that was found in the repository was 2024-06-12.) If you
discover any rendering problems in this HTML version of the page,
or you believe there is a better or more up-to-date source for
the page, or you have corrections or improvements to the
information in this COLOPHON (which is not part of the original
manual page), send a mail to man-pages@man7.org