[Baypiggies] Novice Programmer Asking For Assistance

Ned Deily nad at acm.org
Wed Oct 24 05:56:19 CEST 2012


In article <0ED37AE7-94C3-41F2-8B4F-C23D99087FC0 at glenjarvis.com>,
 Glen Jarvis <glen at glenjarvis.com> wrote:
> I've had really good luck with MacPorts (I keep it clean and updated -- a 
> very good habit).
> 
> But, what FUD does it get?

I was going to say start by looking at the home page of the project but 
I see that it has apparently recently been changed.  ATM, you can still 
get a feel for it by googlng; the cached title line is still there.

> Also, I've never had a reason to use HomeBrew -- 
> what's its selling points?

Others can probably do a better job than I but I think the main 
advertised advantages are that (1) Homebrew recipes are written in Ruby 
and originally were more light-weight than the older and more 
option-filled MacPorts port files (written in Tcl) and (2) Homebrew 
recipe writers are encouraged to use OS X-supplied libraries and other 
components whenever possible rather than supplying and building separate 
versions of them as happens more often with MacPorts ports.  This is a 
major philosophical difference.  Back in the early days of OS X before 
Homebrew existed, this was less of an option, as fewer third-party 
libraries were shipped in OS X and/or they tended to be more 
out-of-date.  But even on the most recent OS X releases, there are still 
some libraries that do not get updated to current versions by Apple for 
various reasons: openssl and ncurses come to mind.  And, as Homebrew has 
matured and more recipes added, it has had to resort to building more 
and more stuff.  For instance, I believe it was the case that Homebrew 
originally relied on the Apple-supplied system Pythons but it now does 
provide its own Python recipe as MacPorts does.   Because MacPorts 
usually tries to provide a more up-to-date and reproducible environment 
by supplying more of the underlying libraries and other build 
components, that has sometimes led to some ports taking a long time to 
install because of all of their dependencies, in a few cases going as 
far to build a whole new gcc as a dependency.  There are usually good 
reasons for that: for instance, if the port requires gfortran support 
which is not included in the standard Apple compilers supplied with 
Xcode.  However, with many ports there are ways to limit the 
dependencies if you really don't need all of the features of a port.   
That's accomplished by looking at the port description and selecting a 
different set of port variants, one of the less well-documented and 
-understood features of MacPorts.  Also as more and more ports become 
available as pre-built binaries from the project this aspect of MacPorts 
should become more of a non-issue.   

> My macports are very clean and my /opt/local looks like a mini Linux file 
> system. Can I use a new path for HomeBrew and use them in conjunction (i.e. 
> is it relocatable)? What benefits would it give me over MacPorts?

I believe Homebrew by default installs its ports to /usr/local.  The 
MacPorts project specifically warns against having installed potential 
duplicates in /usr/local while installing MacPorts ports.  The reason is 
that they know from long and bitter experience (MacPorts has been around 
in one form or another for over 10 years and, btw, the project is 
supported in a number of ways by Apple) that, despite their best efforts 
to detect and patch the third-party configure scripts and Makefiles for 
all the ports they support, many of them have hardcoded references to 
/usr/local and can end up linking with unexpected versions of libraries 
that may be the wrong version or built with different architectures or 
OS X deployment targets.

If you are happy with MacPorts, I can think of no reason to migrate to 
Homebrew.  And, likewise, if you are happy with Homebrew, then by all 
means stick with it.   But it's not a good idea to mix them.  And the 
advantages of one over the other are not as one-sided as some people 
seem to think.

-- 
 Ned Deily,
 nad at acm.org



More information about the Baypiggies mailing list