.\" Man page generated from reStructuredText. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "YUM2DNF" "8" "Sep 19, 2023" "4.14.0" "DNF" .SH NAME yum2dnf \- Changes in DNF compared to YUM .SH --SKIP-BROKEN .sp For install command: .sp The \fB\-\-skip\-broken\fP option is an alias for \fB\-\-setopt=strict=0\fP\&. 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 \fI\%strict conf option\fP\&. .sp For upgrade command: .sp The semantics that were supposed to trigger in YUM with \fB\-\-skip\-broken\fP are now set for plain \fBdnf update\fP as a default. There is no need to use \fB\-\-skip\-broken\fP with the \fBdnf upgrade\fP command. To use only the latest versions of packages in transactions, there is the \fB\-\-best\fP command line switch. .SH UPDATE AND UPGRADE COMMANDS ARE THE SAME .sp Invoking \fBdnf update\fP or \fBdnf upgrade\fP, in all their forms, has the same effect in DNF, with the latter being preferred. In YUM \fByum upgrade\fP was exactly like \fByum \-\-obsoletes update\fP\&. .SH CLEAN_REQUIREMENTS_ON_REMOVE ON BY DEFAULT .sp The \fI\%clean_requirements_on_remove\fP switch is on by default in DNF. It can thus be confusing to compare the \(dqremove\(dq operation results between DNF and YUM as by default DNF is often going to remove more packages. .SH NO RESOLVEDEP COMMAND .sp The YUM version of this command is maintained for legacy reasons only. The user can just use \fBdnf provides\fP to find out what package provides a particular file. .SH NO DEPLIST COMMAND .sp An alternative to the YUM \fBdeplist\fP command to find out dependencies of a package is \fBdnf repoquery \-\-deplist\fP using \fI\%repoquery command\fP\&. .sp \fBNOTE:\fP .INDENT 0.0 .INDENT 3.5 Alternatively there is a YUM compatibility support where \fByum deplist\fP is alias for \fBdnf repoquery \-\-deplist\fP command .UNINDENT .UNINDENT .SH EXCLUDES AND REPO EXCLUDES APPLY TO ALL OPERATIONS .sp 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 \fBpython\-f*\fP packages but not any of the Flask packages, the following will work: .INDENT 0.0 .INDENT 3.5 .sp .EX dnf \-x \(aq*flask*\(aq list installed \(aqpython\-f*\(aq .EE .UNINDENT .UNINDENT .SH THE INCLUDE OPTION HAS BEEN REMOVED .sp Inclusion of other configuration files in the main configuration file is no longer supported. .SH DNF PROVIDES /BIN/ IS NOT FULLY SUPPORTED .sp After \fI\%UsrMove\fP there\(aqs no directory \fB/bin\fP on Fedora systems and no files get installed there, \fB/bin\fP is only a symlink created by the \fBfilesystem\fP package to point to \fB/usr/bin\fP\&. 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: .INDENT 0.0 .INDENT 3.5 .sp .EX dnf provides /b*/ .EE .UNINDENT .UNINDENT .sp will fail still (as they do in YUM now). To find what provides a particular binary, use the actual path for binaries on Fedora: .INDENT 0.0 .INDENT 3.5 .sp .EX dnf provides /usr/bin/ .EE .UNINDENT .UNINDENT .sp Also see related Fedora bugzillas \fI\%982947\fP and \fI\%982664\fP\&. .SH SKIP_IF_UNAVAILABLE COULD BE ENABLED BY DEFAULT .sp In some distributions DNF is shipped with \fBskip_if_unavailable=True\fP in the \fI\%DNF configuration file\fP\&. 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. .sp See the related \fI\%Fedora bug 984483\fP\&. .SH OVERWRITE_GROUPS DROPPED, COMPS FUNCTIONS ACTING AS IF ALWAYS DISABLED .sp This config option has been dropped. When DNF sees several groups with the same group ID it merges the groups\(aq contents together. .SH MIRRORLIST_EXPIRE DROPPED .sp To simplify things for the user, DNF uses \fBmetadata_expire\fP for both expiring metadata and the mirrorlist file (which is a kind of metadata itself). .SH METALINK NOT RECOGNIZED IN THE MIRRORLIST REPO OPTION .sp The following part of \fByum.conf(5)\fP no longer applies for the \fBmirrorlist\fP option: .INDENT 0.0 .INDENT 3.5 As a special hack if the mirrorlist URL contains the word \(dqmetalink\(dq then the value of mirrorlist is copied to metalink (if metalink is not set). .UNINDENT .UNINDENT .sp The relevant repository configuration files have been fixed to respect this, see the related \fI\%Fedora bug 948788\fP\&. .SH ALWAYSPROMPT DROPPED .sp Unsupported to simplify the configuration. .SH UPGRADE_REQUIREMENTS_ON_INSTALL DROPPED .sp 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\(aqd simply use \fBdnf upgrade\fP\&. .SH DNF HISTORY ROLLBACK CHECK DROPPED .sp 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 \fBforce\fP option is not needed anymore. .SH PACKAGES REPLACEMENT WITHOUT YUM SWAP .sp 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 \fBdnf shell\fP or use the \fB\-\-allowerasing\fP switch. .sp E.g. say you want to replace \fBA\fP (providing \fBP\fP) with B (also providing \fBP\fP, conflicting with \fBA\fP) without deleting \fBC\fP (which requires \fBP\fP) in the process. Use: .INDENT 0.0 .INDENT 3.5 .sp .EX dnf \-\-allowerasing install B .EE .UNINDENT .UNINDENT .sp This command is equal to \fByum swap A B\fP\&. .sp DNF provides swap command but only \fBdnf swap A B\fP syntax is supported .SH DEPENDENCY PROCESSING DETAILS ARE NOT SHOWN IN THE CLI .sp During its depsolving phase, YUM outputs lines similar to: .INDENT 0.0 .INDENT 3.5 .sp .EX \-\-\-> 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 .EE .UNINDENT .UNINDENT .sp 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. .sp See the related \fI\%Fedora bug 1044999\fP\&. .SH DNF PROVIDES COMPLIES WITH THE YUM DOCUMENTATION OF THE COMMAND .sp When one executes: .INDENT 0.0 .INDENT 3.5 .sp .EX yum provides sandbox .EE .UNINDENT .UNINDENT .sp YUM applies extra heuristics to determine what the user meant by \fBsandbox\fP, for instance it sequentially prepends entries from the \fBPATH\fP 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: .INDENT 0.0 .INDENT 3.5 .sp .EX dnf provides /usr/bin/sandbox .EE .UNINDENT .UNINDENT .sp or even: .INDENT 0.0 .INDENT 3.5 .sp .EX dnf provides \(aq*/sandbox\(aq .EE .UNINDENT .UNINDENT .sp to obtain similar results. .SH BANDWIDTH LIMITING .sp DNF supports the \fBthrottle\fP and \fBbandwidth\fP 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. .SH INSTALLONLYPKGS CONFIG OPTION .sp Compared to YUM, DNF appends list values from the \fBinstallonlypkgs\fP config option to DNF defaults, where YUM overwrites the defaults by option values. .SH THE USAGE OF DELTA RPM FILES .sp The boolean \fBdeltarpm\fP option controls whether delta RPM files are used. Compared to YUM, DNF does not support \fBdeltarpm_percentage\fP and instead chooses some optimal value of DRPM/RPM ratio to decide whether using deltarpm makes sense in the given case. .SH HANDLING .SRPM FILES AND NON-EXISTENT PACKAGES .sp DNF will terminate early with an error if a command is executed requesting an installing operation on a local \fB\&.srpm\fP file: .INDENT 0.0 .INDENT 3.5 .sp .EX $ 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). .EE .UNINDENT .UNINDENT .sp The same applies for package specifications that do not match any available package. .sp YUM will only issue a warning in this case and continue installing the \(dqtour\(dq 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. .SH PROMOTING PACKAGE TO INSTALL TO A PACKAGE THAT OBSOLETES IT .sp DNF will not magically replace a request for installing package \fBX\fP to installing package \fBY\fP if \fBY\fP obsoletes \fBX\fP\&. YUM does this if its \fBobsoletes\fP config option is enabled but the behavior is not properly documented and can be harmful. .sp See the related \fI\%Fedora bug 1096506\fP and \fI\%guidelines for renaming and obsoleting packages in Fedora\fP\&. .SH BEHAVIOR OF --INSTALLROOT OPTION .sp DNF offers more predictable behavior of installroot. DNF handles the path differently from the \fB\-\-config\fP 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 \-\fI\%\-installroot\fP option. .SH DIFFERENT PROMPT AFTER TRANSACTION TABLE .sp DNF doesn\(aqt 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 \(aqdownload\(aq command. .SH LIST COMMAND SHOWS ALL REPO ALTERNATIVES .sp 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. .SH YUM-LANGPACKS SUBCOMMANDS HAVE BEEN REMOVED .sp Translations became part of core DNF and it is no longer necessary to manage individual language packs. .sp Following sub\-commands were removed: .INDENT 0.0 .IP \(bu 2 langavailable .IP \(bu 2 langinstall .IP \(bu 2 langremove .IP \(bu 2 langlist .IP \(bu 2 langinfo .UNINDENT .TS center; |l|l|l|. _ T{ Original YUM tool T} T{ DNF command/option T} T{ Package T} _ T{ \fByum check\fP T} T{ \fI\%dnf repoquery\fP \fB\-\-unsatisfied\fP T} T{ \fBdnf\fP T} _ T{ \fByum\-langpacks\fP T} T{ T} T{ \fBdnf\fP T} _ T{ \fByum\-plugin\-aliases\fP T} T{ \fI\%dnf alias\fP T} T{ \fBdnf\fP T} _ T{ \fByum\-plugin\-auto\-update\-debug\-info\fP T} T{ option in \fBdebuginfo\-install.conf\fP T} T{ \fBdnf\-plugins\-core\fP T} _ T{ \fByum\-plugin\-changelog\fP T} T{ T} T{ \fBdnf\-plugins\-core\fP T} _ T{ \fByum\-plugin\-copr\fP T} T{ \fI\%dnf copr\fP T} T{ \fBdnf\-plugins\-core\fP T} _ T{ \fByum\-plugin\-fastestmirror\fP T} T{ \fBfastestmirror\fP option in \fI\%dnf.conf\fP T} T{ \fBdnf\fP T} _ T{ \fByum\-plugin\-fs\-snapshot\fP T} T{ T} T{ \fBdnf\-plugins\-extras\-snapper\fP T} _ T{ \fByum\-plugin\-local\fP T} T{ T} T{ \fBdnf\-plugins\-core\fP T} _ T{ \fByum\-plugin\-merge\-conf\fP T} T{ T} T{ \fBdnf\-plugins\-extras\-rpmconf\fP T} _ T{ \fByum\-plugin\-post\-transaction\-actions\fP T} T{ T} T{ \fBdnf\-plugins\-core\fP T} _ T{ \fByum\-plugin\-priorities\fP T} T{ \fBpriority\fP option in \fI\%dnf.conf\fP T} T{ \fBdnf\fP T} _ T{ \fByum\-plugin\-remove\-with\-leaves\fP T} T{ \fI\%dnf autoremove\fP T} T{ \fBdnf\fP T} _ T{ \fByum\-plugin\-show\-leaves\fP T} T{ T} T{ \fBdnf\-plugins\-core\fP T} _ T{ \fByum\-plugin\-tmprepo\fP T} T{ \fB\-\-repofrompath\fP option T} T{ \fBdnf\fP T} _ T{ \fByum\-plugin\-tsflags\fP T} T{ \fBtsflags\fP option in \fI\%dnf.conf\fP T} T{ \fBdnf\fP T} _ T{ \fByum\-plugin\-versionlock\fP T} T{ T} T{ \fBpython3\-dnf\-plugin\-versionlock\fP T} _ T{ \fByum\-rhn\-plugin\fP T} T{ T} T{ \fBdnf\-plugin\-spacewalk\fP T} _ .TE .sp Plugins that have not been ported yet: .sp \fByum\-plugin\-filter\-data\fP, \fByum\-plugin\-keys\fP, \fByum\-plugin\-list\-data\fP, \fByum\-plugin\-protectbase\fP, \fByum\-plugin\-ps\fP, \fByum\-plugin\-puppetverify\fP, \fByum\-plugin\-refresh\-updatesd\fP, \fByum\-plugin\-rpm\-warm\-cache\fP, \fByum\-plugin\-upgrade\-helper\fP, \fByum\-plugin\-verify\fP .sp Feel free to file an \fI\%RFE\fP for missing functionality if you need it. .sp All ported YUM tools are now implemented as DNF plugins. .TS center; |l|l|l|. _ T{ Original YUM tool T} T{ New DNF command T} T{ Package T} _ T{ \fBdebuginfo\-install\fP T} T{ \fI\%dnf debuginfo\-install\fP T} T{ \fBdnf\-plugins\-core\fP T} _ T{ \fBfind\-repos\-of\-install\fP T} T{ \fI\%dnf list installed\fP T} T{ \fBdnf\fP T} _ T{ \fBneeds\-restarting\fP T} T{ \fI\%dnf tracer\fP T} T{ \fBdnf\-plugins\-extras\-tracer\fP T} _ T{ \fBpackage\-cleanup\fP T} T{ \fI\%dnf list\fP, \fI\%dnf repoquery\fP T} T{ \fBdnf\fP, \fBdnf\-plugins\-core\fP T} _ T{ \fBrepoclosure\fP T} T{ \fI\%dnf repoclosure\fP T} T{ \fBdnf\-plugins\-extras\-repoclosure\fP T} _ T{ \fBrepodiff\fP T} T{ \fI\%dnf repodiff\fP T} T{ \fBdnf\-plugins\-core\fP T} _ T{ \fBrepo\-graph\fP T} T{ \fI\%dnf repograph\fP T} T{ \fBdnf\-plugins\-extras\-repograph\fP T} _ T{ \fBrepomanage\fP T} T{ \fI\%dnf repomanage\fP T} T{ \fBdnf\-plugins\-extras\-repomanage\fP T} _ T{ \fBrepoquery\fP T} T{ \fI\%dnf repoquery\fP T} T{ \fBdnf\fP T} _ T{ \fBreposync\fP T} T{ \fI\%dnf reposync\fP T} T{ \fBdnf\-plugins\-core\fP T} _ T{ \fBrepotrack\fP T} T{ \fI\%dnf download\fP \-\-resolve \-\-alldeps T} T{ \fBdnf\-plugins\-core\fP T} _ T{ \fByum\-builddep\fP T} T{ \fI\%dnf builddep\fP T} T{ \fBdnf\-plugins\-core\fP T} _ T{ \fByum\-config\-manager\fP T} T{ \fI\%dnf config\-manager\fP T} T{ \fBdnf\-plugins\-core\fP T} _ T{ \fByum\-debug\-dump\fP T} T{ \fI\%dnf debug\-dump\fP T} T{ \fBdnf\-plugins\-extras\-debug\fP T} _ T{ \fByum\-debug\-restore\fP T} T{ \fI\%dnf debug\-restore\fP T} T{ \fBdnf\-plugins\-extras\-debug\fP T} _ T{ \fByumdownloader\fP T} T{ \fI\%dnf download\fP T} T{ \fBdnf\-plugins\-core\fP T} _ .TE .sp Detailed table for \fBpackage\-cleanup\fP replacement: .TS center; |l|l|. _ T{ \fBpackage\-cleanup \-\-dupes\fP T} T{ \fBdnf repoquery \-\-duplicates\fP T} _ T{ \fBpackage\-cleanup \-\-leaves\fP T} T{ \fBdnf repoquery \-\-unneeded\fP T} _ T{ \fBpackage\-cleanup \-\-orphans\fP T} T{ \fBdnf repoquery \-\-extras\fP T} _ T{ \fBpackage\-cleanup \-\-problems\fP T} T{ \fBdnf repoquery \-\-unsatisfied\fP T} _ T{ \fBpackage\-cleanup \-\-cleandupes\fP T} T{ \fBdnf remove \-\-duplicates\fP T} _ T{ \fBpackage\-cleanup \-\-oldkernels\fP T} T{ \fBdnf remove \-\-oldinstallonly\fP T} _ T{ \fBpackage\-cleanup \-\-oldkernels \-\-keep=2\fP T} T{ \fBdnf remove $(dnf repoquery \-\-installonly \-\-latest\-limit=\-2)\fP T} _ .TE .SH YUM-UPDATEONBOOT AND YUM-CRON .sp DNF does not have a direct replacement of yum\-updateonboot and yum\-cron commands. However, the similar result can be achieved by \fBdnf automatic\fP command (see \fI\%DNF Automatic\fP). .sp You can either use the shortcut: .INDENT 0.0 .INDENT 3.5 .sp .EX $ systemctl enable \-\-now dnf\-automatic\-install.timer .EE .UNINDENT .UNINDENT .sp Or set \fBapply_updates\fP option of \fB/etc/dnf/automatic.conf\fP to True and use generic timer unit: .INDENT 0.0 .INDENT 3.5 .sp .EX $ systemctl enable \-\-now dnf\-automatic.timer .EE .UNINDENT .UNINDENT .sp 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 \fBdnf\-automatic*.timer\fP config files located in the \fB/usr/lib/systemd/system/\fP directory. .SH UTILITIES THAT HAVE NOT BEEN PORTED YET .sp \fBrepo\-rss\fP, \fBshow\-changed\-rco\fP, \fBshow\-installed\fP, \fBverifytree\fP, \fByum\-groups\-manager\fP .sp Take a look at the \fI\%FAQ\fP about YUM to DNF migration. Feel free to file an \fI\%RFE\fP for missing functionality if you need it. .SH AUTHOR See AUTHORS in DNF source distribution. .SH COPYRIGHT 2012-2023, Red Hat, Licensed under GPLv2+ .\" Generated by docutils manpage writer. .