I used to think that worries about what the Gnu build tools will make of /usr/local
were verging on paranoid. The build tools expect there to be lots of things there: in the good old days before package managers (I joke), we compiled whatever to /usr/local
. But while Autoconf usually does figure out issues, the sheer build complexity of many open-source projects does cause problems and these problems can be hard to back out of when you get into difficulty.
But the risk of trouble with Autoconf finding something it shouldn't under /usr/local
needs to be balanced about the maintenance nuisance having two, three, or four different different copies of Perl, Tcl, and Ruby, each with different coverage of their different package libraries. Unpleasant.
Since my experience with MacPorts and Fink has typically been exasperation caused by exactly this, and at some point switching to compiling the old-fashioned way to /usr/local
, I was pleased to see that Homebrew didn't mess about with that. I tried configuring MacPorts to install to /usr/local
, but MacPorts goes out of its way to make that difficult. I understand that the motivation is to make life easier for themselves when dealing with cries for help on their mailing list and bug tracker: please be aware, though, that while we should respect the effort of volunteer packagers and treat their time as precious, their debugging convenience is not the only sort of simplicity that affects you, as a user.
Homebrew, in this respect at least, does things the way they used to be done, and MacPorts tries not to interfere. If you are willing to document which packages you need with Homebrew, and wipe /usr/local clean and reinstall in case of difficulties, then you can always back out in the case things go badly wrong. And once you realise that problems in /usr/local do not generally carry the risk of permanent damage to your machines, you may feel freer to take risks.
I'll just note how much worse packaging is on OSX than FreeBSD: Apple does not really seem to care about the usability of its BSD subsytem, because this is a problem they could help with.