DNF versionlock Plugin


versionlock is a plugin that takes a set of names / versions for packages and excludes all other versions of those packages. This allows you to protect packages from being updated by newer versions.

The plugin provides a command versionlock which allows you to view and edit the list of locked packages easily.

The plugin will walk each line of the versionlock file, parse out the name and version of the package. It will then exclude any package by that name that doesn’t match one of the versions listed within the file. This is basically the same as doing an exclude for the package name itself (as you cannot exclude installed packages), but dnf will still see the versions you have installed/versionlocked as available so that dnf reinstall will still work, etc. It can also work in the opposite way, like a fast exclude, by prefixing a ‘!’ character to the version. Versionlock plugin does not apply any excludes in non-transactional operations like repoquery, list, info, etc.


dnf versionlock [add|exclude|list|delete|clear] [<package-spec>]


Package spec to lock or exclude.


dnf versionlock add <package-spec>
Add a versionlock for all available packages matching the spec. It means that only versions of packages represented by <package-spec> will be available for transaction operations.
dnf versionlock exclude <package-spec>
Add an exclude (within versionlock) for the available packages matching the spec. It means that packages represented by <package-spec> will be excluded from transaction operations.
dnf versionlock list or dnf versionlock
List the current versionlock entries.
dnf versionlock delete <package-spec>
Remove any matching versionlock entries.
dnf versionlock clear
Remove all versionlock entries.



The minimal content of conf file should contain main sections with enabled and locklist parameter.


This option is a string with points to the file which will have the versionlock information in it. Note that the file has to exist (or the versionlock plugin will make dnf exit).However it can be empty.

The file takes entries in the format of package-spec (optionally prefixed with ‘!’ for excludes). See specifying_packages-label.