What is 0 Homebrew?
"Homebrew installs the stuff you need that Apple did't. - Homebrew makes OS X more complete."
Homebrew's official website [1] (Multilingual Version) Briefly describes how to install and use the tool, and provides its own Wiki.
1 Install Homebrew
The installation of brew is simple, using a ruby command, and ruby is installed by default on the Mac system.
gerryyang@mba:bin$ruby
--version
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]
Detailed instructions for installing brew can be found in the wiki instructions on its github [2]:
"
Installation
The suggested and easiest way to install Homebrew is on the homepage. We don't duplicate it here because it is asecurity risk to list it on a user-editable wiki.
The standard script installs Homebrew to /usr/local so that you don't need sudo when youbrew
install. It is acareful script, it can be run even if you have stuff installed to/usr/local already. It tells you exactly what it will do before it does it too. And you have to confirm everything it will do before it starts.
There are other ways to install Homebrew which provide you with more flexibility. They are listed below the requirements.
"
-
gerryyang@mba:~$ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
-
It appears Homebrew is already installed. If your intent is to reinstall you
-
should do the following before running this installer again:
-
-
rm -rf /usr/local/Cellar /usr/local/.git && brew cleanup
Since brew has been installed on my system, executing the installation command again will prompt me that brew already exists.
2. Use of Homebrew
Look at brew's specific usage:
-
gerryyang@mba:~$brew
-
Example usage:
-
brew [info | home | options ] [FORMULA...]
-
brew install FORMULA...
-
brew uninstall FORMULA...
-
brew search [foo]
-
brew list [FORMULA...]
-
brew update
-
brew upgrade [FORMULA...]
-
brew pin/unpin [FORMULA...]
-
-
Troubleshooting:
-
brew doctor
-
brew install -vd FORMULA
-
brew [--env | --config]
-
-
Brewing:
-
brew create [URL [--no-fetch]]
-
brew edit [FORMULA...]
-
open https://github.com/Homebrew/homebrew/wiki/Formula-Cookbook
-
-
Further help:
-
man brew
-
brew home
-
-
gerryyang@mba:~$
3 Homebrew's Interesting Questions
Here are some common questions about Homebrew [3]:
(1) The software you want can not be found in OS X, so you can use brew to install it.
-
gerryyang@mba:~$brew install wget
-
==> Downloading http://ftpmirror.gnu.org/wget/wget-1.14.tar.gz
-
######################################################################## 100.0%
-
==> ./configure --prefix=/usr/local/Cellar/wget/1.14 --sysconfdir=/usr/local/etc
-
==> make install
-
Warning: Could not link wget. Unlinking...
-
Error: The `brew link` step did not complete successfully
-
The formula built, but is not symlinked into /usr/local
-
You can try again using `brew link wget'
-
-
Possible conflicting files are:
-
/usr/local/bin/wget
-
/usr/local/share/man/man1/wget.1
-
==> Summary
-
<span style="font: 13.0px Monaco">/usr/local/Cellar/wget/1.14: 8 files, 688K, built in 2.3 minutes</span>
Since wget was previously installed in source mode, the brew installation will prompt conflicting errors because / usr/locat/bin/wget already exists. In fact, Homebrew subpacks the package into a separate directory (/ usr/local/Cellar), and then
symlink to / usr/local.
(2) How to update the locally installed package?
Step 1: Update brew:
brew update
-
gerryyang@mba:bin$brew update
-
Already up-to-date.
Step 2: Update all package s:
brew upgarde
-
gerryyang@mba:bin$brew upgrade
-
==> Upgrading 1 outdated package, with result:
-
wget 1.15
-
==> Upgrading wget
-
==> Installing wget dependency: openssl
-
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/openssl-1.0
-
######################################################################## 100.0%
-
==> Pouring openssl-1.0.1f.mavericks.bottle.tar.gz
-
==> Caveats
-
This formula is keg-only, so it was not symlinked into /usr/local.
-
-
Mac OS X already provides this software and installing another version in
-
parallel can cause all kinds of trouble.
-
-
The OpenSSL provided by OS X is too old for some software.
-
-
Generally there are no consequences of this for you. If you build your
-
own software and it requires this formula, you'll need to add to your
-
build variables:
-
-
LDFLAGS: -L/usr/local/opt/openssl/lib
-
CPPFLAGS: -I/usr/local/opt/openssl/include
-
-
==> security find-certificate -a -p /Library/Keychains/System.keychain > '/usr/l
-
==> security find-certificate -a -p /System/Library/Keychains/SystemRootCertific
-
==> mv -f /usr/local/etc/openssl/osx_cert.pem.tmp /usr/local/etc/openssl/osx_cer
-
==> Summary
-
/usr/local/Cellar/openssl/1.0.1f: 429 files, 15M
-
==> Installing wget
-
==> Downloading http://ftpmirror.gnu.org/wget/wget-1.15.tar.gz
-
######################################################################## 100.0%
-
==> ./configure --prefix=/usr/local/Cellar/wget/1.15 --sysconfdir=/usr/local/etc --with-ssl=openssl --with-libssl-prefix=/usr/local/opt/openssl --disable-iri
-
==> make install
-
Warning: Could not link wget. Unlinking...
-
Error: The `brew link` step did not complete successfully
-
The formula built, but is not symlinked into /usr/local
-
You can try again using `brew link wget'
-
-
Possible conflicting files are:
-
/usr/local/bin/wget
-
/usr/local/share/man/man1/wget.1
-
==> Summary
-
/usr/local/Cellar/wget/1.15: 8 files, 700K, built in 73 seconds
-
gerryyang@mba:bin$
(3) How to delete Homebrew?
If you installed to /usr/local then you can use the script in this gist to uninstall — it will only remove Homebrew and the stuff Homebrew
installed leaving anything else in /usr/local alone.
Provided you haven't put anything else in Homebrew's prefix(brew --prefix), you can generally just rm -rf that directory. Thisis because Homebrew won't touch files outside its prefix.
(4) Where is the storage path of the package downloaded by Homebrew?
-
gerryyang@mba:bin$brew --cache
-
/Library/Caches/Homebrew
-
gerryyang@mba:bin$ls /Library/Caches/Homebrew/
-
Formula/ wget-1.14.tar.gz
-
coreutils-8.22.tar.xz wget-1.15.tar.gz
-
openssl-1.0.1f.mavericks.bottle.tar.gz xz-5.0.5.mavericks.bottle.2.tar.gz
-
gerryyang@mba:bin$ls /Library/Caches/Homebrew/Formula/
-
coreutils.brewing openssl.brewing wget.brewing xz.brewing
-
-
gerryyang@mba:bin$
(5) Can I install my stuff in / usr/local?
Yes, brew is designed to not get in your way so you can use it how youlike.
Install your own stuff, but be aware that if you install common libraries, like libexpat yourself, it may cause trouble when trying to build certain Homebrew formula. As a result brew doctor will warn you about this.
Thus it's probably better to install your own stuff to the Cellar and then brew link it. Like so:
$ cd foo-0.1
$ brew diy
./configure —prefix=/usr/local/Cellar/foo/0.1
$ ./configure —prefix=/usr/local/Cellar/foo/0.1
[snip]
$ make && make install
$ brew link foo
Linking /usr/local/Cellar/foo/0.1… 17 symlinks created
In my environment, the test is as follows:
-
gerryyang@mba:bin$brew doctor
-
Warning: Unbrewed dylibs were found in /usr/local/lib.
-
If you didn't put them there on purpose they could cause problems when
-
building Homebrew formulae, and may need to be deleted.
-
-
Unexpected dylibs:
-
/usr/local/lib/libboost_atomic.dylib
-
/usr/local/lib/libboost_chrono.dylib
-
/usr/local/lib/libboost_context.dylib
-
/usr/local/lib/libboost_date_time.dylib
-
/usr/local/lib/libboost_filesystem.dylib
-
/usr/local/lib/libboost_graph.dylib
-
/usr/local/lib/libboost_iostreams.dylib
-
/usr/local/lib/libboost_locale.dylib
-
/usr/local/lib/libboost_log.dylib
-
/usr/local/lib/libboost_math_c99.dylib
-
/usr/local/lib/libboost_math_c99f.dylib
-
/usr/local/lib/libboost_math_c99l.dylib
-
/usr/local/lib/libboost_math_tr1.dylib
-
/usr/local/lib/libboost_math_tr1f.dylib
-
/usr/local/lib/libboost_math_tr1l.dylib
-
/usr/local/lib/libboost_prg_exec_monitor.dylib
-
/usr/local/lib/libboost_program_options.dylib
-
/usr/local/lib/libboost_python.dylib
-
/usr/local/lib/libboost_random.dylib
-
/usr/local/lib/libboost_regex.dylib
-
/usr/local/lib/libboost_serialization.dylib
-
/usr/local/lib/libboost_signals.dylib
-
/usr/local/lib/libboost_system.dylib
-
/usr/local/lib/libboost_thread.dylib
-
/usr/local/lib/libboost_timer.dylib
-
/usr/local/lib/libboost_unit_test_framework.dylib
-
/usr/local/lib/libboost_wave.dylib
-
/usr/local/lib/libboost_wserialization.dylib
-
-
Warning: Unbrewed static libraries were found in /usr/local/lib.
-
If you didn't put them there on purpose they could cause problems when
-
building Homebrew formulae, and may need to be deleted.
-
-
Unexpected static libraries:
-
/usr/local/lib/libboost_atomic.a
-
/usr/local/lib/libboost_chrono.a
-
/usr/local/lib/libboost_context.a
-
/usr/local/lib/libboost_coroutine.a
-
/usr/local/lib/libboost_date_time.a
-
/usr/local/lib/libboost_exception.a
-
/usr/local/lib/libboost_filesystem.a
-
/usr/local/lib/libboost_graph.a
-
/usr/local/lib/libboost_iostreams.a
-
/usr/local/lib/libboost_locale.a
-
/usr/local/lib/libboost_log.a
-
/usr/local/lib/libboost_math_c99.a
-
/usr/local/lib/libboost_math_c99f.a
-
/usr/local/lib/libboost_math_c99l.a
-
/usr/local/lib/libboost_math_tr1.a
-
/usr/local/lib/libboost_math_tr1f.a
-
/usr/local/lib/libboost_math_tr1l.a
-
/usr/local/lib/libboost_prg_exec_monitor.a
-
/usr/local/lib/libboost_program_options.a
-
/usr/local/lib/libboost_python.a
-
/usr/local/lib/libboost_random.a
-
/usr/local/lib/libboost_regex.a
-
/usr/local/lib/libboost_serialization.a
-
/usr/local/lib/libboost_signals.a
-
/usr/local/lib/libboost_system.a
-
/usr/local/lib/libboost_test_exec_monitor.a
-
/usr/local/lib/libboost_thread.a
-
/usr/local/lib/libboost_timer.a
-
/usr/local/lib/libboost_unit_test_framework.a
-
/usr/local/lib/libboost_wave.a
-
/usr/local/lib/libboost_wserialization.a
-
-
Warning: You have unlinked kegs in your Cellar
-
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
-
those kegs to fail to run properly once built. Run `brew link` on these:
-
-
wget
-
gerryyang@mba:bin$
(6) Why did you choose the name Homebrew?
mxcl was too concerned with the beer theme and didn't consider that the project may actually prove popular. By the time he realized it was too late. However, today, the first google hit for
"homebrew" is not beer related ;-)
It seems that the author is an alcoholic!
(7) For more QA, refer to Homebrew's Wiki [4]
(8) Recommendations for some common installations
-
gerryyang@mba:bin$brew list
-
coreutils openssl wget xz
Introduction to Coreutils
The GNU Core Utilities are the basic file, shell and text manipulation utilities of the GNU operating system.
These are the core utilities which are expected to exist on every operating system.
http://www.gnu.org/software/coreutils/
4 reference
[1] http://brew.sh/index_zh-cn.html
[2] https://github.com/Homebrew/homebrew/wiki/Installation
[3] https://github.com/Homebrew/homebrew/wiki/FAQ
[4] https://github.com/Homebrew/homebrew/wiki