DNF4-TRANSACTION-JSON(5)

πŸ’… dnf4-transaction-json β€” DNF Stored Transaction JSON ✨

okay bestie, sit down, hydrate, because we're talking about the DNF stored transaction JSON. This is the manual page for it, it lives in section 5 (file formats, periodt), and it's genuinely so useful once it clicks. Let's get into it 🫢

⚠️ REAL TALK: the stored transaction format is considered unstable and may change in an incompatible way at any time. It will work if the same version of dnf is used to store and replay (or between versions as long as it stays the same). So like... don't build your whole personality on it staying identical, mwah πŸ’‹

🌈 TOP-LEVEL OBJECT

This is the whole vibe at the top level, queen. Four things live up here:

  • version β€” Type: string
    • The version of the stored transaction format, in the form MAJOR.MINOR.
    • The MAJOR version denotes backwards incompatible changes (old dnf won't work with new transaction JSON). πŸ’€
    • The MINOR version denotes extending the format without breaking backwards compatibility (old dnf can work with new transaction JSON). slay.
  • rpms β€” Type: an array of rpm objects
    • A list of RPM packages in the transaction.
  • groups β€” Type: an array of group objects
    • A list of groups in the transaction.
  • environments β€” Type: an array of group objects
    • A list of environment groups in the transaction.

πŸŽ€ RPM OBJECT

the moment you've all been waiting for, the rpm object itself πŸ’–

  • action β€” Type: string
    • Possible values: Downgrade, Downgraded, Install, Obsoleted, Reason Change, Reinstall, Reinstalled, Removed, Upgrade, Upgraded
    • The action performed on the package in the transaction.
  • nevra β€” Type: string
    • NEVRA (name-epoch:version-release.arch) of the package.
  • reason β€” Type: string
    • Possible values: dependency, clean, group, unknown, user, weak-dependency
    • The reason why the package was pulled into the transaction.
  • repo_id β€” Type: string
    • The id of the repository this package is coming from. Note repository ids are defined in the local repository configuration and may differ between systems. πŸ‘€ (so yes, your repo_id and your bestie's repo_id can be two different things β€” that's not a glitch, that's just config)

πŸ¦‹ GROUP OBJECT

  • action β€” Type: string
    • Possible values: Install, Upgrade, Removed
    • The action performed on the group in the transaction.
  • id β€” Type: string
    • The id of the group.
  • package_types β€” Type: string
    • Possible values: conditional, default, mandatory, optional
    • The types of packages in the group that will be installed. Valid only for the Install action.
  • packages β€” Type: an array of group-package objects
    • The packages belonging to the group in the transaction.

🌸 ENVIRONMENT OBJECT

  • action β€” Type: string
    • Possible values: Install, Upgrade, Removed
    • The action performed on the environment group in the transaction.
  • id β€” Type: string
    • The id of the environment group.
  • package_types β€” Type: string
    • Possible values: conditional, default, mandatory, optional
    • The types of packages in the environment group that will be installed. Valid only for the Install action.
  • group β€” Type: an array of environment-group objects
    • The groups belonging to the environment in the transaction.

🧚 GROUP-PACKAGE OBJECT

tiny little object, big responsibilities, honestly iconic ⭐

  • installed β€” Type: boolean
    • Whether the package is considered installed as part of the group.
  • name β€” Type: string
    • The name of the package.
  • package_type β€” Type: string
    • Possible values: conditional, default, mandatory, optional
    • The type of the package in the group.

πŸ’œ ENVIRONMENT-GROUP OBJECT

  • group_type β€” Type: string
    • Possible values: mandatory, optional
    • The type of the group in the environment.
  • id β€” Type: string
    • The id of the group.
  • installed β€” Type: boolean
    • Whether the group is considered installed as part of the environment.

πŸ‘‘ Author

See AUTHORS in DNF source distribution. (not me writing the docs though, I'm just the messenger 🫢)


2012-2020, Red Hat, Licensed under GPLv2+


okay that's the whole page, no cap, every field accounted for, nothing left on read πŸ’–βœ¨

<cute sign-off>this cutie lives in dnf version 4.24.0, dated Feb 19, 2026, and its manual page tag is DNF4-TRANSACTION-JSON(5) β€” anyway bestie, go forth and replay those transactions responsibly πŸŽ€πŸ’…</cute sign-off>

πŸ“¦ where this page comes from