Homebrew备注

文章目录
  1. 1. 安装Homebrew
  2. 2. 基础命令
  3. 3. keg-only
    1. 3.1. 关键术语
    2. 3.2. 什么是Symlink
    3. 3.3. 为什么有keg-only
  4. 4. 其他术语
    1. 4.1. 关于Cellar的其他术语
    2. 4.2. 关于预编译安装的其他术语
    3. 4.3. 参考资料

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

一个包要直接使用,它必须在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的包定义,这些包定义了如何安装预编译好的二进制文件

参考资料