Provided by: dnf-plugins-core_4.10.1-4_all bug

NAME

       dnf4-pre-transaction-actions - DNF pre transaction actions Plugin

DESCRIPTION

       The  plugin  allows  to  define  actions to be executed upon starting an RPM transaction. Each action may
       define a (glob-like) filtering rule on the package NEVRA or package files, as well as whether the package
       was installed or removed. Actions are defined in action files.

CONFIGURATION

       The plugin configuration is in /etc/dnf/plugins/pre-transaction-actions.conf. All  configuration  options
       are in the [main] section.

       enabled
              Whether the plugin is enabled. Default value is True.

       actiondir
              Path  to the directory with action files. Action files must have the “.action” extension.  Default
              value is “/etc/dnf/plugins/pre-transaction-actions.d/”.

ACTION FILE FORMAT

       Empty lines and lines that start with a ‘#’ character are ignored.   Each  non-comment  line  defines  an
       action and consists of three items separated by colons: package_filter:transaction_state:command.

       package_filter
              A (glob-like) filtering rule applied on the package NEVRA (also in the shortened forms) or package
              files.

       transaction_state
              Filters packages according to their state in the transaction.

              • in  -  packages  that  will  appeared  on  the  system (downgrade, install, obsolete, reinstall,
                upgrade)

              • out - packages that will disappeared from the system (downgraded, obsoleted, remove, upgraded)

              • any - all packages

       command
              Any shell command.  The following variables in the command will be substituted:

                 • ${name}, $name - package name

                 • ${arch}, $arch - package arch

                 • ${ver}, $ver - package version

                 • ${rel}, $rel - package release

                 • ${epoch}, $epoch - package epoch

                 • ${repoid}, $repoid - package repository id

                 •

                   ${state}, $state - the change of package state in the transaction:
                          “downgrade”,   “downgraded”,   “install”,   “obsolete”,   “obsoleted”,    “reinstall”,
                          “reinstalled”, “remove”, “upgrade”, “upgraded”

              The  shell  command  will  be  evaluated  for each package that matched the package_filter and the
              transaction_state. However, after variable substitution, any duplicate commands  will  be  removed
              and  each  command  will  only  be  executed  once  per transaction. The order of execution of the
              commands follows the order in the action files, but may differ from the order of packages  in  the
              transaction.   In  other  words,  when you define several action lines for the same package_filter
              these lines will be executed in  the  order  they  were  defined  in  the  action  file  when  the
              package_filter  matches a package during the trasaction_state state.  However, the order of when a
              particular package_filter is invoked depends on the position of the corresponding package  in  the
              transaction.

   An example action file:
          # log all packages (state, nevra, repo) in transaction into a file.
          *:any:echo '${state} ${name}-${epoch}:${ver}-${rel}.${arch} repo ${repoid}' >>/tmp/pre-trans-actions-trans.log

          # The same shell command (after variables substitution) is executed only once per transaction.
          *:any:echo '${repoid}' >>/tmp/pre-trans-actions-repos
          # will write each repo only once to /tmp/pre-trans-actions-repos, even if multiple packages from
          # the same repo were matched

AUTHOR

       See AUTHORS in your Core DNF Plugins distribution

COPYRIGHT

       2014, Red Hat, Licensed under GPLv2+

4.10.1                                            Jun 20, 2025                   DNF4-PRE-TRANSACTION-ACTIONS(8)