Things have to work We avoid backing out by computing as much as possible beforehand: disk space needed collision issues dependency issues so that we can fail gracefully. It works because we have enough information available like dependencies, conflicts, etc.