Homebrew - macOS 上完美的包管理器

你需要几个好的「管家」来管理你的电脑 - Homebrew 就是其中一个。

介绍

As you know,macOS 是一个类 Unix 平台,能够方便地配置各种需要的开发环境,前端、后台、移动端的开发都可以在 macOS 上进行。在开发的过程中,常常需要开发者安装各种各样的第三方工具才能够完成相应的开发任务,比如Python、MySQL。然而,不同于 Ubuntu 自带有 apt-get,在 macOS 上一直没有原生的包管理工具,这也为开发者使用第三方库带来了一定的困难。另一方面,有时候采用官方的安装方法,可能会与系统自身的文件系统纠缠在一起,如果未来某天想要彻底删除第三方库的话,可能会异常繁琐,甚至一不小心就删除了系统文件,得不偿失。Homebrew 的诞生解决了这一问题,通过 Homebrew 可以方便地进行包管理,并且不会对系统文件产生影响。本文将对这个神奇的工具进行一些简单的介绍。

一些趣闻:听说 Homebrew 的作者因为面试的时候没办法手写二叉树被拒了。

什么是Homebrew

正如官方宣传的那样(官网链接戳这里),Homebrew 是macOS 上缺失已久的包管理工具,它是一个命令行(CLI)程序,提供了类似Ubuntu 上的 apt-get 功能,通过简单的命令,就能够方便地进行第三方库的安装、更新与卸载操作,并且避免了与系统文件产生冲突的弊端。

为什么要使用Homebrew

作为一名开发者,与第三方库打交道是再正常不过的事情了。在 macOS 平台上,使用第三方库的方式主要包括:源码编译、官网提供 pkg 文件、使用包管理工具。使用源码编译能够完全掌握安装流程,还能够按照自己的需求修改源码进行个性化,但是步骤比较繁琐,需要的编译工具较多,并且容易出错。使用官方提供的 pkg 文件简化了安装步骤,比如 Python 就提供了官方 pkg 安装包,直接双击打开像安装应用程序一样即可,但是采用这种方式进行安装非常容易与系统文件混在一起,卸载的时候就是一场噩梦了。虽然通过 pkgutil 可以查看安装 pkg 的时候创建了哪些文件,但是要想做到完全卸载还是需要手动进行清理。而使用包管理工具则进一步简化了安装步骤,只需使用简单的命令就能方便地安装、更新和删除,在易用性和功能性中间取得一个较好的平衡。

除了 Homebrew 以外,还有其他的 macOS 包管理工具,如 MacPorts 等,感兴趣的话可以自行查阅相关资料。

安装与卸载

下面介绍 Homebrew 本身的安装、更新与卸载方法。注意:以下所有代码均在 Terminal 中执行。

安装

Homebrew 是一个使用 Ruby 编写的程序,而 macOS 自带 Ruby,因此可以使用自带的 Ruby 进行安装。执行下列代码:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

如有需要,可以先升级一下系统的 Ruby 版本再安装 Homebrew。

在 macOS 上使用命令行程序需要先安装 Xcode Command Line Tools,可以通过xcode-select install进行安装,按照提示一步一步执行即可。

Homebrew 安装完成后,可以执行brew --help查看 Homebrew 的帮助文档,同时验证是否安装成功。

更新

执行下列代码以更新 Homebrew:

brew update

Homebrew 源在国外,更新和下载的时候可能比较慢,稍微等一下就好,也可以采取魔法上网加快下载速度。

卸载

执行下列代码以卸载 Homebrew:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

Homebrew 的安装目录在/usr/local/Cellar,可以看看有没有什么残留文件。

使用Homebrew

下面简单介绍一下如何使用 Homebrew。

库的查找、安装、更新、删除

要查找自己准备安装的库是否支持 Homebrew,可以用 Homebrew 查一下,执行

brew search <formulae>

执行下列代码以查看库的信息:

brew info <formulae>

执行下列代码以安装新的库:

brew install <formulae>

执行下列代码以查看哪些库有新的版本

brew outdated

执行下列代码对给定的库进行更新,更新后原来的库文件夹会自动删除。

brew upgrade <formulae>

也可以一次性更新全部

brew upgrade

执行下列代码删除已安装的第三方库

brew unistall <formulae>

执行下列代码列出已经成功安装的库

brew list

添加第三方仓库

能够直接使用 Homebrew 安装的第三方库都保存在 Homebrew 自己的 Github core 中,Homebrew 还支持从其他仓库进行安装,vapor 就是一个典型的例子。
执行下列代码查看已添加的仓库

brew tap

执行下列代码添加新的 Github 路径,通常可以通过第三方库的帮助文档获得

brew tap <user/repo>

如果第三方库不是保存在 Github 上的话,需要给出完整路径

brew tap <user/repo> <URL>

执行下列代码对 tap 的库进行固定

brew tap-pin <user/repo>

在 Homebrew 安装第三方库的时候,如存在重名的库,会按照一下的顺序进行安装:

  1. pinned taps
  2. core formulae
  3. other taps
    如果想要在安装的时候指定使用哪个 tap,可以执行下列代码
brew install username/repo/formulae

如果直接使用brew install,将会按照上述顺序搜索并安装。

执行下列代码移除路径

brew untap <user/repo>

关于添加第三方仓库的详细内容请查阅官方文档

TroubleShooting

执行下列代码清理一下 Homebrew 中的无用文件,

brew cleanup

执行下列代码对 Homebrew 进行诊断,如果出现 warning,通常来说只要 Homebrew 能正常使用就不用管。

brew doctor

使用Homebrew Cask

Homebrew 能够实现第三方库的便捷安装,那么有没有什么东西能够实现第三方应用程序的便捷安装呢?受 Homebrew 的启发,Homebrew 的作者开发了Homebrew Cask,旨在使用类似于 Homebrew 的方式对第三方应用程序进行管理。

这里的第三方应用程序指的是没有在 Mac App Store 上架的应用程序。

什么是Homebrew Cask

Homebrew Cask 可以说是 Homebrew 的一个衍生程序,是为了解决 macOS 上非 Mac App Store 的应用程序的管理问题。在 macOS 上,常见的应用程序安装方式包括:Mac App Store、dmg 文件、pkg 文件。由于桌面端的环境不比移动端,在 macOS 上还无法像 iOS 一样强制用户在 App Store 中安装应用程序,因此可以使用多种方法在 macOS 上安装应用程序。

  1. Mac App Store 是苹果官方的安装渠道,在 Mac App Store 上架的软件严格遵循沙盒限制,每个应用程序有自己独立的文件系统,未得到用户允许无法访问其他目录,安全性有很好的保障,但也由于沙盒的原因,在 Mac App Store 上架的应用程序有不少都是阉割版程序,缺失部分核心功能,如 QQ、QQ 音乐、Alfred 等。
MAS
  1. pkg 是早期 Mac 上非常常用的安装方式,在前面也提到过 Python 提供了官方 pkg 安装包,同样它也可以用来安装应用程序。使用 pkg 进行安装只需要双击 pkg 文件,然后按照提示一步一步进行即可,与在 Windows 上安装软件非常相似,使用起来比较方便。但是 pkg 安装存在的问题是应用程序产生的文件可能会与系统文件混在一起,卸载的时候如果不借助第三方清理工具会非常麻烦。常见的使用 pkg 安装的软件有 Adobe 全家、Microsoft Office、Teamviewer 等。有「洁癖」的用户可以使用自带的 pkgutil 或第三方的 UninstallPKG 对 pkg 安装的应用程序进行清理。
PKG
  1. dmg 是目前比较主流的安装方式,应用程序发布者将编译打包好的 .app 文件放在 dmg 文件中,用户安装时直接将 app 拖放到 /Application 目录即可,安装过程简单到令人发指。
DMG

Homebrew Cask 在 dmg 安装的基础上简化了操作,直接通过命令行方便地管理已安装的应用,并且在一定程度上解决了卸载不完全的问题。

软件的查找、安装、更新、删除

在已经安装好 Homebrew 的前提下,先安装 Homebrew Cask,实际上就是把Homebrew Cask 添加到tap的列表中

brew tap caskroom/cask

执行下列代码查找能够使用 Homebrew Cask 安装的应用程序

brew cask search <formulae>

执行下列代码查看应用程序的信息

brew cask info <formulae>

执行下列代码安装应用程序

brew cask install <formulae>

安装完成后,应用程序会自动被移动到 /Application 目录,等同于从 dmg 中拖出来放到里面。
执行下列代码删除应用程序

brew cask uninstall <formulae>

对于应用程序的更新,Homebrew 官方建议采用应用程序自己的更新方法对应用进行更新,如果仍想通过 Homebrew Cask 处理,可以先卸载再重新安装即可。
执行下列代码列出已安装的应用程序

brew cask list

⚠️需要注意的是,使用 Homebrew Cask 仅仅是替代了「从 dmg 文件中把应用拖到 /Application 」这一步骤,如果安装的应用程序是商业软件,仍然需要输入软件授权码才能继续使用。

Homebrew Cask 安装的一定是正版软件噢。

总结

作为一款优秀的程序,Homebrew 使用起来非常简单,其使用教程都可以在官方文档中查到。Homebrew 的诞生极大提高了开发者们的效率,让他们不再为第三方库的繁琐安装步骤而烦恼。

本文只是简单介绍了Homebrew最简单的应用,更加进阶的使用方法可以自行搜索或查阅官方文档。

另外,除了开发者以外,普通用户有时候也能从中获益。例如,macOS 上的 PSP 模拟器程序 PPSSPP 需要两个库的支持,分别是 sdl2 和 libzip,在官方安装教程中就建议用户使用 Homebrew 安装这两个库,才能够正常运行 PPSSPP。


本文为原创文章,转载请注明。