DNF Release Notes

2.7.5 Release Notes

  • Improved performance for excludes and includes handling
  • Fixed problem of handling checksums for local repositories
  • Fix traceback when using dnf.Base.close()

Bugs fixed in 2.7.5:

2.6.2 Release Notes

API additions in 2.6.2:

From commandline it is possible to use new option --noautoremove to disable removal of dependencies that are no longer used.

Bugs fixed in 2.6.2:

2.3.0 Release Notes

API additions in 2.3.0:

DNF command additions in 2.3.0:

  • dnf [options] repoquery --whatconflicts <capability> limit the resulting set only to packages that conflict <capability>.
  • dnf [options] repoquery --whatobsoletes <capability> limit the resulting set only to packages that obsolete <capability>.
  • dnf [options] repoquery --location show a location where the package could be downloaded from.
  • dnf [options] repoquery --nvr show found packages in format name-version-release.
  • dnf [options] repoquery --nevra show found packages in format name-epoch:version-release.architecture (default).
  • dnf [options] repoquery --envra show found packages in format epoch:name-version-release.architecture.
  • dnf [options] repoquery --recursive query packages recursively. Can be used with --whatrequires <REQ> (optionaly with –alldeps, but it has no effect with –exactdeps), or with --requires <REQ> --resolve.

Bugs fixed in 2.3.0:

2.0.1 Release Notes

API changes in 2.0.1:

API additions in 2.0.1:

  • dnf.Base.autoremove() removes all ‘leaf’ packages from the system that were originally installed as dependencies
  • dnf.cli.Cli.redirect_logger() changes minimal logger level for terminal output to stdout and stderr

DNF command additions in 2.0.1:

  • dnf [options] shell [filename] opens an interactive shell for conducting multiple commands during a single execution of DNF
  • dnf [options] swap <remove-spec> <install-spec> removes spec and install spec in one transaction

Bugs fixed in 2.0.1:

2.0.0 Release Notes

List of all incompatible changes can be found at: dnf-1 vs dnf-2

API changes in 2.0.0:

  • dnf.Base.add_remote_rpms() now suppresses any error if strict equals to False.
  • dnf.Base.read_comps() now limits results to system basearch if arch_filter equals to True.
  • dnf.cli.Cli.configure() now doesn’t take any additional arguments.
  • dnf.cli.Cli.run() now doesn’t take any additional arguments.
  • dnf.Plugin.read_config() now doesn’t take any name of config file.
  • dnf.Repo.__init__() now takes parent_conf argument which is an instance of dnf.conf.Conf holding main dnf configuration instead of cachedir path.
  • exclude and include configuration options change to excludepkgs and includepkgs.

API additions in 2.0.0:

  • dnf.Base.init_plugins() initializes plugins. It is possible to disable some plugins by passing the list of their name patterns to disabled_glob.
  • dnf.Base.configure_plugins() configures plugins by running their configure() method.
  • dnf.Base.urlopen() opens the specified absolute url and returns a file object which respects proxy setting even for non-repo downloads
  • Introduced new configuration options: check_config_file_age, clean_requirements_on_remove, deltarpm_percentage, exit_on_lock, get_reposdir, group_package_types, installonlypkgs, keepcache, protected_packages, retries, type, and upgrade_group_objects_upgrade. For detailed description see: DNF API.
  • Introduced new configuration methods: dump() and write_raw_configfile(). For detailed description see: DNF API.
  • Introduced dnf.package.Package attributes debug_name, downloadsize, source_debug_name and source_name. For detailed description see: DNF Package API.
  • dnf.query.Query.extras() returns a new query that limits the result to installed packages that are not present in any repo.
  • dnf.repo.Repo.enable_debug_repos() enables debug repos corresponding to already enabled binary repos.
  • dnf.repo.Repo.enable_source_repos() enables source repos corresponding to already enabled binary repos.
  • dnf.repo.Repo.dump() prints repository configuration, including inherited values.
  • dnf.query.Query.filter() now accepts optional argument pkg.

DNF command changes in 2.0.0:

  • dnf [options] group install [with-optional] <group-spec>... changes to dnf [options] group install [--with-optional] <group-spec>....
  • dnf [options] list command [<package-name-specs>...] changes to dnf [options] list –command [<package-name-specs>...]`.
  • dnf [options] makecache timer changes to dnf [options] makecache --timer.
  • dnf [options] repolist [enabled|disabled|all] changes to dnf [options] repolist [--enabled|--disabled|--all].
  • dnf [options] repository-packages <repoid> info command [<package-name-spec>...] changes to dnf [options] repository-packages <repoid> info --command [<package-name-spec>...].
  • dnf repoquery --duplicated changes to dnf repoquery --duplicates.
  • dnf [options] search [all] <keywords>... changes to dnf [options] search [--all] <keywords>....
  • dnf [options] updateinfo [<availability>] [<spec>...] changes to dnf [options] updateinfo [--summary|--list|--info] [<availability>] [<spec>...].
  • --disablerepo command line argument is mutually exclusive with --repo.
  • --enablerepo command line argument now appends repositories.
  • --installroot command line argument. For detailed description see: DNF command API.
  • --releasever command line argument now doesn’t detect release number from running system.
  • --repofrompath command line argument can now be combined with --repo instead of --enablerepo.
  • Alternative of yum’s deplist changes from dnf repoquery --requires to dnf repoquery --deplist.
  • New systemd units dnf-automatic-notifyonly, dnf-automatic-download, dnf-automatic-download

were added for a better customizability of dnf-automatic.

DNF command additions in 2.0.0:

  • dnf [options] remove --duplicates removes older version of duplicated packages.
  • dnf [options] remove --oldinstallonly``removes old installonly packages keeping only ``installonly_limit latest versions.
  • dnf [options] repoquery [<select-options>] [<query-options>] [<pkg-spec>] searches the available DNF repositories for selected packages and displays the requested information about them. It is an equivalent of rpm -q for remote repositories.
  • dnf [options] repoquery --querytags provides list of recognized tags by repoquery option --queryformat.
  • --repo command line argument enables just specific repositories by an id or a glob. Can be used multiple times with accumulative effect. It is basically shortcut for --disablerepo="*" --enablerepo=<repoid> and is mutually exclusive with --disablerepo option.
  • New commands have been introduced: check and upgrade-minimal.
  • New security options introduced: bugfix, enhancement, newpackage, security, advisory, bzs, cves, sec-severity and secseverity.

Bugs fixed in 2.0.0:

1.1.3 Release Notes

Now dnf.Base.group_install() is able to exclude mandatory packages of the group from transaction.

1.1.0 Release Notes

API additions in 1.1.0:

dnf.Base.do_transaction() now accepts multiple displays.

Introduced install_weak_deps configuration option.

Implemented strict configuration option.

API deprecations in 1.1.0:

  • dnf.callback.LoggingTransactionDisplay is deprecated now. It was considered part of API despite the fact that it has never been documented. Use dnf.callback.TransactionProgress instead.

Bugs fixed in 1.1.0

1.0.2 Release Notes

When a transaction is not successfully finished, DNF preserves downloaded packages until the next successful transaction even if keepcache option is set to False.

Maximum number of simultaneous package downloads can be adjusted by newly added max_parallel_downloads configuration option.

--repofrompath command line argument was introduced for temporary configuration of repositories.

API additions in 1.0.2:

Newly added package attributes: dnf.package.Package.obsoletes, dnf.package.Package.provides and dnf.package.Package.requires.

dnf.package.Query.filter‘s keys requires and provides now accepts list of Hawkey.Reldep type.

Bugs fixed in 1.0.2:

0.6.5 Release Notes

Python 3 version of DNF is now default in Fedora 23 and later.

yum-dnf package does not conflict with yum package.

dnf erase was deprecated in favor of dnf remove.

Extended documentation of handling non-existent packages and YUM to DNF transition in Changes in DNF CLI compared to Yum.

API additions in 0.6.5:

Newly added pluginconfpath option in configuration.

Exposed skip_if_unavailable attribute from Repository Configuration.

Documented IOError exception of method fill_sack from dnf.Base.

Bugs fixed in 0.6.5:

0.6.4 Release Notes

Added example code snippets into DNF Use Cases.

Shows ordered groups/environments by display_order tag from cli and Comps, or the Distribution Compose Metadata DNF API.

In commands the environment group is specified the same as group.

skip_if_unavailable configuration option affects the metadata only.

added enablegroups, minrate and timeout configuration options

API additions in 0.6.4:

Documented install_set and remove_set attributes from Transaction.

Exposed downloadsize, files, installsize attributes from Package.

Bugs fixed in 0.6.4:

0.6.0 Release Notes

0.6.0 marks a new minor version of DNF and the first release to support advisories listing with the udpateinfo command.

Support for the include configuration directive has been added. Its functionality reflects Yum’s includepkgs but it has been renamed to make it consistent with the exclude setting.

Group operations now produce a list of proposed marking changes to group objects and the user is given a chance to accept or reject them just like with an ordinary package transaction.

Bugs fixed in 0.6.0:

0.5.3 Release Notes

A set of bugfixes related to i18n and Unicode handling. There is a -4/-6 switch and a corresponding ip_resolve configuration option (both known from Yum) to force DNS resolving of hosts to IPv4 or IPv6 addresses.

0.5.3 comes with several extensions and clarifications in the API: notably Transaction is introspectible now, Query.filter is more useful with new types of arguments and we’ve hopefully shed more light on how a client is expected to setup the configuration substitutions.

Finally, plugin authors can now use a new resolved() hook.

API changes in 0.5.3:

API additions in 0.5.3:

Bugs fixed in 0.5.3:

0.5.1 Release Notes

Bugfix release with several internal cleanups. One outstanding change for CLI users is that DNF is a lot less verbose now during the dependency resolving phase.

Bugs fixed in 0.5.1:

0.5.0 Release Notes

The biggest improvement in 0.5.0 is complete support for groups and environments, including internal database of installed groups independent of the actual packages (concept known as groups-as-objects from Yum). Upgrading groups is supported now with group upgrade too.

To force refreshing of metadata before an operation (even if the data is not expired yet), the refresh option has been added.

Internally, the CLI went through several changes to allow for better API accessibility like granular requesting of root permissions.

API has got many more extensions, focusing on better manipulation with comps and packages. There are new entries in Changes in DNF CLI compared to Yum and DNF User’s FAQ too.

Several resource leaks (file descriptors, noncollectable Python objects) were found and fixed.

API changes in 0.5.0:

  • it is now recommended that either dnf.Base.close() is used, or that dnf.Base instances are treated as a context manager.

API extensions in 0.5.0:

Bugs fixed in 0.5.0:

0.4.19 Release Notes

Arriving one week after 0.4.18, the 0.4.19 mainly provides a fix to a traceback in group operations under non-root users.

DNF starts to ship separate translation files (.mo) starting with this release.

Bugs fixed in 0.4.19:

0.4.18 Release Notes

Support for dnf distro-sync <spec> finally arrives in this version.

DNF has moved to handling groups as objects, tagged installed/uninstalled independently from the actual installed packages. This has been in Yum as the group_command=objects setting and the default in recent Fedora releases. There are API extensions related to this change as well as two new CLI commands: group mark install and group mark remove.

API items deprecated in 0.4.8 and 0.4.9 have been dropped in 0.4.18, in accordance with our deprecating-label.

API changes in 0.4.18:

API deprecations in 0.4.18:

  • dnf.Base.select_group() is deprecated now. Please use group_install() instead.

API additions in 0.4.18:

Bugs fixed in 0.4.18:

0.4.16 Release Notes

The refactorings from 0.4.15 are introducing breakage causing the background dnf makecache runs traceback. This release fixes that.

Bugs fixed in 0.4.16:

0.4.13 Release Notes

0.4.13 finally ships support for delta RPMS. Enabling this can save some bandwidth (and use some CPU time) when downloading packages for updates.

Support for bash completion is also included in this version. It is recommended to use the generate_completion_cache plugin to have the completion work fast. This plugin will be also shipped with dnf-plugins-core-0.0.3.

The keepcache config option has been readded.

Bugs fixed in 0.4.13:

0.4.12 Release Notes

This release disables fastestmirror by default as we received many complains about it. There are also several bugfixes, most importantly an issue has been fixed that caused packages installed by Anaconda be removed together with a depending package. It is now possible to use bandwidth and throttle config values too.

Bugs fixed in 0.4.12:

0.4.10 Release Notes

0.4.10 is a bugfix release that also adds some long-requested CLI features and extends the plugin support with two new plugin hooks. An important feature for plugin developers is going to be the possibility to register plugin’s own CLI command, available from this version.

dnf history now recognizes last as a special argument, just like other history commands.

dnf install now accepts group specifications via the @ character.

Support for the --setopt option has been readded from Yum.

API additions in 0.4.10:

API changes in 0.4.10:

  • Plugin authors must specify Plugin.name when authoring a plugin.

Bugs fixed in 0.4.10:

0.4.9 Release Notes

Several Yum features are revived in this release. dnf history rollback now works again. The history userinstalled has been added, it displays a list of ackages that the user manually selected for installation on an installed system and does not include those packages that got installed as dependencies.

We’re happy to announce that the API in 0.4.9 has been extended to finally support plugins. There is a limited set of plugin hooks now, we will carefully add new ones in the following releases. New marking operations have ben added to the API and also some configuration options.

An alternative to yum shell is provided now for its most common use case: replacing a non-leaf package with a conflicting package is achieved by using the --allowerasing switch now.

API additions in 0.4.9:

API deprecations in 0.4.9:

  • PackageNotFoundError is deprecated for public use. Please catch MarkingError instead.
  • It is deprecated to use Base.install() return value for anything. The method either returns or raises an exception.

Bugs fixed in 0.4.9:

0.4.8 Release Notes

There are mainly internal changes, new API functions and bugfixes in this release.

Python 3 is fully supported now, the Fedora builds include the Py3 variant. The DNF program still runs under Python 2.7 but the extension authors can now choose what Python they prefer to use.

This is the first version of DNF that deprecates some of its API. Clients using deprecated code will see a message emitted to stderr using the standard Python warnings module. You can filter out dnf.exceptions.DeprecationWarning to suppress them.

API additions in 0.4.8:

API deprecations in 0.4.8:

Bugs fixed in 0.4.8:

0.4.7 Release Notes

We start to publish the DNF API Reference with this release. It is largely incomprehensive at the moment, yet outlines the shape of the documentation and the process the project is going to use to maintain it.

There are two Yum configuration options that were dropped: group_package_types and upgrade_requirements_on_install.

Bugs fixed in 0.4.7:

0.4.6 Release Notes

0.4.6 brings two new major features. Firstly, it is the revival of history undo, so transactions can be reverted now. Secondly, DNF will now limit the number of installed kernels and installonly packages in general to the number specified by installonly_limit configuration option.

DNF now supports the group summary command and one-word group commands no longer cause tracebacks, e.g. dnf grouplist.

There are vast internal changes to dnf.cli, the subpackage that provides CLI to DNF. In particular, it is now better separated from the core.

The hawkey library used against DNF from with this versions uses a recent RPMDB loading optimization in libsolv that shortens DNF startup by seconds when the cached RPMDB is invalid.

We have also added further fixes to support Python 3 and enabled librepo’s fastestmirror caching optimization to tighten the download times even more.

Bugs fixed in 0.4.6:

0.4.5 Release Notes

A serious bug causing tracebacks during package downloads made it into 0.4.4 and this release contains a fix for that. Also, a basic proxy support has been readded now.

Bugs fixed in 0.4.5:

0.4.4 Release Notes

The initial support for Python 3 in DNF has been merged in this version. In practice one can not yet run the dnf command in Py3 but the unit tests already pass there. We expect to give Py3 and DNF heavy testing during the Fedora 21 development cycle and eventually switch to it as the default. The plan is to drop Python 2 support as soon as Anaconda is running in Python 3.

Minor adjustments to allow Anaconda support also happened during the last week, as well as a fix to a possibly severe bug that one is however not really likely to see with non-devel Fedora repos:

0.4.3 Release Notes

This is an early release to get the latest DNF out with the latest librepo fixing the Too many open files bug.

In Fedora, the spec file has been updated to no longer depend on precise versions of the libraries so in the future they can be released independently.

This release sees the finished refactoring in error handling during basic operations and adds support for group remove and group info commands, i.e. the following two bugs:

0.4.2 Release Notes

DNF now downloads packages for the transaction in parallel with progress bars updated to effectively represent this. Since so many things in the downloading code were changing, we figured it was a good idea to finally drop urlgrabber dependency at the same time. Indeed, this is the first version that doesn’t require urlgrabber for neither build nor run.

Similarly, since librepo started to support this, downloads in DNF now use the fastests mirrors available by default.

The option to specify repositories’ costs has been readded.

Internally, DNF has seen first part of ongoing refactorings of the basic operations (install, update) as well as a couple of new API methods supporting development of extensions.

These bugzillas are fixed in 0.4.2:

0.4.1 Release Notes

The focus of this release was to support our efforts in implementing the DNF Payload for Anaconda, with changes on the API side of things (better logging, new Base.reset() method).

Support for some irrelevant config options has been dropped (kernelpkgnames, exactarch, rpm_check_debug). We also no longer detect metalinks in the mirrorlist option (see Fedora bug 948788).

DNF is on its way to drop the urlgrabber dependency and the first set of patches towards this goal is already in.

Expect the following bugs to go away with upgrade to 0.4.1:

0.4.0 Release Notes

The new minor version brings many internal changes to the comps code, most comps parsing and processing is now delegated to libcomps by Jindřich Luža.

The overwrite_groups config option has been dropped in this version and DNF acts if it was 0, that is groups with the same name are merged together.

The currently supported groups commands (group list and group install) are documented on the manpage now.

The 0.4.0 version is the first one supported by the DNF Payload for Anaconda and many changes since 0.3.11 make that possible by cleaning up the API and making it more sane (cleanup of yumvars initialization API, unifying the RPM transaction callback objects hierarchy, slimming down dnf.rpmUtils.arch, improved logging).

Fixes for the following are contained in this version:

0.3.11 Release Notes

The default multilib policy configuration value is best now. This does not pose any change for the Fedora users because exactly the same default had been previously achieved by a setting in /etc/dnf/dnf.conf shipped with the Fedora package.

An important fix to the repo module speeds up package downloads again is present in this release. The full list of fixes is:

0.3.10 Release Notes

The only major change is that skip_if_unavailable is enabled by default now.

A minor release otherwise, mainly to get a new version of DNF out that uses a fresh librepo. The following issues are now a thing of the past:

0.3.8 Release Notes

A new locking module has been integrated in this version, clients should see the message about DNF lock being taken less often.

Panu Matilainen has submitted many patches to this release to cleanup the RPM interfacing modules.

The following bugs are fixed in this release:

0.3.5 Release Notes

Besides few fixed bugs this version should not present any differences for the user. On the inside, the transaction managing mechanisms have changed drastically, bringing code simplification, better maintainability and better testability.

In Fedora, there is a change in the spec file effectively preventing the makecache timer from running immediately after installation. The timer service is still enabled by default, but unless the user starts it manually with systemctl start dnf-makecache.timer it will not run until after the first reboot. This is in alignment with Fedora packaging best practices.

The following bugfixes are included in 0.3.5:

0.3.4 Release Notes

0.3.4 is the first DNF version since the fork from Yum that is able to manipulate the comps data. In practice, dnf group install <group name> works again. No other group commands are supported yet.

Support for librepo-0.0.4 and related cleanups and extensions this new version allows are included (see the buglist below)

This version has also improved reporting of obsoleted packages in the CLI (the Yum-style “replacing <package-nevra>” appears in the textual transaction overview).

The following bugfixes are included in 0.3.4:

0.3.3 Release Notes

The improvements in 0.3.3 are only API changes to the logging. There is a new module dnf.logging that defines simplified logging structure compared to Yum, with fewer logging levels and simpler usage for the developers. The RPM transaction logs are no longer in /var/log/dnf.transaction.log but in /var/log/dnf.rpm.log by default.

The exception classes were simplified and moved to dnf.exceptions.

The following bugs are fixed in 0.3.3:

0.3.2 Release Notes

The major improvement in this version is in speeding up syncing of repositories using metalink by looking at the repomd.xml checksums. This effectively lets DNF cheaply refresh expired repositories in cases where the original has not changed: for instance the main Fedora repository is refreshed with one 30 kB HTTP download. This functionality is present in the current Yum but hasn’t worked in DNF since 3.0.0.

Otherwise this is mainly a release fixing bugs and tracebacks. The following reported bugs are fixed:

0.3.1 Release Notes

0.3.1 brings mainly changes to the automatic metadata synchronization. In Fedora, dnf makecache is triggered via SystemD timers now and takes an optional background extra-argument to run in resource-considerate mode (no syncing when running on laptop battery, only actually performing the check at most once every three hours). Also, the IO and CPU priorities of the timer-triggered process are lowered now and shouldn’t as noticeably impact the system’s performance.

The administrator can also easily disable the automatic metadata updates by setting metadata_timer_sync to 0.

The default value of metadata_expire was increased from 6 hours to 48 hours. In Fedora, the repos usually set this explicitly so this change is not going to cause much impact.

The following reported issues are fixed in this release: