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

YUM'S CONF DIRECTIVE INCLUDEPKGS IS JUST INCLUDE

57       include directive name of [main] and Repo configuration is a more logi‐
58       cal and better named counterpart of exclude in DNF.
59

DNF PROVIDES /BIN/<FILE> DOES NOT FIND ANY PACKAGES ON FEDORA

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 ENABLED BY DEFAULT

77       The important system  repos  should  never  be  down  and  we  see  the
78       third-party  repos  down often enough to warrant this change. Note that
79       without this setting and without an  explicit  skip_if_unavailable=True
80       in  the  relevant repo .ini file YUM immediately stops on a repo error,
81       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

GROUP_PACKAGE_TYPES DROPPED

108       Done to simplify the configuration. Users will typically want to decide
109       what packages to install per-group and not via a global setting:
110
111          dnf group install with-optional Editors
112

UPGRADE_REQUIREMENTS_ON_INSTALL DROPPED

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

DNF HISTORY ROLLBACK CHECK DROPPED

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

PACKAGES REPLACEMENT WITHOUT YUM SWAP

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

DEPENDENCY PROCESSING DETAILS ARE NOT SHOWN IN THE CLI

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

DNF PROVIDES COMPLIES WITH THE YUM DOCUMENTATION OF THE COMMAND

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

BANDWIDTH LIMITING

177       DNF  supports  the  throttle  and  bandwidth options familiar from YUM.
178       Contrary to YUM, when multiple downloads run simultaneously  the  total
179       downloading  speed  is  throttled.  This  was not possible in YUM since
180       downloaders ran in different processes.
181

INSTALLONLYPKGS CONFIG OPTION

183       Compared to YUM, DNF appends list values from the installonlypkgs  con‐
184       fig option to DNF defaults, where YUM overwrites the defaults by option
185       values.
186

THE USAGE OF DELTA RPM FILES

188       The boolean deltarpm option controls whether delta RPM files are  used.
189       Compared  to  YUM, DNF does not support deltarpm_percentage and instead
190       chooses some optimal value of DRPM/RPM ratio to  decide  whether  using
191       deltarpm makes sense in the given case.
192

HANDLING .SRPM FILES AND NON-EXISTENT PACKAGES

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

PROMOTING PACKAGE TO INSTALL TO A PACKAGE THAT OBSOLETES IT

209       DNF will not magically replace a request for installing  package  X  to
210       installing  package  Y if Y obsoletes X. YUM does this if its obsoletes
211       config option is enabled but the behavior is  not  properly  documented
212       and can be harmful.
213
214       See  the  related  Fedora  bug  1096506 and guidelines for renaming and
215       obsoleting packages in Fedora.
216

BEHAVIOR OF --INSTALLROOT OPTION

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

DIFFERENT PROMPT AFTER TRANSACTION TABLE

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

LIST COMMAND SHOWS ALL REPO ALTERNATIVES

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

YUM-UPDATEONBOOT AND YUM-CRON

372       DNF does not have a direct replacement of yum-updateonboot and yum-cron
373       commands.  However, the similar result can be achieved by dnf automatic
374       command (see automatic).
375
376       You can either use the shortcut:
377
378          $ systemctl enable dnf-automatic-install.timer && systemctl start dnf-automatic-install.timer
379
380       Or  set apply_updates option of /etc/dnf/automatic.conf to True and use
381       generic timer unit:
382
383          $ systemctl enable dnf-automatic.timer && systemctl start dnf-automatic.timer
384
385       The timer in both cases is activated 1 hour after the system was booted
386       up  and  then  repetitively once every 24 hours. There is also a random
387       delay on these timers set to 5 minutes. These values can be tweaked via
388       dnf-automatic*.timer  config files located in the /usr/lib/systemd/sys‐
389       tem/ directory.
390

UTILITIES THAT HAVE NOT BEEN PORTED YET

392       repo-rss, show-changed-rco, show-installed, verifytree, yum-groups-man‐
393       ager
394
395       Take a look at the FAQ about YUM to DNF migration. Feel free to file an
396       RFE for missing functionality if you need it.
397

AUTHOR

399       See AUTHORS in DNF source distribution.
400
402       2012-2014, Red Hat, Licensed under GPLv2+
403
404
405
406
4074.2.5                            May 07, 2019                       YUM2DNF(8)
Impressum