mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
Homebrew ======== A simple package management system for OS X Leopard. Packages are brewed in individual, versioned kegs. For example: /usr/local/Cellar/wget/1.11.4/bin/wget /usr/local/Cellar/wget/1.11.4/share/man/man1/wget.1 … And symlinks are created to allow a normal POSIX tree: /usr/local/bin/wget -> /usr/local/Cellar/wget/1.11.4/bin/wget /usr/local/etc/wgetrc -> /usr/local/Cellar/wget/1.11.4/etc/wgetrc … This way the filesystem is the package database. Everything else is now easy. We are made of win. Max Howell <http://twitter.com/mxcl> Installation ============ Firstly, we build from source, so you need Xcode. http://developer.apple.com/technology/xcode.html Next, uninstall MacPorts and Fink (or just rename their root folders). Many build scripts blindly look in /opt/local etc. and end up linking to that stuff anyway! 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). I also recommend you make /usr/local user-writable. I wouldn't worry about it not being chroot. We don't install anything base enough for it to be a concern (unlike MacPorts or Fink). You can stick this directory in your home directory if you like. In that case a typical (POSIX) choice would be: /User/mxcl/.local If you don't install to /usr/local (but seriously it's great!) then you'll need to edit your ~/.profile file to add Homebrew's bin directory to the PATH. Usage ===== Install wget: brew install wget Update recipes list: cd /usr/local && git pull origin masterbrew Delete a package: 1. rm -rf /usr/local/Cellar/wget && brew prune 2. brew rm wget List all files in a package: 1. find /usr/local/Cellar/wget 2. brew list wget Search for a package to install: ls /usr/local/Library/Formula/*wget* Search for a package already installed: ls /usr/local/Cellar/*wget* List all packages available to install: ls /Brewery/Library/Formula Compute installed size of package: du -h /Brewery/Cellar/wget You get the idea. Maybe we should overload more of this stuff with the brew command, but frankly I feel that this way *you* will understand the capabilities of the system better. And you basically know everything that is going on. With apt, you type apt-get install wget. Now what is happening? With Homebrew you are running a ruby script. You know what is happening. You can easily and quickly read the source and modify it and then push the patch to github if anything you need is missing or something is not working. This is real open source. NOTE you have to install git before you can update the package list, but that's easy: brew install git Why Not MacPorts? ================= 1. MacPorts installs its own libz, its own openssl, etc. It's an autarky. This makes no sense to me. OS X comes with all that shit. 2. MacPorts support Tiger, and PPC. We don't, so things are better optimised. 3. cmake has like 100 dependencies in MacPorts, with Homebrew it has one Homebrew Will Never Build: ========================== 1. KDE, or GNOME, or anything that vast 2. Anything that should be distributed in a .app bundle 3. Anything that needs to install outside of the Homebrew tree 4. Stuff OS X already does, eg. rubygems (duplication sucks) I say never, but if you really want these things you can fork the tree and do it yourself. It's just my tree will never build those things. 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 How do I Notify Someone that a Package is out of Date? ====================================================== Chances are that if the package hasn't been updated for a few days, then the previous maintainer has vanished. You have to do it. Don't worry, unlike every other packaging system ever, it's easy with Homebrew: 1. Edit the relevant ruby file in /Brewery/Formula 2. Fork Homebrew on github (or git diff > patch) 3. Send mxcl a pull request Congratulations, you have contributed to an open source project! Contributing ============ New Formulae ------------ Relative to every other stupid packaging system ever, this is trivial. Just fork it at: http://github.com/mxcl/homebrew and create a new recipe. Then ask me to pull. Using git made all this so much easier. HomeBrew is not an Autarky so any dependencies outside of OS X that a package may require may be installed separately. We have functions to help with that. Code ---- Yes please! Fork and improve :) FAQ === Are you excessively interested in beer? --------------------------------------- Yes. Was Homebrew devised under the influence of alcohol? ----------------------------------------------------- Yes.
Languages
Ruby
91.8%
Shell
5.3%
Roff
2.1%
HTML
0.5%