Note: this reply is mainly going to be a redirect to a new node that takes the discussion from this point. Expect an update soon. Withhold critical judgement until then, please.sundialsvc4 wrote (the quotations may be slightly adjusted to add my emphasis or to enhance clarity if I thought it could be improved):
I have a few particular cases where the “won’t install without” scenario appears in some of the deployments that I maintain:
- One package requires a third-party C library, a standard one, but it assumes that the library exists. (Perhaps this is because there is no one single known-good way to check for it on all systems?) If it’s not there, you don’t get a prerequisite-error: you get a nasty failure to compile, with lots of oily parts on the runway when the whole thing finally skids to a stop on the tarmac.
- Another package is similar: the library has been updated and the package requires the newer one, but older deployments of it do exist out there.
“Missing and unrealized prerequisites,” by-the-by, are a definite possibility to be dealt-with in the field.
As to the last, certainly, they are. But as an overall generalization this is far less likely when using the cpan clients to install modules. The clients prompt the user when installation of the module with unfulfilled prereqs has been requested. Not to belabor the point but this is not how the OP reported the pattern of events. No mention was made of cpan prompting her as Makefile was built-which is long before cpan states (after the test run) that it won't install without force.
These are good points and are scenarios that are familiar to many Perlmonks. The 2 selected statements are both about external dependencies (where “external” in this context means provisioned from outside the CPAN installer universe). Such being the case, and knowing how sticky this whole area can be, I've created a new node  in which to carry on this discussion. The focus of the new write-up will be that indicated by sundialsvc4's speculation Perhaps this is because there is no one single known-good way to check for it on all systems?
Updated 2013-03-23 GMT