Iuri,
I totally agree that it should be atomic. I relatively often experience errors during upgrade or installation of packages. Therefore, I usually clone the database first to be able to "step back" in the case of an error. However, this may not be that easy on highly available production systems.
In a perfect world, also "downgrade" scripts would exist, which allow to "undo" such operations.
Cheers