Mac上Homebrew的使用 (Homebrew 使 OS X 更完整)

Stella981
• 阅读 865

0 Homebrew是啥?


“Homebrew installs the stuff you need that Apple didn’t.——Homebrew 使 OS X 更完整”。

Homebrew的官网[1](多语言版本)简单明了地介绍了如何安装和使用这个工具,并提供了自己的Wiki。

1 安装Homebrew


brew的安装很简单,使用一条ruby命令即可,Mac系统上已经默认安装了ruby。

gerryyang@mba :bin$ruby --version
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]

关于安装brew的详细说明可以参考其github上的wiki说明[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/localso 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/localalready. It tells you exactly what it will do before itdoes it too. And you have to confirm everything it will do before itstarts.

There are other ways to install Homebrew which provide you with moreflexibility. They are listed below the requirements.

"

  1. gerryyang@mba :~$ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

  2. It appears Homebrew is already installed. If your intent is to reinstall you

  3. should do the following before running this installer again:

  4. rm -rf /usr/local/Cellar /usr/local/.git && brew cleanup

由于我的系统上已经安装过brew,因此再次执行安装命令会提示我brew已经存在。

2 Homebrew的用法


查看brew的具体用法:

  1. gerryyang@mba :~$brew

  2. Example usage:

  3. brew [info | home | options ] [FORMULA...]

  4. brew install FORMULA...

  5. brew uninstall FORMULA...

  6. brew search [foo]

  7. brew list [FORMULA...]

  8. brew update

  9. brew upgrade [FORMULA...]

  10. brew pin/unpin [FORMULA...]

  11. Troubleshooting:

  12. brew doctor

  13. brew install -vd FORMULA

  14. brew [--env | --config]

  15. Brewing:

  16. brew create [URL [--no-fetch]]

  17. brew edit [FORMULA...]

  18. open https://github.com/Homebrew/homebrew/wiki/Formula-Cookbook

  19. Further help:

  20. man brew

  21. brew home

  22. gerryyang@mba :~$

3 Homebrew的有趣问题


下面关于Homebrew的一些常见问题[3]

(1) 在OS X中找不到想要的软件,可以使用brew安装;

  1. gerryyang@mba :~$brew install wget

  2. ==> Downloading http://ftpmirror.gnu.org/wget/wget-1.14.tar.gz

  3. ######################################################################## 100.0%

  4. ==> ./configure --prefix=/usr/local/Cellar/wget/1.14 --sysconfdir=/usr/local/etc

  5. ==> make install

  6. Warning: Could not link wget. Unlinking...

  7. Error: The `brew link` step did not complete successfully

  8. The formula built, but is not symlinked into /usr/local

  9. You can try again using `brew link wget'

  10. Possible conflicting files are:

  11. /usr/local/bin/wget

  12. /usr/local/share/man/man1/wget.1

  13. ==> Summary

  14. /usr/local/Cellar/wget/1.14: 8 files, 688K, built in 2.3 minutes

由于之前使用源码方式安装过wget,因此再用brew安装时会提示冲突的错误,因为/usr/locat/bin/wget已经存在。实际上,Homebrew 将软件包分装到单独的目录(/usr/local/Cellar),然后 symlink 到 /usr/local 中。

(2) 如何更新本地已安装的package呢?

第一步:先更新brew:

brew update

  1. gerryyang@mba:bin$brew update
  2. Already up-to-date.

第二步:更新所有package:
brew upgarde

  1. gerryyang@mba:bin$brew upgrade

  2. ==> Upgrading 1 outdated package, with result:

  3. wget 1.15

  4. ==> Upgrading wget

  5. ==> Installing wget dependency: openssl

  6. ==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/openssl-1.0

  7. ######################################################################## 100.0%

  8. ==> Pouring openssl-1.0.1f.mavericks.bottle.tar.gz

  9. ==> Caveats

  10. This formula is keg-only, so it was not symlinked into /usr/local.

  11. Mac OS X already provides this software and installing another version in

  12. parallel can cause all kinds of trouble.

  13. The OpenSSL provided by OS X is too old for some software.

  14. Generally there are no consequences of this for you. If you build your

  15. own software and it requires this formula, you'll need to add to your

  16. build variables:

  17. LDFLAGS:  -L/usr/local/opt/openssl/lib

  18. CPPFLAGS: -I/usr/local/opt/openssl/include

  19. ==> security find-certificate -a -p /Library/Keychains/System.keychain > '/usr/l

  20. ==> security find-certificate -a -p /System/Library/Keychains/SystemRootCertific

  21. ==> mv -f /usr/local/etc/openssl/osx_cert.pem.tmp /usr/local/etc/openssl/osx_cer

  22. ==> Summary

  23. /usr/local/Cellar/openssl/1.0.1f: 429 files, 15M

  24. ==> Installing wget

  25. ==> Downloading http://ftpmirror.gnu.org/wget/wget-1.15.tar.gz

  26. ######################################################################## 100.0%

  27. ==> ./configure --prefix=/usr/local/Cellar/wget/1.15 --sysconfdir=/usr/local/etc --with-ssl=openssl --with-libssl-prefix=/usr/local/opt/openssl --disable-iri

  28. ==> make install

  29. Warning: Could not link wget. Unlinking...

  30. Error: The `brew link` step did not complete successfully

  31. The formula built, but is not symlinked into /usr/local

  32. You can try again using `brew link wget'

  33. Possible conflicting files are:

  34. /usr/local/bin/wget

  35. /usr/local/share/man/man1/wget.1

  36. ==> Summary

  37. /usr/local/Cellar/wget/1.15: 8 files, 700K, built in 73 seconds

  38. gerryyang@mba:bin$

(3) 如何删除Homebrew?

If you installed to/usr/localthen you can use the script in thisgist to uninstall — it will onlyremove Homebrew and the stuff Homebrew installed leaving anything elsein/usr/localalone.

Provided you haven’t put anything else in Homebrew’s prefix(brew --prefix), you can generally justrm -rfthat directory. Thisis because Homebrew won’t touch files outside its prefix.

(4) Homebrew下载的package存放的路径在哪里?

  1. gerryyang@mba:bin$brew --cache

  2. /Library/Caches/Homebrew

  3. gerryyang@mba:bin$ls /Library/Caches/Homebrew/

  4. Formula/                                wget-1.14.tar.gz

  5. coreutils-8.22.tar.xz                  wget-1.15.tar.gz

  6. openssl-1.0.1f.mavericks.bottle.tar.gz  xz-5.0.5.mavericks.bottle.2.tar.gz

  7. gerryyang@mba:bin$ls /Library/Caches/Homebrew/Formula/

  8. coreutils.brewing  openssl.brewing  wget.brewing  xz.brewing

  9. gerryyang@mba:bin$

(5) 我可以安装自己的stuff在/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 commonlibraries, like libexpat yourself, it may cause trouble when trying tobuild certain Homebrew formula. As a resultbrew doctorwill warn youabout this.

Thus it’s probably better to install your own stuff to the Cellar andthenbrew linkit. 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

在我的环境上检测是这样的:

  1. gerryyang@mba:bin$brew doctor

  2. Warning: Unbrewed dylibs were found in /usr/local/lib.

  3. If you didn't put them there on purpose they could cause problems when

  4. building Homebrew formulae, and may need to be deleted.

  5. Unexpected dylibs:

  6. /usr/local/lib/libboost_atomic.dylib

  7. /usr/local/lib/libboost_chrono.dylib

  8. /usr/local/lib/libboost_context.dylib

  9. /usr/local/lib/libboost_date_time.dylib

  10. /usr/local/lib/libboost_filesystem.dylib

  11. /usr/local/lib/libboost_graph.dylib

  12. /usr/local/lib/libboost_iostreams.dylib

  13. /usr/local/lib/libboost_locale.dylib

  14. /usr/local/lib/libboost_log.dylib

  15. /usr/local/lib/libboost_math_c99.dylib

  16. /usr/local/lib/libboost_math_c99f.dylib

  17. /usr/local/lib/libboost_math_c99l.dylib

  18. /usr/local/lib/libboost_math_tr1.dylib

  19. /usr/local/lib/libboost_math_tr1f.dylib

  20. /usr/local/lib/libboost_math_tr1l.dylib

  21. /usr/local/lib/libboost_prg_exec_monitor.dylib

  22. /usr/local/lib/libboost_program_options.dylib

  23. /usr/local/lib/libboost_python.dylib

  24. /usr/local/lib/libboost_random.dylib

  25. /usr/local/lib/libboost_regex.dylib

  26. /usr/local/lib/libboost_serialization.dylib

  27. /usr/local/lib/libboost_signals.dylib

  28. /usr/local/lib/libboost_system.dylib

  29. /usr/local/lib/libboost_thread.dylib

  30. /usr/local/lib/libboost_timer.dylib

  31. /usr/local/lib/libboost_unit_test_framework.dylib

  32. /usr/local/lib/libboost_wave.dylib

  33. /usr/local/lib/libboost_wserialization.dylib

  34. Warning: Unbrewed static libraries were found in /usr/local/lib.

  35. If you didn't put them there on purpose they could cause problems when

  36. building Homebrew formulae, and may need to be deleted.

  37. Unexpected static libraries:

  38. /usr/local/lib/libboost_atomic.a

  39. /usr/local/lib/libboost_chrono.a

  40. /usr/local/lib/libboost_context.a

  41. /usr/local/lib/libboost_coroutine.a

  42. /usr/local/lib/libboost_date_time.a

  43. /usr/local/lib/libboost_exception.a

  44. /usr/local/lib/libboost_filesystem.a

  45. /usr/local/lib/libboost_graph.a

  46. /usr/local/lib/libboost_iostreams.a

  47. /usr/local/lib/libboost_locale.a

  48. /usr/local/lib/libboost_log.a

  49. /usr/local/lib/libboost_math_c99.a

  50. /usr/local/lib/libboost_math_c99f.a

  51. /usr/local/lib/libboost_math_c99l.a

  52. /usr/local/lib/libboost_math_tr1.a

  53. /usr/local/lib/libboost_math_tr1f.a

  54. /usr/local/lib/libboost_math_tr1l.a

  55. /usr/local/lib/libboost_prg_exec_monitor.a

  56. /usr/local/lib/libboost_program_options.a

  57. /usr/local/lib/libboost_python.a

  58. /usr/local/lib/libboost_random.a

  59. /usr/local/lib/libboost_regex.a

  60. /usr/local/lib/libboost_serialization.a

  61. /usr/local/lib/libboost_signals.a

  62. /usr/local/lib/libboost_system.a

  63. /usr/local/lib/libboost_test_exec_monitor.a

  64. /usr/local/lib/libboost_thread.a

  65. /usr/local/lib/libboost_timer.a

  66. /usr/local/lib/libboost_unit_test_framework.a

  67. /usr/local/lib/libboost_wave.a

  68. /usr/local/lib/libboost_wserialization.a

  69. Warning: You have unlinked kegs in your Cellar

  70. Leaving kegs unlinked can lead to build-trouble and cause brews that depend on

  71. those kegs to fail to run properly once built. Run `brew link` on these:

  72. wget

  73. gerryyang@mba:bin$

(6) 为什么选择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 ;-)

看来作者是个酒鬼!

(7) 关于更多地QA可以参考Homebrew的Wiki[4]

(8) 一些常用安装推荐

  1. gerryyang@mba:bin$brew list
  2. coreutils  openssl  wget  xz

Introduction to Coreutils

The GNU Core Utilities are the basic file, shell and text manipulationutilities of the GNU operating system.
These are the core utilitieswhich are expected to exist on every operating system.

http://www.gnu.org/software/coreutils/

4 参考


[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

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这