跳到主要内容

HomeBrew 的 keg-only 是什么意思

在安装比如Ruby的时候,会看到这样的提示:

keg-only
==> Caveats
ruby is keg-only, which means it was not symlinked into /opt/homebrew,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

这是什么意思呢?

什么是keg-only

在 Homebrew 的上下文中,"keg" 是一个特定的术语,用来描述 Homebrew 管理的软件包的安装实例。简单来说,当你使用 Homebrew 安装一个软件包时,这个软件包的内容(包括二进制文件、库、配置文件等)被存放在一个称为 "keg" 的目录中。这里的一些关键点有助于理解 "keg" 的概念:

目录结构

每个通过 Homebrew 安装的软件包都有自己的 "keg",这是一个文件夹,通常位于 /usr/local/Cellar(对于 Intel Macs)或 /opt/homebrew/Cellar(对于 Apple Silicon Macs)下。 在这个 "keg" 文件夹中,你会找到软件包的所有文件,包括其二进制文件、库文件、配置文件等。

版本管理

Homebrew 允许在系统上安装多个版本的同一软件包。每个版本都有自己的 "keg"。 这意味着你可以轻松切换使用不同版本的软件,或者同时保留多个版本。

链接

默认情况下,Homebrew 会将 "keg" 中的一些文件(如二进制文件)链接到 /usr/local/bin(或对应的路径),这样你就可以直接通过命令名运行这些程序,而不需要指定完整路径。 对于 "keg-only" 的软件包,这种链接则不会发生,需要用户手动操作或通过完整路径来运行程序。 "Keg-only" 的软件包:

当一个软件包被标记为 "keg-only",它的文件不会被链接到如 /usr/local/bin 这样的通用路径中,主要是为了避免与系统自带的软件包冲突。