April 26, 2009

Fink for Mac OS X package management

Filed under: Technical — Tags: , — James Bunton @ 11:34 am

Fink is a package management system for Mac OS X. If you’re new to Fink read on for a description of how it works.

The Fink project has two components. First, the port of Debian’s apt-get tools to Mac OS X combined with a binary package repository for the stable distribution.

Second, the ‘fink’ command line tool. It generates .deb packages from a source package description (located in /sw/fink/dists). Once generated you can move these packages between machines and install them with apt-get or dpkg as you would in Debian. This can save rebuilding from source.

Next the infamous stable vs unstable distributions. Unstable in Fink has the same meaning as it does with Debian. Don’t be too scared of using unstable. It won’t make your system crash. What it will do is have up to date packages (in most cases). It will get more frequent updates, meaning you’ll have more to recompile more often. Because of this, if you’re using the unstable distribution there tends not to be any prebuilt binaries so installation can take longer than in Debian. Also note these more recent packages may have had less testing, so sometimes they may not install.

One other thing you should know about is a neat package called ‘debfoster’. It’ll help you clean out unused packages and libraries. One of the consequences of Fink unstable building from source is that you often get lots of development packages installed that you don’t need anymore.

Just install debfoster and run it as root, then answer either y(es), n(o) or p(rune) to keep a package and its deps, not keep, or remove a package and all it’s deps. It’s quite clever. Give it a shot.

Finally, remember Fink is a volunteer project that you can contribute to. If you find a missing or out of date package, feel free to dig in to the .info file and update it. This is often as easy as just changing the version number. See the Fink website for a good packaging tutorial and reference.