How does the transaction engine work?
The last few series of releases (0.9.6x and 0.9.7x) have supported transactions so that nothing happens unless everything checks out properly. The transaction is built up of packages to install, upgrade and remove. The transaction status will be reported to the user to be confirmed (unless the user passes in –no-prompt on the command line). After this confirmation, all packages will be downloaded before anything else happens. If anything fails to download, the transaction is immediately aborted. If all packages download successfully, all removals in the transaction are completed first (in case packages being installed/upgraded share files with the packages to be removed). Next, all packages to be installed (new installs) are installed. This should satisfy dependencies of the packages to be upgraded, which follow after the new installs. The order of package dependencies, where available, is honored. These dependencies are installed prior to the packages that require them. This helps ke