forked from Homebrew/legacy-homebrew
-
Notifications
You must be signed in to change notification settings - Fork 1
Packaging system for Mac OS X 10.5 and above; heavy optimisations, no redundant packages and a bonus beer theme
isaac/homebrew
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Homebrew ======== Homebrew's purpose is basically the same as MacPorts or Fink, ie. to let you easily install other open source software on your Mac. Here's why you may prefer Homebrew to the alternatives: 1. Zeroconf installation Copy the contents of this directory to /usr/local. Homebrew is now ready for use. 2. Or… install anywhere! You can actually stick this directory anywhere. Like ~/.local or /opt or /lol if you like. You can even move this directory somewhere else later. 3. The GoboLinux approach Packages are installed to their own prefix (eg. /usr/local/Cellar/wget) and then symlinked into the Homebrew prefix (eg. /usr/local). This way the filesystem is the package database. As is often the case with the simplest possible solution, it makes everything else easier and better. Eg. You can, if you like, rm -rf to uninstall a package. Or use find to list the package contents. Or du to see its size. 4. You don't have to sudo It's up to you. We recommend not--see the relevant later section. 5. Easy package creation Packages are just Ruby scripts. Generate a template with: brew mk http://foo.com/tarball-0.8.9.tgz Homebrew will automatically open it for you to tweak with TextMate or $EDITOR. It is also trivially easy to modify and customise existing formulae. 6. DIY package installation MacPorts doesn't support the beta version? Need an older version? Need custom compile flags? The Homebrew toolchain is carefully segregated so you can build stuff by hand but still end up with package management. Just install to the Cellar and then call brew ln to symlink that installation into /usr/local, eg. ./configure --prefix=/usr/local/Cellar/wget/1.10 make install brew ln wget Or Homebrew can figure out the prefix: ./configure `brew diy` cmake . `brew diy` This means you can also install multiple versions of the same package and switch on demand. 7. Optimisation We optimise for Leopard Intel, binaries are stripped, compile flags tweaked. Nobody wants crappy, slow software. Apart from MacPorts and Fink. 8. Making the most of OS X Homebrew knows how many cores you have thanks to RubyCocoa, so it makes sure when it builds it uses all of them, (unless you don't want it to of course). Homebrew integrates with Ruby gems, CPAN and Python disttools. These tools exist already and do the job great. We don't reinvent the wheel, we just improve it by making these tools install with more management options. 9. Complimenting what OS X already has Macports is an autarky. You get a duplicate copy of libz, OpenSSL, Python etc. They do this to support OS X Tiger, etc. more easily. We don't support Tiger, we duplicate nothing. Homebrew compliments OS X, it doesn't seek to operate independently of it. A. Fork with Git The package descriptions are all on git, so just fork to add new packages, or add extra remotes to get packages from more exotic maintainers. B. Homebrew has a beer theme Beer goggles will help you to evangelise Homebrew more effectively. C. Homebrew helps get you chicks There's no conclusive scientific evidence as yet, but I firmly believe it's just a matter of time and statistics. I know I've made it sound so awesome you can hardly wait to rip MacPorts out and embrace the fresh hoppy taste of Homebrew, but I should point out that it is really new and still under heavy development. Thanks! Max Howell <http://twitter.com/mxcl> Installation ============ Homebrew is zeroconf, but almost everything it installs is built from source; so you need Xcode: http://developer.apple.com/technology/xcode.html Also, a lot of build scripts assume MacPorts or Fink on OS X. Which isn't a problem until you uninstall them and stuff you built with Homebrew breaks and you email me with a bug report. So uninstall them (or rename their root folders if you don't want to burn bridges). http://trac.macports.org/wiki/FAQ#HowdoIremoveoruninstallMacPorts http://www.finkproject.org/faq/usage-fink.php#removing Homebrew uses Ruby and some other stuff that is already installed on Leopard. It is self-contained and ready to go. Just copy this directory somewhere. Things work really well if you put it in /usr/local (especially if you are a developer). ISSUE: Currently in order to update you need to clone the git repository. And I'm not exactly sure what the best fix for that is yet. If you install to /usr/local don't sudo --------------------------------------- Well clearly you can sudo if you like. Homebrew is all about you doing it your way. But the Homebrew recommendation is: don't sudo! On OS X, this requires your user to be in the admin group, but it doesn't require sudo: $ cpan -i MP3::Info OS X is designed to minimise sudo use, you only need it for real root level stuff. On OS X you know your /System and /usr are as clean and pure as the day you bought your Mac because you didn't sudo. You can sleep better at night. If you are already the kind of guy who installed TextMate by dragging and dropping it to /Applications, then you won't mind if libflac and pngcrush are installed under your user privileges too. Lets face it; Homebrew is not installing anything system-critical. Apple already did that. Let this be the last sudo you do for quite some time: $ sudo chown -R `whoami`:staff /usr/local I already have a bunch of junk in /usr/local -------------------------------------------- Yeah that's typical. See what you've got, mv the local folder somewhere else, mv Homebrew there and then just reinstall that stuff using Homebrew. How about mate and gitx and that? --------------------------------- They can easily coexist with Homebrew, that's the beauty of the homebrew-way. Usage ===== Install wget: brew install wget Update package list: cd /usr/local && git pull origin masterbrew [1] Delete a package: brew rm wget OR rm -rf /usr/local/Cellar/wget && brew prune List all files in a package: brew list wget OR find /usr/local/Cellar/wget Search for a package to install: ls /usr/local/Library/Formula/ Search for a package already installed: ls /usr/local/Cellar/ Compute installed size of package: brew info wget OR du /usr/local/Cellar/wget Show expensive packages: du -md1 /usr/local/Cellar View the packages brew has downloaded and cached: ls `brew --cache` OR ls ~/Library/Caches/Homebrew With Homebrew this is all Ruby. If you want to improve the package installation, amend the Ruby script. If you want to improve the brew command amend the Ruby script. If you want to know exactly what is going on, read the Ruby script. [1] You have to install git before you can update the package list, but that's easy: brew install git Why Compile From Source? ======================== Since we only target Intel Leopard boxes, why not just distribute binaries? Well, I can't afford to :P And compiling from source gives more flexibility. If you want to adapt the system and make it work with binaries; fork away. The bandwidth is on you though :P CPAN, EasyInstall, RubyGems =========================== Homebrew doesn't reinvent the wheel. These tools are already designed to make it easy to install Perl, Python and Ruby tools and libraries. So we insist that you use them. However we don't think you should have to sudo, or install to /usr, so we suggest you adapt the tools to install into Homebrew's prefix: http://github.com/mxcl/homebrew/wiki Contributing New Formulae ========================= Homebrew can generate the formula with most stuff pre-done: brew mk http://foo.org/foobar-1.2.1.tar.bz2 You now have /usr/local/Library/Formula/foobar.rb. This may already work. But maybe there are some juicy configure options? brew install foobar --help Now you know foobar's configure options. brew install foobar --interactive This opens an interactive bash shell at the extracted tarball. You can now install to the recommended prefix or just read the README and type `exit'. Try to install it: brew install foobar Fork http://github.com/mxcl/homebrew and ask mxcl to pull. Useful commands when contributing --------------------------------- brew edit # opens Textmate with all of Homebrew as a project brew edit foobar # opens that formula for editing in Textmate brew install foobar --debug # if the build fails, you can fix it brew [something] --verbose # you get a proper Ruby backtrace brew install foobar --interactive # opens a new shell at the extract tarball TODO ==== 1. Upgrades, yeah still need this 2. Install multiple versions of tools, which is very useful for eg. Qt 3. Formula revisions, to allow upgrades irrespective of the underlying package Licensing ========= Homebrew is mostly BSD licensed although some parts are public domain. Individual formulae are licensed according to their authors wishes. FAQ === Are you excessively interested in beer? --------------------------------------- Yes. Was Homebrew devised under the influence of alcohol? ----------------------------------------------------- Yes.
About
Packaging system for Mac OS X 10.5 and above; heavy optimisations, no redundant packages and a bonus beer theme
Resources
Stars
Watchers
Forks
Packages 0
No packages published