20 Jul 2011

Terminal Heaven Part 1: Homebrew

Posted on July 20, 2011

Despite the fact that Mac OS X has a fantastic and beautiful GUI, as a software developer I have to use the shell all the time. When I started on the Mac I was using the de facto standard setup which includes Terminal.app, Bash and MacPorts. This setup lasted for nearly 3 years but got now replaced for a much better one:

Lets start the first part of this mini series with the reasons for my move to MacPorts.

One of the biggest system changes I have done this year was moving from MacPorts to Homebrew. I was using MacPorts from the beginning of my Mac life to manage the installation of all those cool and useful unix programs I need for my daily work. But there was one thing which really bothered me. Every time you were doing a package update there were so many updates available that it always took ages to compile on my machine. And for most of the packages I really had no clue what they were doing. Most of them just seemed to be dependencies from packages I had installed.

After reading a lot about Homebrew on the net I decided to give it a try. The main advantage of Homebrew is that it only installs packages which are not already present in the Mac OS X system. So you don’t get any duplicates of libraries and programs on your system unless it is really necessary.

I also like the fact that a simple:

> brew update && brew outdated

updates the local git repository and then gives me a list of all outdated packages where I can handpick the ones I want to update. As all programs and libraries are compiled against your existing system libraries this speeds up the update process enormously.

There is one thing about Homebrew which I really don’t like that much. The developers of Homebrew favor not to use the sudo command for all homebrew operations. As convenient that is for installing and updating packages, lowering the security on /usr/local makes me feel uncomfortable. I know that for installing and updating packages it’s much more secure to not use sudo because giving an unknown script root access is always unsafe. What I don’t like is that every program I run as a normal user can change the content of /usr/local without me even noticing it.

After using Homebrew for a couple of months now I can say I’m really happy with it. The package list is constantly growing and the community is very good.

Stay tuned for the next parts of this series!