在 Unix 大家族里,每个家族成员都有一项让人引以为豪的技能,那就是 包管理,macOS 也不例外。如果说 Mac App Store 是一家大超市,Homebrew 就是一间精品小铺——如它名字(家酿啤酒)所代表的那样。在使用 Mac 的过程当中,会接触各种 dmg 格式的安装文件,用它们装上的应用往往不知藏身何处;也可能看到一些其他人正在使用命令行工具,往往却不知道如何下载和配置。有了 Homebrew,就能轻松安装、管理、卸载许多应用,一条指令可能就足够了。
解决的问题
更好管理”看不见”的应用,我们可以在 Terminal 使用命令行来轻松安装所需要的包,例如 node:
1 | brew install node |
命令执行完毕之后,node 被安装到了 /usr/local/Cellar
目录中。 通过 Homebrew
安装的所有包都会被放在这里。 这样做有几个好处,一个是方便集中管理,删除不再使用的软件包,省去了大量软件包散落在各处带来日后清理的头疼问题。另外可以方便更集中的权限管理。
安装
1 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" |
常用指令
安装卸载
1 | brew --version 或者 brew -v 显示brew版本信息 |
升级软件
1 | brew update 自动升级homebrew(从github下载最新版本) |
清理相关
1 | brew cleanup -n 列出需要清理的内容 |
管理”看得见”的应用
Homebrew Cask 是 Homebrew 的扩展,借助它可以方便地在 macOS 上安装 图形界面程序,即我们常用的各类应用。Homebrew 中文含义为自制、自酿酒,Cask 中文含义为桶、木桶,桶装酒是一种成品,也就是说每一个 homebrew cask 都可以直接使用的,比如著名浏览器 Chrome 的 Cask 名称为 google-chrome,那么就可以使用如下命令安装:
1 | brew cask install google-chrome |
自动管理依赖关系
如果没有包管理工具,我们就需要找到每个组件的下载位置,还要手动管理它们的更新,依赖关系等等,这些事情就需要消耗掉不少的精力。 好在包管理工具已经为我们处理好了这一切,我们要做的只是安装和使用。例如,要下载一个依赖于另一个软件的应用,比如说you-get
(一款下载互联网视频的自由软件)需要先安装Python 3
。Homebrew
会要么提醒你电脑缺少所依赖的Python 3
,要么恰如其分地把依赖的软件不多不少地安装好,再继续中断的You-Get
安装过程(通常情况下会采取后者)。整个过程不但安全可靠,而且简洁优雅,所有软件都来源于其对应的官方网站,并能够安全干净地卸载,而这一切都是普通的安装方式所做不到或做不好的。
终端代理问题
由于境内网络环境的复杂性,有不少情况下我们可能无法正常地更新 brew 和其管理下的应用。而我们日常电脑上使用的一些代理软件,通常没办法自动对终端进行代理,所以需要手动进行一些相应的设置,以方便日后的使用。
之前用的是 proxychains-ng
的一款命令行应用。由于 macOS
升级后的 SIP
限制,在 proxychains.conf
文件中设置 ss
的 socks5
代理,无效了。解决办法是在重启后,在 Recovery mode
下关闭 SIP
,但是这种方法现在已经不太推荐了。这里采用的是把代理服务器地址写入 shell
配置文件 .bashrc
或者 .zshrc
的方法,直接在 .bashrc
或者 .zshrc
添加下面内容:
1 | export http_proxy="http://localhost:port" |
如果使用的是trojan
或者Shadowsocks
类似的客户端用户,可以手动到应用的高级设置
里边查看,如图所示则需要将配置的端口设置为 1080:如下图所示:
相应的代码如下所示:
1 | export http_proxy="socks5://127.0.0.1:1080" |
或者直接设置 ALL_PROXY:
1 | export ALL_PROXY=socks5://127.0.0.1:1080 |
localhost
就是一个域名,域名默认指向 127.0.0.1
,两者是一样的。然后ESC后:wq
保存文件,接着在终端中执行 source ~/.bashrc
,或者退出当前终端再起一个终端。 这个办法的好处是把代理服务器永久保存了,下次就可以直接用了。或者通过设置alias
简写来简化操作,每次要用的时候输入 setproxy
,不用了就 unsetproxy
补充
关于替换镜像源,个人不推荐使用镜像,会存在延时或抽风的时候。同时改变完成后可能还需要还原,如果一定要使用,推荐USTC(中科大镜像)。
替换
1 | # 替换 Homebrew |
重置
1 | # 重置brew.git |
参考链接
https://www.zhihu.com/question/31360766/answer/673451632