It is because of the strange belief that a piece of software can work reliably against a set of libraries when they were not tested together (just because somebody says they're compatible). Dependency management can work only if every piece of software is able to link directly to the versions of libraries to which they were originally released.
The dependency management must be of exact versions of libraries that must be present to work with the installed software. Instead, people believe that it is possible to manage dependencies by stated compatibility: this will never work.
If operating systems had dependency-library versioning, lookup, retrieval and verification facilities built directly into the core exposed with a proper C-API, all these problems could go away.
The dependency management must be of exact versions of libraries that must be present to work with the installed software. Instead, people believe that it is possible to manage dependencies by stated compatibility: this will never work.