Homebrew 是Mac或Linux下的包管理器,通常用于安装、更新、卸载那些操作系统没有预装的但是你需要使用的工具。本篇不会赘述那些Homebrew的常见用法,如有需要可以点击下方参考资料来了解。
安装Homebrew
复制以下命令到shell,并按下Enter键来执行/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
基础命令
brew install 包名 # 安装软件包 brew upgrade # 升级包brew update # 升级brew自身
keg-only
有时安装包之后会出现Keg-only的提示,什么是keg-only呢?
关键术语
既然是Homebrew(家酿),那一切肯定都和酒有关了,下面是几个关键的术语
Cellar: 酒窖,一个藏酒的地方,对应这里的概念就是安装根目录。Homebrew默认将包安装在/opt/homebrew/Cellar下(以Mac为例)
rack: 放酒桶的支架,这些支架都放置在酒窖内。每一个支架这里都对应的一个命名的软件包
keg: 精酿小酒桶,每个酒桶都有一个年份,他们都放置在酒桶架上。这里每一个酒桶代表包的一个版本,这些版本都由Formula定义
keg-only: 这些酒仅仅装在keg内,外面没法喝到,意味着外部无法使用,也就是没有在外部做Symlink
什么是Symlink
一个包要直接使用,它必须在PATH查找目录中,或者它在PATH查找目录中有链接,即存在Symlink。keg-only的包只存在于keg中,并没有在PATH中做Symlink,所以不能直接通过命令来调用。
为什么有keg-only
常见的原因是避免和系统自带的工具冲突,Homebrew的新版工具如果全局链接,可能会导致系统不稳定甚至崩溃,所以设置为keg-only。另外可能的原因是多版吧共存,或者这些包是纯依赖包,仅仅为了提供给别的软件来使用
其他术语
Homebrew安装包有两种方式
- 从源代码编译安装(Cellar)
- 直接安装编译预编译的二进制文件(Caskroom)
关于Cellar的其他术语
formula: 定义了Homebrew的包,这些包定义了如何从源码编译安装
bottle: 酒瓶,表示是预制好的酒(预编译的二进制),被倒进了keg里,并被放到了Cellar中
关于预编译安装的其他术语
Caskroom: 放酒桶的房间,这个房间里放的都是预编译的酒桶。默认目录在/opt/homebrew/Caskroom(以Mac为例)
Cask: 酒桶,这里对应的是Homebrew的包定义,这些包定义了如何安装预编译好的二进制文件