1YUM2DNF(8) DNF YUM2DNF(8)
2
3
4
6 yum2dnf - Changes in DNF compared to YUM
7
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
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
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
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
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
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
57 include directive name of [main] and Repo configuration is a more logi‐
58 cal and better named counterpart of exclude in DNF.
59
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
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
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
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
105 Unsupported to simplify the configuration.
106
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
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
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
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
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
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
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
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
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
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
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
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
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
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 ├──────────────────────────┼─────────────────────┼────────────────────┤
240 │yum check │ dnf repoquery │ dnf │
241 │ │ --unsatisfied │ │
242 ├──────────────────────────┼─────────────────────┼────────────────────┤
243 │yum-langpacks │ │ dnf-langpacks │
244 ├──────────────────────────┼─────────────────────┼────────────────────┤
245 │yum-plugin-aliases │ dnf alias │ dnf │
246 ├──────────────────────────┼─────────────────────┼────────────────────┤
247 │yum-plug‐ │ option in debug‐ │ dnf-plugins-core │
248 │in-auto-update-debug-info │ info-install.conf │ │
249 ├──────────────────────────┼─────────────────────┼────────────────────┤
250 │yum-plugin-changelog │ │ dnf-plugins-core │
251 ├──────────────────────────┼─────────────────────┼────────────────────┤
252 │yum-plugin-copr │ dnf copr │ dnf-plugins-core │
253 ├──────────────────────────┼─────────────────────┼────────────────────┤
254 │yum-plugin-fastestmirror │ fastestmirror │ dnf │
255 │ │ option in dnf.conf │ │
256 ├──────────────────────────┼─────────────────────┼────────────────────┤
257 │yum-plugin-fs-snapshot │ │ dnf-plug‐ │
258 │ │ │ ins-extras-snapper │
259 ├──────────────────────────┼─────────────────────┼────────────────────┤
260 │yum-plugin-local │ │ dnf-plugins-core │
261 └──────────────────────────┴─────────────────────┴────────────────────┘
262
263
264
265 │yum-plugin-merge-conf │ │ dnf-plug‐ │
266 │ │ │ ins-extras-rpmconf │
267 ├──────────────────────────┼─────────────────────┼────────────────────┤
268 │yum-plugin-priorities │ priority option in │ dnf │
269 │ │ dnf.conf │ │
270 ├──────────────────────────┼─────────────────────┼────────────────────┤
271 │yum-plug‐ │ dnf autoremove │ dnf │
272 │in-remove-with-leaves │ │ │
273 ├──────────────────────────┼─────────────────────┼────────────────────┤
274 │yum-plugin-show-leaves │ │ dnf-plugins-core │
275 ├──────────────────────────┼─────────────────────┼────────────────────┤
276 │yum-plugin-tmprepo │ --repofrompath │ dnf │
277 │ │ option │ │
278 ├──────────────────────────┼─────────────────────┼────────────────────┤
279 │yum-plugin-tsflags │ tsflags option in │ dnf │
280 │ │ dnf.conf │ │
281 ├──────────────────────────┼─────────────────────┼────────────────────┤
282 │yum-plugin-versionlock │ │ python3-dnf-plug‐ │
283 │ │ │ in-versionlock │
284 ├──────────────────────────┼─────────────────────┼────────────────────┤
285 │yum-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 ├──────────────────────┼─────────────────────┼─────────────────────┤
303 │debuginfo-install │ dnf debug‐ │ dnf-plugins-core │
304 │ │ info-install │ │
305 ├──────────────────────┼─────────────────────┼─────────────────────┤
306 │find-repos-of-install │ dnf list installed │ dnf │
307 ├──────────────────────┼─────────────────────┼─────────────────────┤
308 │needs-restarting │ dnf tracer │ dnf-plug‐ │
309 │ │ │ ins-extras-tracer │
310 ├──────────────────────┼─────────────────────┼─────────────────────┤
311 │package-cleanup │ dnf list, dnf repo‐ │ dnf, dnf-plug‐ │
312 │ │ query │ ins-core │
313 ├──────────────────────┼─────────────────────┼─────────────────────┤
314 │repoclosure │ dnf repoclosure │ dnf-plug‐ │
315 │ │ │ ins-extras-repoclo‐ │
316 │ │ │ sure │
317 ├──────────────────────┼─────────────────────┼─────────────────────┤
318 │repodiff │ dnf repodiff │ dnf-plugins-core │
319 ├──────────────────────┼─────────────────────┼─────────────────────┤
320 │repo-graph │ dnf repograph │ dnf-plug‐ │
321 │ │ │ ins-extras-repo‐ │
322 │ │ │ graph │
323 ├──────────────────────┼─────────────────────┼─────────────────────┤
324 │repomanage │ dnf repomanage │ dnf-plug‐ │
325 │ │ │ ins-extras-repoman‐ │
326 │ │ │ age │
327 ├──────────────────────┼─────────────────────┼─────────────────────┤
328 │repoquery │ dnf repoquery │ dnf │
329 └──────────────────────┴─────────────────────┴─────────────────────┘
330
331 │reposync │ dnf reposync │ dnf-plugins-core │
332 ├──────────────────────┼─────────────────────┼─────────────────────┤
333 │repotrack │ dnf download │ dnf-plugins-core │
334 │ │ --resolve --alldeps │ │
335 ├──────────────────────┼─────────────────────┼─────────────────────┤
336 │yum-builddep │ dnf builddep │ dnf-plugins-core │
337 ├──────────────────────┼─────────────────────┼─────────────────────┤
338 │yum-config-manager │ dnf config-manager │ dnf-plugins-core │
339 ├──────────────────────┼─────────────────────┼─────────────────────┤
340 │yum-debug-dump │ dnf debug-dump │ dnf-plug‐ │
341 │ │ │ ins-extras-debug │
342 ├──────────────────────┼─────────────────────┼─────────────────────┤
343 │yum-debug-restore │ dnf debug-restore │ dnf-plug‐ │
344 │ │ │ ins-extras-debug │
345 ├──────────────────────┼─────────────────────┼─────────────────────┤
346 │yumdownloader │ dnf download │ dnf-plugins-core │
347 └──────────────────────┴─────────────────────┴─────────────────────┘
348
349 Detailed table for package-cleanup replacement:
350
351 ┌───────────────────────────┬────────────────────────────┐
352 │package-cleanup --dupes │ dnf repoquery --duplicates │
353 ├───────────────────────────┼────────────────────────────┤
354 │package-cleanup --leaves │ dnf repoquery --unneeded │
355 ├───────────────────────────┼────────────────────────────┤
356 │package-cleanup --orphans │ dnf repoquery --extras │
357 ├───────────────────────────┼────────────────────────────┤
358 │package-cleanup --oldker‐ │ dnf repoquery --instal‐ │
359 │nels │ lonly │
360 ├───────────────────────────┼────────────────────────────┤
361 │package-cleanup --problems │ dnf repoquery --unsatis‐ │
362 │ │ fied │
363 ├───────────────────────────┼────────────────────────────┤
364 │package-cleanup --cle‐ │ dnf remove --duplicates │
365 │andupes │ │
366 ├───────────────────────────┼────────────────────────────┤
367 │package-cleanup --oldker‐ │ dnf remove --oldinstal‐ │
368 │nels │ lonly │
369 └───────────────────────────┴────────────────────────────┘
370
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
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
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)