8. Transactions

Packages are installed and uninstalled as a series of transactions. A Transaction object represents a set of packages to install or uninstall. A single Transaction object may hold zero or more Manifest objects which specify packages to be installed by this transaction, and zero or more Manifest objects which specify packages to be uninstalled from a repository.

The same transaction may install and uninstall Manifests. One situation where this happens is when a package is updated to a newer version. Typically this results in a Transaction object that installs a Manifest of the new version of the package, and uninstalls a Manifest of the older version.

A Transaction object installs multiple Manifests when the corresponding packages are dependent on each other, and uninstalls multiple Manifests when multiple existing packages are obsoleted or superceded.