1YUM2DNF(8)                            DNF                           YUM2DNF(8)
2
3
4

NAME

6       yum2dnf - Changes in DNF compared to YUM
7

--SKIP-BROKEN

9       For install command:
10
11       The  --skip-broken  option  is  an  alias  for  --setopt=strict=0. Both
12       options could be used with DNF to  skip  all  unavailable  packages  or
13       packages with broken dependencies given to DNF without raising an error
14       causing the whole operation to  fail.  This  behavior  can  be  set  as
15       default in dnf.conf file. See strict conf option.
16
17       For upgrade command:
18
19       The  semantics  that were supposed to trigger in YUM with --skip-broken
20       are now set for plain dnf update as a default. There is no need to  use
21       --skip-broken with the dnf upgrade command. To use only the latest ver‐
22       sions of packages in transactions, there is  the  --best  command  line
23       switch.
24

UPDATE AND UPGRADE COMMANDS ARE THE SAME

26       Invoking  dnf  update  or dnf upgrade, in all their forms, has the same
27       effect in DNF, with the latter being preferred. In YUM yum upgrade  was
28       exactly like yum --obsoletes update.
29

CLEAN_REQUIREMENTS_ON_REMOVE ON BY DEFAULT

31       The clean_requirements_on_remove switch is on by default in DNF. It can
32       thus be confusing to compare the "remove" operation results between DNF
33       and YUM as by default DNF is often going to remove more packages.
34

NO RESOLVEDEP COMMAND

36       The  YUM version of this command is maintained for legacy reasons only.
37       The user can just use dnf provides to find out what package provides  a
38       particular file.
39

NO DEPLIST COMMAND

41       An alternative to the YUM deplist command to find out dependencies of a
42       package is dnf repoquery --deplist using repoquery command.
43
44       NOTE:
45          Alternatively there is a YUM compatibility support where yum deplist
46          is alias for dnf repoquery --deplist command
47

EXCLUDES AND REPO EXCLUDES APPLY TO ALL OPERATIONS

49       YUM  only  respects  excludes during installs and upgrades. DNF extends
50       this to all operations, among others erasing and listing. If  you  e.g.
51       want  to  see a list of all installed python-f* packages but not any of
52       the Flask packages, the following will work:
53
54          dnf -x '*flask*' list installed 'python-f*'
55

THE INCLUDE OPTION HAS BEEN REMOVED

57       Inclusion of other configuration files in the main  configuration  file
58       is no longer supported.
59

DNF PROVIDES /BIN/<FILE> IS NOT FULLY SUPPORTED

61       After  UsrMove there's no directory /bin on Fedora systems and no files
62       get installed there, /bin is only a symlink created by  the  filesystem
63       package to point to /usr/bin. Resolving the symlinks to their real path
64       would only give the user a false sense that this works, while  in  fact
65       provides requests using globs such as:
66
67          dnf provides /b*/<file>
68
69       will  fail  still (as they do in YUM now). To find what provides a par‐
70       ticular binary, use the actual path for binaries on Fedora:
71
72          dnf provides /usr/bin/<file>
73
74       Also see related Fedora bugzillas 982947 and 982664.
75

SKIP_IF_UNAVAILABLE COULD BE ENABLED BY DEFAULT

77       In some distributions DNF is shipped with  skip_if_unavailable=True  in
78       the  DNF  configuration  file.  The  reason  for  the  change  is  that
79       third-party repositories can often be unavailable. Without this setting
80       in  the relevant repository configuration file YUM immediately stops on
81       a repository synchronization error, confusing and bothering the user.
82
83       See the related Fedora bug 984483.
84

OVERWRITE_GROUPS DROPPED, COMPS FUNCTIONS ACTING AS IF ALWAYS DISABLED

86       This config option has been dropped. When DNF sees several groups  with
87       the same group ID it merges the groups' contents together.
88

MIRRORLIST_EXPIRE DROPPED

90       To  simplify  things  for  the  user, DNF uses metadata_expire for both
91       expiring metadata and the mirrorlist file (which is a kind of  metadata
92       itself).
93
95       The  following part of yum.conf(5) no longer applies for the mirrorlist
96       option:
97          As a special hack if the mirrorlist URL contains the word "metalink"
98          then  the  value of mirrorlist is copied to metalink (if metalink is
99          not set).
100
101       The relevant repository configuration files have been fixed to  respect
102       this, see the related Fedora bug 948788.
103

ALWAYSPROMPT DROPPED

105       Unsupported to simplify the configuration.
106

UPGRADE_REQUIREMENTS_ON_INSTALL DROPPED

108       Dropping  this  config option with blurry semantics simplifies the con‐
109       figuration. DNF behaves as if this was disabled. If the user wanted  to
110       upgrade everything to the latest version she'd simply use dnf upgrade.
111

DNF HISTORY ROLLBACK CHECK DROPPED

113       Since  DNF  tolerates the use of other package managers, it is possible
114       that not all changes to the RPMDB are stored in the history of transac‐
115       tions.  Therefore, DNF does not fail if such a situation is encountered
116       and thus the force option is not needed anymore.
117

PACKAGES REPLACEMENT WITHOUT YUM SWAP

119       Time after time one needs to remove an installed package and replace it
120       with a different one, providing the same capabilities while other pack‐
121       ages depending on these capabilities  stay  installed.  Without  (tran‐
122       siently)  breaking consistency of the package database this can be done
123       by performing the remove and the install in one transaction. The common
124       way  to set up such a transaction in DNF is to use dnf shell or use the
125       --allowerasing switch.
126
127       E.g. say you want to replace A (providing P)  with B (also providing P,
128       conflicting  with  A)  without  deleting  C  (which  requires P) in the
129       process. Use:
130
131          dnf --allowerasing install B
132
133       This command is equal to yum swap A B.
134
135       DNF provides swap command but only dnf swap A B syntax is supported
136

DEPENDENCY PROCESSING DETAILS ARE NOT SHOWN IN THE CLI

138       During its depsolving phase, YUM outputs lines similar to:
139
140          ---> Package rubygem-rhc.noarch 0:1.16.9-1.fc19 will be an update
141          --> Processing Dependency: rubygem-net-ssh-multi >= 1.2.0 for package: rubygem-rhc-1.16.9-1.fc19.noarch
142
143       DNF does not output information like this. The technical reason is that
144       depsolver below DNF always considers all dependencies for update candi‐
145       dates and the output would be very long. Secondly,  even  in  YUM  this
146       output  gets  confusing  very quickly especially for large transactions
147       and so does more harm than good.
148
149       See the related Fedora bug 1044999.
150

DNF PROVIDES COMPLIES WITH THE YUM DOCUMENTATION OF THE COMMAND

152       When one executes:
153
154          yum provides sandbox
155
156       YUM applies extra heuristics to determine what the user meant by  sand‐
157       box,  for instance it sequentially prepends entries from the PATH envi‐
158       ronment variable to it to see if it matches a  file  provided  by  some
159       package.  This  is  an undocumented behavior that DNF does not emulate.
160       Just typically use:
161
162          dnf provides /usr/bin/sandbox
163
164       or even:
165
166          dnf provides '*/sandbox'
167
168       to obtain similar results.
169

BANDWIDTH LIMITING

171       DNF supports the throttle and  bandwidth  options  familiar  from  YUM.
172       Contrary  to  YUM, when multiple downloads run simultaneously the total
173       downloading speed is throttled. This was  not  possible  in  YUM  since
174       downloaders ran in different processes.
175

INSTALLONLYPKGS CONFIG OPTION

177       Compared  to YUM, DNF appends list values from the installonlypkgs con‐
178       fig option to DNF defaults, where YUM overwrites the defaults by option
179       values.
180

THE USAGE OF DELTA RPM FILES

182       The  boolean deltarpm option controls whether delta RPM files are used.
183       Compared to YUM, DNF does not support deltarpm_percentage  and  instead
184       chooses  some  optimal  value of DRPM/RPM ratio to decide whether using
185       deltarpm makes sense in the given case.
186

HANDLING .SRPM FILES AND NON-EXISTENT PACKAGES

188       DNF will terminate early  with  an  error  if  a  command  is  executed
189       requesting an installing operation on a local .srpm file:
190
191          $ dnf install fdn-0.4.17-1.fc20.src.rpm tour-4-6.noarch.rpm
192          Error: Will not install a source rpm package (fdn-0.4.17-1.fc20.src).
193
194       The  same  applies  for  package  specifications  that do not match any
195       available package.
196
197       YUM will only issue a warning in this case and continue installing  the
198       "tour"  package.  The rationale behind the result in DNF is that a pro‐
199       gram should terminate with an error if it can not fulfill the CLI  com‐
200       mand in its entirety.
201

PROMOTING PACKAGE TO INSTALL TO A PACKAGE THAT OBSOLETES IT

203       DNF  will  not  magically replace a request for installing package X to
204       installing package Y if Y obsoletes X. YUM does this if  its  obsoletes
205       config  option  is  enabled but the behavior is not properly documented
206       and can be harmful.
207
208       See the related Fedora bug 1096506  and  guidelines  for  renaming  and
209       obsoleting packages in Fedora.
210

BEHAVIOR OF --INSTALLROOT OPTION

212       DNF  offers  more  predictable behavior of installroot. DNF handles the
213       path differently from the --config command-line option, where this path
214       is  always  related  to  the  host  system (YUM combines this path with
215       installroot). Reposdir is also handled  slightly  differently,  if  one
216       path  of  the  reposdirs  exists  inside of installroot, then repos are
217       strictly taken from installroot (YUM tests each path from reposdir sep‐
218       arately and use installroot path if existed). See the detailed descrip‐
219       tion for --installroot option.
220

DIFFERENT PROMPT AFTER TRANSACTION TABLE

222       DNF doesn't provide download functionality after displaying transaction
223       table.  It  only asks user whether to continue with transaction or not.
224       If one wants to download packages, they can use the 'download' command.
225

LIST COMMAND SHOWS ALL REPO ALTERNATIVES

227       DNF lists all packages from all repos, which means there can be  dupli‐
228       cates  package names (with different repo name). This is due to provid‐
229       ing users possibility to choose preferred repo.
230

YUM-LANGPACKS SUBCOMMANDS HAVE BEEN REMOVED

232       Translations became part of core DNF and it is no longer  necessary  to
233       manage individual language packs.
234
235       Following sub-commands were removed:
236
237       · langavailable
238
239       · langinstall
240
241       · langremove
242
243       · langlist
244
245       · langinfo
246
247       ┌──────────────────────────┬─────────────────────┬────────────────────┐
248       │Original YUM tool         │ DNF command/option  │ Package            │
249       ├──────────────────────────┼─────────────────────┼────────────────────┤
250yum check                 │ dnf       repoquery │ dnf                
251       │                          │ --unsatisfied       │                    │
252       ├──────────────────────────┼─────────────────────┼────────────────────┤
253yum-langpacks             │                     │ dnf                
254       ├──────────────────────────┼─────────────────────┼────────────────────┤
255yum-plugin-aliases        │ dnf alias           │ dnf                
256       ├──────────────────────────┼─────────────────────┼────────────────────┤
257yum-plug‐                 │ option  in   debug‐ dnf-plugins-core   
258in-auto-update-debug-info info-install.conf   │                    │
259       ├──────────────────────────┼─────────────────────┼────────────────────┤
260yum-plugin-changelog      │                     │ dnf-plugins-core   
261       ├──────────────────────────┼─────────────────────┼────────────────────┤
262yum-plugin-copr           dnf coprdnf-plugins-core   
263       └──────────────────────────┴─────────────────────┴────────────────────┘
264
265yum-plugin-fastestmirror  fastestmirror       dnf                
266       │                          │ option in dnf.conf  │                    │
267       ├──────────────────────────┼─────────────────────┼────────────────────┤
268yum-plugin-fs-snapshot    │                     │ dnf-plug‐          
269       │                          │                     │ ins-extras-snapper 
270       ├──────────────────────────┼─────────────────────┼────────────────────┤
271yum-plugin-local          │                     │ dnf-plugins-core   
272       ├──────────────────────────┼─────────────────────┼────────────────────┤
273yum-plugin-merge-conf     │                     │ dnf-plug‐          
274       │                          │                     │ ins-extras-rpmconf 
275       ├──────────────────────────┼─────────────────────┼────────────────────┤
276yum-plugin-post-transac‐  │                     │ dnf-plugins-core   
277tion-actions              │                     │                    │
278       ├──────────────────────────┼─────────────────────┼────────────────────┤
279yum-plugin-priorities     priority  option in │ dnf                
280       │                          │ dnf.conf            │                    │
281       ├──────────────────────────┼─────────────────────┼────────────────────┤
282yum-plug‐                 │ dnf autoremove      │ dnf                
283in-remove-with-leaves     │                     │                    │
284       ├──────────────────────────┼─────────────────────┼────────────────────┤
285yum-plugin-show-leaves    │                     │ dnf-plugins-core   
286       ├──────────────────────────┼─────────────────────┼────────────────────┤
287yum-plugin-tmprepo        --repofrompath      dnf                
288       │                          │ option              │                    │
289       ├──────────────────────────┼─────────────────────┼────────────────────┤
290yum-plugin-tsflags        tsflags  option  in │ dnf                
291       │                          │ dnf.conf            │                    │
292       ├──────────────────────────┼─────────────────────┼────────────────────┤
293yum-plugin-versionlock    │                     │ python3-dnf-plug‐  
294       │                          │                     │ in-versionlock     
295       ├──────────────────────────┼─────────────────────┼────────────────────┤
296yum-rhn-plugin            │                     │ dnf-plugin-space‐  
297       │                          │                     │ walk               
298       └──────────────────────────┴─────────────────────┴────────────────────┘
299
300       Plugins that have not been ported yet:
301
302       yum-plugin-filter-data,      yum-plugin-keys,     yum-plugin-list-data,
303       yum-plugin-protectbase,     yum-plugin-ps,     yum-plugin-puppetverify,
304       yum-plugin-refresh-updatesd,    yum-plugin-rpm-warm-cache,    yum-plug‐
305       in-upgrade-helper, yum-plugin-verify
306
307       Feel free to file an RFE for missing functionality if you need it.
308
309       All ported YUM tools are now implemented as DNF plugins.
310
311         ┌──────────────────────┬─────────────────────┬─────────────────────┐
312         │Original YUM tool     │ New DNF command     │ Package             │
313         ├──────────────────────┼─────────────────────┼─────────────────────┤
314debuginfo-install     dnf          debug‐dnf-plugins-core    
315         │                      │ info-install        │                     │
316         ├──────────────────────┼─────────────────────┼─────────────────────┤
317find-repos-of-install dnf list installeddnf                 
318         ├──────────────────────┼─────────────────────┼─────────────────────┤
319needs-restarting      dnf tracerdnf-plug‐           
320         │                      │                     │ ins-extras-tracer   
321         ├──────────────────────┼─────────────────────┼─────────────────────┤
322package-cleanup       │ dnf list, dnf repo‐ │ dnf,      dnf-plug‐ 
323         │                      │ query               │ ins-core            
324         ├──────────────────────┼─────────────────────┼─────────────────────┤
325repoclosure           dnf repoclosurednf-plug‐           
326         │                      │                     │ ins-extras-repoclo‐ 
327         │                      │                     │ sure                
328         └──────────────────────┴─────────────────────┴─────────────────────┘
329
330
331repodiff              dnf repodiffdnf-plugins-core    
332         ├──────────────────────┼─────────────────────┼─────────────────────┤
333repo-graph            dnf repographdnf-plug‐           
334         │                      │                     │ ins-extras-repo‐    
335         │                      │                     │ graph               
336         ├──────────────────────┼─────────────────────┼─────────────────────┤
337repomanage            dnf repomanagednf-plug‐           
338         │                      │                     │ ins-extras-repoman‐ 
339         │                      │                     │ age                 
340         ├──────────────────────┼─────────────────────┼─────────────────────┤
341repoquery             │ dnf repoquery       │ dnf                 
342         ├──────────────────────┼─────────────────────┼─────────────────────┤
343reposync              dnf reposyncdnf-plugins-core    
344         ├──────────────────────┼─────────────────────┼─────────────────────┤
345repotrack             dnf        downloaddnf-plugins-core    
346         │                      │ --resolve --alldeps │                     │
347         ├──────────────────────┼─────────────────────┼─────────────────────┤
348yum-builddep          dnf builddepdnf-plugins-core    
349         ├──────────────────────┼─────────────────────┼─────────────────────┤
350yum-config-manager    dnf config-managerdnf-plugins-core    
351         ├──────────────────────┼─────────────────────┼─────────────────────┤
352yum-debug-dump        dnf debug-dumpdnf-plug‐           
353         │                      │                     │ ins-extras-debug    
354         ├──────────────────────┼─────────────────────┼─────────────────────┤
355yum-debug-restore     dnf debug-restorednf-plug‐           
356         │                      │                     │ ins-extras-debug    
357         ├──────────────────────┼─────────────────────┼─────────────────────┤
358yumdownloader         dnf downloaddnf-plugins-core    
359         └──────────────────────┴─────────────────────┴─────────────────────┘
360
361       Detailed table for package-cleanup replacement:
362
363              ┌───────────────────────────┬────────────────────────────┐
364package-cleanup --dupes    dnf repoquery --duplicates 
365              ├───────────────────────────┼────────────────────────────┤
366package-cleanup --leaves   dnf repoquery --unneeded   
367              ├───────────────────────────┼────────────────────────────┤
368package-cleanup --orphans  dnf repoquery --extras     
369              ├───────────────────────────┼────────────────────────────┤
370package-cleanup --problems dnf  repoquery  --unsatis‐ 
371              │                           │ fied                       
372              ├───────────────────────────┼────────────────────────────┤
373package-cleanup     --cle‐ dnf remove --duplicates    
374andupes                    │                            │
375              ├───────────────────────────┼────────────────────────────┤
376package-cleanup  --oldker‐ dnf   remove  --oldinstal‐ 
377nels                       lonly                      
378              ├───────────────────────────┼────────────────────────────┤
379package-cleanup  --oldker‐ dnf remove $(dnf repoquery 
380nels --keep=2              --installonly       --lat‐ 
381              │                           │ est-limit=-2)              
382              └───────────────────────────┴────────────────────────────┘
383

YUM-UPDATEONBOOT AND YUM-CRON

385       DNF does not have a direct replacement of yum-updateonboot and yum-cron
386       commands.  However, the similar result can be achieved by dnf automatic
387       command (see automatic).
388
389       You can either use the shortcut:
390
391          $ systemctl enable --now dnf-automatic-install.timer
392
393       Or  set apply_updates option of /etc/dnf/automatic.conf to True and use
394       generic timer unit:
395
396          $ systemctl enable --now dnf-automatic.timer
397
398       The timer in both cases is activated 1 hour after the system was booted
399       up  and  then  repetitively once every 24 hours. There is also a random
400       delay on these timers set to 5 minutes. These values can be tweaked via
401       dnf-automatic*.timer  config files located in the /usr/lib/systemd/sys‐
402       tem/ directory.
403

UTILITIES THAT HAVE NOT BEEN PORTED YET

405       repo-rss, show-changed-rco, show-installed, verifytree, yum-groups-man‐
406       ager
407
408       Take a look at the FAQ about YUM to DNF migration. Feel free to file an
409       RFE for missing functionality if you need it.
410

AUTHOR

412       See AUTHORS in DNF source distribution.
413
415       2012-2021, Red Hat, Licensed under GPLv2+
416
417
418
419
4204.6.1                            Mar 02, 2021                       YUM2DNF(8)
Impressum