Some of you may already have heard of Homebrew. It bills itself as "the missing package manager for OS X" that "installs the stuff you need that Apple didn't." In other words, it enables you to install a lot of Linux tools that aren't otherwise available on OS X. Just like MacPorts, only supposedly simpler and with less headaches. The only glitch is Homebrew has been Intel-only.
This is where Tigerbrew comes in. It's a new fork that runs on PowerPC and Tiger & Leopard. Installation is easy (instructions on the homepage) and it requires Xcode. Now we're ready to put it through its paces.
First, though, let's go back to MacPorts. Initial installation is also easy enough. Just download the installer and run (Xcode required as well). Now in order to test these two package managers out, we need a package to install. The one I have in mind is
pianobar
. It's a very cool console app for Pandora Radio that I'm stoked to find. Pandora has an official desktop client, but it requires Adobe Air, so screw that. Here's what I get when I install pianobar with MacPorts:---> Computing dependencies for pianobar
---> Dependencies to be installed: faad2 autoconf m4 perl5 perl5.12 gdbm gettext expat libiconv gperf ncurses xz automake libtool gnutls gmp libtasn1 nettle pkgconfig texinfo json-c libao libgcrypt libgpg-error libmad
As you can see, 25 dependencies. After compiling all that and installing pianobar, it comes to a cool 385 MB of disk space used. Quite a lot.
Here are the dependencies when I install pianobar with Tigerbrew:
Powerbook:~ dan$ brew deps pianobar
faad2
gmp
gnutls
json-c
libao
libgcrypt
libgpg-error
libtasn1
mad
nettle
p11-kit
pkg-config
xz
That's 13 dependencies, and after all the compiling and installing it comes to about 50 MB used. This is where Tigerbrew reveals itself very different from MacPorts. Instead of installing all its own dependencies in /opt/local, independent of your system, Tigerbrew uses OS X's built-in tools, like Python, etc., whenever possible. It also installs everything to your /usr/local.
Does that mean Tigerbrew is superior? Not necessarily. Having a package manager utilize /usr/local has been met with some contention and many people feel MacPorts' way is ultimately better, but with this little demonstration I think we can say Tigerbrew is superior if you're just looking to install a random utility or console app and don't want the massive overhead of MacPorts. MacPorts, on the other hand, may be better if you want to install a ton of packages where the initial overhead would be minimized. There seems to be debate about these issues, though.
Can you use them both side-by-side? Yes, but only if you know what you're doing. You have to be aware of your $PATH and whether you have duplicate tools in /usr/local and /opt/local. Also, when compiling with Tigerbrew, it's probably smart to temporarily move /opt/local to your home folder so there are no conflicts.
A note on pianobar. You can set it to auto-login on startup by creating ~/.config/pianobar/config and adding:
user =
youremailpassword =
yourpasswordalong with any other options you want. And there's
shell.fm
for a console Last.fm client.pianobar screenshot:
Nice post! I had pianobar installed and working, but reinstalled the OS for irrelevant reasons. When I got Tigerbrew reinstalled, I was unable to install Pianobar again, I got this error, among others:
ReplyDeletecc1: error: unrecognized command line option "-Wno-error=deprecated-declarations"
I am wondering if this has happened to you before, because homebrew is still largely unknown to me
I've never seen that error before, but you can open a bug report on Tigerbrew's git page:
Deletehttps://github.com/mistydemeo/tigerbrew/issues
You can also try pianobar with Macports, but it has ffmpeg as a dependency now (it didn't before), which brings in a lot of its own dependencies, so it'll take forever to compile.
Maybe I'll make a project of compiling pianobar myself.
ffmpeg on Tigerbrew did con compile -- like mplayer. And I am not shure whether I should bother people with it (G3 400 Mhz PPC)
ReplyDelete