Homebrew使用教程(macOS)

简介

Homebrew是一个开源的软件包管理工具,它的主要开发语言是Ruby,项目托管在GitHub上。

目前,Homebrew只能通过命令行终端使用,没有图形化操作界面。因此,这个工具更适合有编程基础的人使用。

官方介绍,Homebrew可以用在macOS系统或Linux系统上管理软件包。但实际上,它在Linux系统上并不流行,更多的还是用于macOS系统,逐渐成为除AppStore之外,另一个实用的软件包管理工具。

软件包管理有几个主要方面:搜索、查看、安装、更新、卸载。Homebrew对这几个方面都有较为良好的支持,使用起来相当便捷。

Homebrew安装

官网地址:https://brew.sh/index_zh-cn

安装命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 安装完成查看Homebrew版本
brew --version

卸载命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"

Homebrew术语

首先要理解什么是Homebrew软件包?

Homebrew软件包是一类Ruby脚本,其中定义了目标软件包的版本,以及如何管理安装目标软件包的流程。正常情况下,Homebrew软件包名称会和目标软件包名称保持一致。

按照管理方式的不同,Homebrew软件包又分为两类:formula、cask。

Formula

formula管理的目标软件包,其特点是要走源码编译安装流程,例如wget,这类目标软件包通常都是没有图形化操作界面的,只能通过命令行终端使用。

因为下载目标软件包源码进行本地编译安装的过程,通常都是比较原始且耗时的,所以大部分情况下,目标软件包的官方会提供编译好的二进制文件,formula可以直接下载编译好的二进制文件进行本地安装即可,避开本地编译过程,提高软件包的安装效率。

官方将这些提前编译好的二进制文件,叫做bottle。

默认情况下,formula软件包的安装路径是/usr/local/Cellar,官方称这个路径为cellar。

Cask

cask管理的目标软件包,其特点是要走应用包安装流程,例如firefox,这类目标软件包通常都是有图形化操作界面的。

在macOS系统上,应用包就是dmg包,所以,cask管理模式就是自动化了目标dmg包的安装过程,和手动下载dmg包安装效果是一样的,区别只是该软件包被纳入了Homebrew的管理范围。

默认情况下,cask软件包的安装路径是/usr/local/Caskroom,官方称这个路径为caskroom。

需要注意的是,因为目标软件包是dmg包,所以会按照macOS系统规范,被安装到应用程序(/Applications)当中,cask软件包会创建软连接指向真实的目标应用程序,从而达到管理的目的。

Tap

这个术语表示Homebrew软件包仓库,通常都是Git管理的仓库。

官方提供有两个核心仓库:

  1. homebrew-core仓库,对应formula管理模式
  2. homebrew-cask仓库,对应cask管理模式

除此之外,还有非官方提供的软件包仓库和各种镜像仓库,只要符合Homebrew软件包管理规范的仓库,都可以称之为tap。

Homebrew常用命令

brew search, -S [options] text|/regex/ […]

搜索软件包,可以用软件包名称的关键字或者正则表达式作为搜索条件。

# 不限定管理模式,formula软件包和cask软件包都会搜索
brew search wget
brew search firefox
# 只搜索formula软件包
brew search --formula wget
# 只搜索cask软件包
brew search --cask firefox

brew update [options]

获取Homebrew版本,以及所有formula、cask的可安装版本信息,同时也能看到本地已安装软件包哪些过时了。

brew update

brew install [options] formula|cask […]

安装软件包

# 优先尝试安装formula软件包,没有的话,再尝试安装cask软件包
brew install wget
brew install firefox
# 指定安装一个formula软件包
brew install --formula wget
# 指定安装一个cask软件包
brew install --cask firefox

brew reinstall [options] formula|cask […]

重新安装软件包,如果之前有安装过,就卸载掉之前的重新安装,如果之前没有安装过,就直接安装。

# 重新安装某个软件包,软件包选择顺序依旧是先formula再cask
brew reinstall wget
brew reinstall firefox
# 重新安装formula软件包
brew reinstall --formula wget
# 重新安装cask软件包
brew reinstall --cask firefox

brew upgrade [options] [outdated_formula|outdated_cask …]

更新本地已安装的,但已不是最新版本的软件包。该命令和reinstall有点类似,都是对软件包进行卸载重装,区别是upgrade命令可以自动带上前一次安装时的options参数。

# 更新所有已过时的软件包,并且会自动使用它们上一次被安装时的options参数进行重新安装
brew upgrade
# 更新指定的formula软件包
brew upgrade wget
# 更新指定的cask软件包
brew upgrade firefox

brew uninstall, remove, rm [options] installed_formula|installed_cask […]

卸载已在本地已安装的软件包。

# 卸载本地已经安装的软件包
brew uninstall wget
brew uninstall firefox
# 卸载本地已安装的formula软件包
brew uninstall --formula wget
# 卸载本地已安装的cask软件包
brew uninstall --cask firefox

brew list, ls [options] [installed_formula|installed_cask …]

查看本地已安装的软件包。

# 查看所有已安装的软件包名称,包括formula和cask
brew list
# 查看所有已安装的formula软件包名称
brew list --formula
# 查看所有已安装的cask软件包名称
brew list --cask
# 查看已安装的软件包wget的文件信息
brew list wget
brew list --formula wget
# 查看已安装的软件包firefox的文件信息
brew list firefox
brew list --cask firefox
# 查看所有已安装的软件包的名称及版本信息
brew list --version
# 查看已安装的软件包wget的名称及版本信息
brew list --version wget
# 查看已安装的软件包firefox的名称及版本信息
brew list --version firefox

brew info, abv [options] [formula|cask …]

查看软件包的一些基本信息和统计数据,就是一些大概的情况。

# 可以统计出本地安装了多少个formula软件包,共有多少文件,占用多少空间
brew info
# 可以看到软件包的概况,比如它来源于哪里,构建工具是什么,依赖有哪些,和哪些软件包有冲突,近期的分析统计数据
brew info wget
brew info --formula wget
brew info firefox
brew info --cask firefox

brew home, homepage [–formula] [–cask] [formula|cask …]

通过浏览器打开目标软件包的官网。

# 打开Homebrew官网
brew home
# 打开wget官网
brew home wget
brew home --formula wget
# 打开firefox官网
brew home firefox
brew home --cask firefox

brew outdated [options] [formula|cask …]

检查本地已安装的软件包版本是否已经过时,命令执行后会展示出已过时的软件包名称、本地安装版本号,最新版本号。

# 展示所有已安装且版本已过时的软件包
brew outdated
# 展示所有已安装且版本已过时的formula软件包
brew outdated --formula
# 展示所有已安装且版本已过时的cask软件包
brew outdated --cask
# 展示某个已安装且版本已过时的cask软件包,如果没有过时,就什么也不展示
brew outdated wget
brew outdated --formula wget
brew outdated firefox
brew outdated --cask firefox

brew cleanup [options] [formula|cask …]

对本地软件包进行清理。分两种情况:

  1. 如果某个软件包安装有多个版本,会保留相对最新的版本,清理卸载掉其它旧版本
  2. 如果某个软件包不是最新版本,Homebrew会认为这是一个应该清理掉但实际并未清理的软件包,从而给出一个警告(可忽略)

如果经常使用Homebrew,可能会积攒出很多旧版本的软件包,执行该命令可能会释放出很多的硬盘空间。

# 针对所有已安装软件包执行清理动作
brew cleanup
# 针对某个已安装软件包执行清理动作
brew cleanup wget
brew cleanup --formula wget
brew cleanup firefox
brew cleanup --cask firefox

brew tap [options] [user/repo] [URL]

  1. 查看本地已关联的Homebrew软件包仓库
  2. 新增关联一个Homebrew软件包仓库
# 没有跟任何参数,就是查看本地已关联的Homebrew软件包仓库
brew tap

# 指定了user/repo,没有指定URL,则默认这是个GitHub仓库,仓库地址满足固定格式
brew tap <user/repo>
brew tap <user/repo> https://github.com/<user>/homebrew-<repo>

# 指定了URL,则认为这不是一个GitHub仓库
brew tap <user/repo> <URL>
# 这种情况下,关联仓库后要多做一件事情,作用是让Homebrew可以自动更新这个tap
brew tap --force-auto-update <user/repo>
# 上述两个命令可以合成一个
brew tap --force-auto-update <user/repo> <URL>

# 已关联仓库,都存储在macOS系统Library中
cd $(brew --repository)/Library/Taps

同时关联多个tap,可能会遇到一种情况:一个软件包同时存在于多个tap中,并且它们的版本不同。

此时,若是执行软件包安装命令,会优先选择Homebrew官方tap,其次才是其它tap。

这种场景下,如果Homebrew选择的不是目标tap,解决方案就是指定软件包的全名称:

# 因为homebrew/core仓库有vim软件包,所以会被优先选择
brew install vim
# 从指定了tap安装vim软件包
brew install username/repo/vim

brew untap [–force] user/repo [user/repo user/repo …]

取消本地已关联的Homebrew软件仓库。

# 取消关联一个软件仓库
brew untap <user/repo>
# 同时取消关联多个软件仓库
brew untap <user/repo> <user/repo>
# 强制取消关联一个软件仓库,该仓库内已有软件包安装到本地,不想卸载软件包
brew untap --force <user/repo>

你可能感兴趣的:(MacOS,Homebrew,Formula,Cask,Tap,MacOS)