This is intentional: the design of the package manager favors an environment that is composed of compatible packages (explicitly declared), and only upgrades when this can be maintained. The discussion starting here is worth reading:
In the long run, this should be solved by tooling (eg CompatHelper).