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 ver-
sions 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 par-
ticular 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
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 con-
figuration. 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 transac-
tions. 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 pack-
ages depending on these capabilities stay installed. Without (tran-
siently) 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 candi-
dates 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 sand-
box, for instance it sequentially prepends entries from the PATH envi-
ronment 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 con-
fig 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 pro-
gram should terminate with an error if it can not fulfill the CLI com-
mand 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 sep-
arately and use installroot path if existed). See the detailed descrip-
tion 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 dupli-
cates package names (with different repo name). This is due to provid-
ing 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:
o langavailable
o langinstall
o langremove
o langlist
o langinfo
+--------------------------+---------------------+--------------------+
|Original YUM tool | DNF command/option | Package |
+--------------------------+---------------------+--------------------+
|yum check | dnf repoquery | dnf |
| | --unsatisfied | |
+--------------------------+---------------------+--------------------+
|yum-langpacks | | dnf |
+--------------------------+---------------------+--------------------+
|yum-plugin-aliases | dnf alias | dnf |
+--------------------------+---------------------+--------------------+
|yum-plug- | option in debug- | dnf-plugins-core |
|in-auto-update-debug-info | info-install.conf | |
+--------------------------+---------------------+--------------------+
|yum-plugin-changelog | | dnf-plugins-core |
+--------------------------+---------------------+--------------------+
|yum-plugin-copr | dnf copr | dnf-plugins-core |
+--------------------------+---------------------+--------------------+
|yum-plugin-fastestmirror | fastestmirror | dnf |
| | option in dnf.conf | |
+--------------------------+---------------------+--------------------+
|yum-plugin-fs-snapshot | | dnf-plug- |
| | | ins-extras-snapper |
+--------------------------+---------------------+--------------------+
|yum-plugin-local | | dnf-plugins-core |
+--------------------------+---------------------+--------------------+
|yum-plugin-merge-conf | | dnf-plug- |
| | | ins-extras-rpmconf |
+--------------------------+---------------------+--------------------+
|yum-plugin-post-transac- | | dnf-plugins-core |
|tion-actions | | |
+--------------------------+---------------------+--------------------+
|yum-plugin-priorities | priority option in | dnf |
| | dnf.conf | |
+--------------------------+---------------------+--------------------+
|yum-plug- | dnf autoremove | dnf |
|in-remove-with-leaves | | |
+--------------------------+---------------------+--------------------+
|yum-plugin-show-leaves | | dnf-plugins-core |
+--------------------------+---------------------+--------------------+
|yum-plugin-tmprepo | --repofrompath | dnf |
| | option | |
+--------------------------+---------------------+--------------------+
|yum-plugin-tsflags | tsflags option in | dnf |
| | dnf.conf | |
+--------------------------+---------------------+--------------------+
|yum-plugin-versionlock | | python3-dnf-plug- |
| | | in-versionlock |
+--------------------------+---------------------+--------------------+
|yum-rhn-plugin | | dnf-plugin-space- |
| | | walk |
+--------------------------+---------------------+--------------------+
Plugins that have not been ported yet:
yum-plugin-filter-data, yum-plugin-keys, yum-plugin-list-data,
yum-plugin-protectbase, yum-plugin-ps, yum-plugin-puppetverify,
yum-plugin-refresh-updatesd, yum-plugin-rpm-warm-cache, yum-plug-
in-upgrade-helper, yum-plugin-verify
Feel free to file an RFE for missing functionality if you need it.
All ported YUM tools are now implemented as DNF plugins.
+----------------------+---------------------+---------------------+
|Original YUM tool | New DNF command | Package |
+----------------------+---------------------+---------------------+
|debuginfo-install | dnf debug- | dnf-plugins-core |
| | info-install | |
+----------------------+---------------------+---------------------+
|find-repos-of-install | dnf list installed | dnf |
+----------------------+---------------------+---------------------+
|needs-restarting | dnf tracer | dnf-plug- |
| | | ins-extras-tracer |
+----------------------+---------------------+---------------------+
|package-cleanup | dnf list, dnf repo- | dnf, dnf-plug- |
| | query | ins-core |
+----------------------+---------------------+---------------------+
|repoclosure | dnf repoclosure | dnf-plug- |
| | | ins-extras-repoclo- |
| | | sure |
+----------------------+---------------------+---------------------+
|repodiff | dnf repodiff | dnf-plugins-core |
+----------------------+---------------------+---------------------+
|repo-graph | dnf repograph | dnf-plug- |
| | | ins-extras-repo- |
| | | graph |
+----------------------+---------------------+---------------------+
|repomanage | dnf repomanage | dnf-plug- |
| | | ins-extras-repoman- |
| | | age |
+----------------------+---------------------+---------------------+
|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-plug- |
| | | ins-extras-debug |
+----------------------+---------------------+---------------------+
|yum-debug-restore | dnf debug-restore | dnf-plug- |
| | | ins-extras-debug |
+----------------------+---------------------+---------------------+
|yumdownloader | dnf download | dnf-plugins-core |
+----------------------+---------------------+---------------------+
Detailed table for package-cleanup replacement:
+---------------------------+----------------------------+
|package-cleanup --dupes | dnf repoquery --duplicates |
+---------------------------+----------------------------+
|package-cleanup --leaves | dnf repoquery --unneeded |
+---------------------------+----------------------------+
|package-cleanup --orphans | dnf repoquery --extras |
+---------------------------+----------------------------+
|package-cleanup --problems | dnf repoquery --unsatis- |
| | fied |
+---------------------------+----------------------------+
|package-cleanup --cle- | dnf remove --duplicates |
|andupes | |
+---------------------------+----------------------------+
|package-cleanup --oldker- | dnf remove --oldinstal- |
|nels | lonly |
+---------------------------+----------------------------+
|package-cleanup --oldker- | dnf remove $(dnf repoquery |
|nels --keep=2 | --installonly --lat- |
| | est-limit=-2) |
+---------------------------+----------------------------+
YUM-UPDATEONBOOT AND YUM-CRON
DNF does not have a direct replacement of yum-updateonboot and yum-cron
commands. However, the similar result can be achieved by dnf automatic
command (see automatic).
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/sys-
tem/ directory.
UTILITIES THAT HAVE NOT BEEN PORTED YET
repo-rss, show-changed-rco, show-installed, verifytree, yum-groups-man-
ager
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+
4.7.0 Apr 08, 2024 YUM2DNF(8)