
I’m a kid in a chocolate shop! Look at all this stuff!
While there is an abundance of above average quality applications for Mac OS X, many tend to be more expensive and less feature complete than similar free and open source applications available on Linux, FreeBSD and the like. On Mac OS X we have the fantastic and easy to use MacPorts and Fink package managers, but if you’re really serious about running said software you can’t beat pkgsrc.
The pkgsrc system is the mature, elegant, sophisticated (can you tell I like it yet?) and cross platform package manager developed and used by the folks over at the NetBSD project. It’s also used as the default package manager on DragonFly BSD and Draco GNU/Linux amongst others. I use it on my Macs, my Slackware Linux machine and even on a FreeBSD box, and I love it.
In this post I’ll be describing what I’ve found to be the quickest and simplest way to get it up and running on Mac OS X. There are hundreds of other ways, but I’ve never gone wrong with this.
Case sensitivity!
The only caveat with pkgsrc is that you really need to run it on a case sensitive file system which OS X does not use by default. If reformatting isn’t an option, might I suggest using Leopard’s new Disk Utility to shrink your current boot volume and creating a separate, case sensitive HFS+ volume.
ASIDE: Some of the NetBSD documentation describes creating virtual disk images and running pkgsrc from them if case sensitivity is an issue. While it is technically possible, I wouldn’t recommend it; from experience I’ve found them to be more trouble than they’re worth. If you’d like to give it a go though, the Darwin platform notes on the pkgsrc user guide details the procedure.
Installing pkgsrc
Firstly, open your Terminal, navigate to /usr/ (or your new case sensitive volume you created earlier) and download a pkgsrc snapshot. This may take a while.
% cd /usr/
% sudo env CVS_RSH=ssh cvs -d \
anoncvs@anoncvs.NetBSD.org:/cvsroot checkout pkgsrc
Next, launch the bootstrap procedure which will create the required directories and install the utilities to build the packages:
% cd pkgsrc/bootstrap && sudo ./bootstrap
Congratulations, you now have pkgsrc installed on your Mac! The next step is to modify your shell’s $PATH variable to point to the new binary directories, by default pkgsrc installs software in /usr/pkg. If you use the Tiger and Leopard default bash shell, your PATH line in your .profile should something like this:
export PATH=/usr/pkg/bin:/usr/pkg/sbin:$PATH
You’ll also want to add these lines to make it easier to update your pkgsrc tree:
export CVS_RSH=ssh
export CVSROOT=anoncvs@anoncvs.netbsd.org:/cvsroot
![]()
Very quick background I created for a fellow MBP user who started with pkgsrc on their Mac and since moved over entirely to NetBSD, will be the subject of a future post. Mai Tokiha was the only character we could really find who wears lots of orange :).
Using pkgsrc
From this point forward, using pkgsrc is basically the same as using it on any other platform, the only difference is you use the bmake tool instead of make to build packages. If you haven’t used pkgsrc before, below is a very quick crash course using Alpine as an example.
- Browsing available packages
- You can browse the
/usr/pkgsrc/directory, but the easiest way is to go to http://pkgsrc.se and either search for a specific piece of software, or browse the categories. - Building and installing a package
-
% cd /usr/pkgsrc/mail/alpine
% sudo bmake install clean clean-depends - Updating your pkgsrc tree
-
% cd /usr/pkgsrc
% sudo cvs update -dP
That’s enough to get your started; once you’ve got the hang of it dive into the comprehensive and easy to follow pkgsrc guide by Alistair Crooks, Hubert Feyrer and the pkgsrc developers to learn all the cool things you can do with this package manager. I need a Rubenerd Seal of Approval or something :-)

Thanks for this! Someone told me I should be using pkgsrc, but found very little by way of users on OS X and using pkgsrc.
On the case sensitivity issue, have you thought of using “–ignore-case-check” when you bootstrap? I got the idea from here:
http://wiki.netbsd.se/How_to_use_pkgsrc_on_Mac_OS_X
Also, I’m trying to find out how to get various daemons to autolaunch at system start, but am confusing myself and wonder if you have had any success or pointers.
Again, great article!! Thanks!!!!!
Glad to see another OS X user on pkgsrc! It’s mostly good on OS X, but I run into the occasional quirk. I document it at http://s7labs.tumblr.com when I can. I would love to see it replace MacPorts and Fink — there’s so much needlessly duplicated effort. Seems like NIH from my seat over here.
@Ernie: I use –ignore-case-check and haven’t run into any real problems as of yet. Most of my pkgsrc builds are missing command line utilities and Python modules, however, most of which tends to be written in a portable way. Ie, they don’t make assumptions about case anyway.
Another pkgsrc on Mac user. Works very nicely and definitely beats the hell out of MacPorts and Fink. Just need some kind of easy to use GUI for average/normal ppl if its going to ever compete with other “ports” managers with Mac.