A) You'd have to maintain, by hand, not just the requirements that you care about but those of the transitive closure of dependencies.
B) How would you make those decisions? You need a resolver to find a valid combination for you. That is in general an NP-hard problem. Best to leave it to an algorithm than a human...