Take the 2-minute tour ×
Ask Different is a question and answer site for power users of Apple hardware and software. It's 100% free, no registration required.

I always used MacPorts to install and maintain my GCC compilers (4.4, 4.5, 4.6, 4.7, ...) and gnuplot. Now I've heard about Fink and Homebrew. I think these two utilities are gaining ground in the Mac community, but I don't understand the difference between them.

What is the main difference between MacPorts, Fink, and Homebrew? Is there any difference in quality or performance?

share|improve this question
2  
There is also Rudix. –  lhf Sep 21 '12 at 11:20
    
Does this older question address your needs? –  bmike Apr 16 '13 at 19:50

4 Answers 4

up vote 25 down vote accepted

Fink has been around since at least 2001. Fink and MacPorts are package managers that want to be "orthogonal" to the system, that is, they install their own version of python, perl, libraries, compilers, etc. in own trees (/sw for Fink, /opt/local for MacPorts). The reason for this is that they have no control what Apple does with its software, and it occasionally broke things when Apple updated their own stuff.

From what I understand, Homebrew wants to be more "integrated" with the system, uses the libraries that Apple provides, and installs its stuff in /usr/local/bin and other standard folders. I guess that means that the software choice is more limited with Homebrew, I can't imagine that one could install KDE with it, but I've not tried that.

One point for Fink vs. MacPorts: a few years back, the Fink project provided binary packages; that is you could download and install the packages without compiling them yourself. Its package manager still has that ability, only there have been no binaries available for a long time. I do not know if that has changed in the meantime.

So in short: without the binary stuff, Fink and MacPorts are very similar. They should have more packages available than Homebrew, while Homebrew should take less disk space for the reasons I stated above. Concerning the quality: I've never installed Homebrew, and between Fink and MacPorts I usually prefer the one that I'm not currently using.

So if you are satisfied with MacPorts, just stay with it.

P.S. The reason I never tried Homebrew is that I use some precompiled packages. These usually also install themselves into /usr/local/bin and the like, which just cries for trouble.

share|improve this answer
    
I thought you must be wrong about KDE, but sure enough it's true. It once had packages for it, but apparently there's something about the way KDE is built that's incompatible with Homebrew's hierarchy. Hopefully that will be fixed some day. –  echristopherson Sep 21 '12 at 3:51
1  
@echristopherson So it had KDE once? A surprise for me. But KDE seems to be quite fragile, I once installed it with Fink, and at the next update, the whole installation got messed up; so you would expect that it is even more fragile with Homebrew. But if they get it right someday, I take back everything I said. –  Percival Ulysses Sep 21 '12 at 11:01
3  
Homebrew installing in /usr/local is the same reason I don't use it either. Sticking to traditional unix philosophy, only I should put stuff in /usr/local.. A package manager should manage some other prefix. –  Jason Oct 8 '12 at 22:45
    
Personally I use MacPorts, but last I checked (which as a while ago) Fink had a much larger collection of packages available. –  HairOfTheDog Oct 12 '12 at 20:54
1  
@Jason Is this also true for a single user machine? I just installed Homebrew, and just hope I won't regret it. I am not however very clear how apple handles root and users with admin privileges. I am the only user on my system. –  haziz Nov 11 '12 at 6:37

I'd say the main differences are:
Providence, outcome, and the method of distribution.

The most important detail will be for you to check if the system you choose contains package(s) for the software you want. Package counts are approximately: 19k Macports, 22k Fink, 3k Homebrew, 10k pkgsrc.

  • Macports, formerly Darwin ports seems to be a BSD style ports system like pkgsrc which gets source, patches it, builds it, and installs it. If it is very like pkgsrc it'll do this using shell scripts. It used to rely on the tools provided by Xcode, but that started causing problems, so now it can also bootstrap gcc. Additionally there's some binary packages out there, but you may not find the latest version for your system every time. It came from Darwin, the Apple open-sourced BSD based on the OS X kernel which ceased distribution. It installs packages to /opt/local which probably won't get touched by other installer packages or system upgrades.
  • Fink, re: finches being the subject of Charles Darwin's study, is a package system based on Debian Package Manager, that means it features use of dpkg and apt-get the main benefit being that that you can reliably find binary packages.. assuming you have an upstream package repository that contains binaries for your current OS version. It also came out of the Darwin user-base but probably more popular with those who came from Debian Linux [for mac, or PPC] looking for a little more stable hardware support... while it lasted. It installs packages into /sw for reasons of not overwriting or getting overwritten what other installers might install. Also something about compiler search paths and the default PATH containing /usr/local/bin already.
  • Homebrew is a kind of ports system in concept, but written in ruby. It doesn't come from a stand-alone OS world and was intended for Mac OS X users (the others are thoroughly used and tested by the same). As of mid-2014 it tries to build basically every package (they call them formula) though a few are available in binary form called bottles, and you can make a repository of bottles to share in your social group if you're inclined on semi-standardizing you and your friend's toolchains (ditto for other systems). On the plus side, it builds using as many of the libraries as you probably already have that came from Apple. I think you don't need Xcode for it to work in most cases, but it "supports and recommends" it. You can install each item in its own prefix, but the default is the relatively integrated /usr/local I think it was kickstarted and is more recent than the others. I've personally found I used this one most because I rarely need interdependent packages, and I'm unclear on how well mac homebrew supports it. Homebrew aims to force you to use more appropriate package managers for software that originates from a tightly coupled manager, like cpan, gems and the like.
  • pkgsrc would be available for Mac OS X, has binary packages, and comes from NetBSD which maintains it and in turn based it on FreeBSD's port system. NetBSD was so focused on portability across architectures that it was probably the best candidate port system to start supporting other platforms too, which it has. It's similar in my description to Macport, but I've not used it (except on NetBSD), and I think it installs into / but builds and maintains packages in /pkg. There's probably a lot of packages (like 12k) and some 20% may not build, or, the latest version of the source may not patch with the last maintained patch. That's why the binary packages are my preference with these kinds of systems.

I've also used perlbrew which is a kind of homebrew for perl, applications built in perl and some dependencies. It's mostly a good way to maintain multiple versions of perl, and it conveniently negates the need for other more general package systems (for its purpose). But of course that also has cpan and cpanminus.

You might find similar managers for your own mini-environment (like vundle for vim, or gem for ruby, npm for node.js, pypm or pip for python, go's built-in go install ... etc?)

share|improve this answer

Fink and MacPorts are direct competitors in that they install an orthogonal system. Fink lost considerable ground to MacPorts several years ago. I'm not completely sure why now, but MacPorts handed almost everything better.

We've less reason for an orthogonal installation now that Mac OS X has grown less crazy pants. Brew was created to integrates better with Mac OS X, and also because Rubyist rewrite everything.

MacPorts is a bit more complicated, but MacPorts almost always works. Brew is simpler but more likely to run into a brick wall.

Ask yourself these question :

  • How many Linux ecosystem tools do you use?
  • Do you need multiple versions?
  • Do you experiment with new tools much?

Any yes answers suggest you should choose MacPorts. Brew is less overhead if you install a only few well defined packages, but Brew won't handle complexities as well. Brew pollutes /usr/local which you might want for manual installations too. Actually, there are more detailed arguments for MacPorts but again they probably do not apply if you answered no.

Conversely, if you answered yes but your primary machine runs Linux, and your Mac is only a toy running minimal Linux software, then actually you might do better with Brew.

share|improve this answer

But as a side note, nothing Apple OS X related would install itself into /usr/local/bin. They use /usr/lib , /usr/bin behind the scenes and frameworks gets packaged up into /Library/Frameworks while stuff you install yourself via the regular Unix ./configure, make, make install will use /usr/local/bin etc, and utilities like MacPorts will use /opt/ and possibly package frameworks to your personal ~/Library/Frameworks/.

My recommendation is to stay with MacPorts if that's what you're used to. Basically the main difference is that MacPorts uses a system that closer resembles the true Unix/BSD ports tree implementation with ports from FreeBSD, while Fink uses applications ported from the Linux Debian archives, and uses the same package manager system as Linux Debian.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.