Homebrew墙内安装及其常用命令

什么是 Homebrew?

Homebrew 是 macOS(和 Linux)操作系统上最流行的包管理器 (Package Manager)。它的核心使命是: "将 Apple 没有预装但你需要的东西装给你"

你可以把它想象成一个巨大的、由社区维护的软件商店,但它是专门为命令行工具开源软件服务的。通过几句简单的命令,你就可以轻松地安装、更新、卸载和管理成千上万的软件包,而无需手动去官网下载、拖拽安装或处理复杂的依赖关系。


核心概念与比喻

  • 包管理器 (Package Manager):
    就像手机上的 App StoreGoogle Play 。你不需要关心软件从哪里下载、如何安装、依赖哪些库,你只需要告诉它你要什么(例如 搜索"微信" -> 点击"安装"),商店就会自动帮你完成所有事情。Homebrew 就是程序员和高级用户的"命令行版 App Store"。
  • Formula (公式) 🧪:
    这是 Homebrew 最基础的概念。一个 Formula 就是一个 Ruby 脚本,它详细描述了如何编译和安装一个软件包。它包含了软件的下载地址、依赖关系、编译选项等所有信息。
    简单说:一个 Formula 对应一个软件(如 wget, node, python)。
  • Cask (木桶) 🛢️:
    是 Homebrew 的一个扩展。如果说 Formula 主要用于安装命令行工具 ,那么 Cask 就是用来安装 macOS 图形界面应用程序 的(如 Google Chrome、Visual Studio Code、Spotify)。Cask 会自动把这些应用下载并安装到你的 /Applications 文件夹中,就像你手动拖拽安装一样。
  • Tap ( tapped / 探源) 🚰:
    默认情况下,Homebrew 从官方的 Formula 和 Cask 仓库获取软件列表。但社区还有很多第三方或个人维护的软件库。"Tapping"一个仓库就像"添加一个额外的软件源",这样你就能安装官方源里没有的软件了。
    例如:brew tap homebrew/cask-fonts 后,你就可以安装 font-fira-code 等字体了。
  • Keg (桶) 🪣:
    指一个 Formula 被编译安装后的所有文件所在的具体目录(通常位于 /usr/local/Cellar/ 下)。每个版本对应一个 Keg。
  • Cellar (地窖) 🧱:
    所有通过 Homebrew 安装的软件(Kegs)都被放在这里,默认路径是 /usr/local/Cellar。这保证了 Homebrew 安装的软件与系统自带的软件隔离,管理起来非常清晰。

Homebrew 解决了什么痛点?

在没有 Homebrew 之前,在 macOS 上安装开发环境非常麻烦:

  1. 手动下载: 需要打开浏览器,找到软件官网,找到下载链接,选择正确版本。
  2. 处理依赖: 软件 A 依赖库 B,库 B 又依赖库 C......你需要手动解决所有这些依赖关系,极其繁琐且容易出错。
  3. 更新困难: 要更新一个软件,需要重复手动下载、安装的过程,无法批量更新。
  4. 卸载残留: 手动安装的软件,卸载时很难清理干净,会在系统里留下各种碎片文件。

Homebrew 自动化地解决了所有这些问题。


安装&卸载

安装脚本 (终端中粘贴下方命令回车)

bash 复制代码
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

卸载脚本:

bash 复制代码
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)"

常用命令

一、核心命令(最常用)

1. 安装软件包

bash 复制代码
brew install <formula_name>

示例: 安装 wget

bash 复制代码
brew install wget

2. 卸载软件包

bash 复制代码
brew uninstall <formula_name>

示例: 卸载 wget

bash 复制代码
brew uninstall wget

3. 更新 Homebrew 自身

这是最重要的一步,确保获取到最新的软件列表和版本信息。

bash 复制代码
brew update

4. 升级所有已安装的软件包

在执行 brew upgrade 之前,最好先执行 brew update

bash 复制代码
brew upgrade

只升级某个特定软件:

bash 复制代码
brew upgrade <formula_name>

5. 查看已安装的软件列表

bash 复制代码
brew list

或显示更详细的信息(包括版本):

bash 复制代码
brew list --versions

二、查询与搜索命令

1. 搜索软件包

bash 复制代码
brew search <keyword>

示例: 搜索与 python 相关的包

bash 复制代码
brew search python

2. 查看软件包信息

显示某个软件的详细信息,如版本、依赖、安装位置等。

bash 复制代码
brew info <formula_name>

示例: 查看 node 的信息

bash 复制代码
brew info node

3. 检查过时的软件

列出所有可以升级的软件。

bash 复制代码
brew outdated

三、管理与诊断命令

1. 清理旧版本软件

Homebrew 会保留之前安装的旧版本软件,这个命令可以自动清理它们,非常实用。

bash 复制代码
brew cleanup

查看哪些软件将被清理(不实际执行):

bash 复制代码
brew cleanup -n

2. 诊断 Homebrew 问题

如果遇到问题,运行这个命令可以检查常见问题并给出修复建议。

bash 复制代码
brew doctor

3. 查看服务管理(非常实用!)

对于像 nginx, mysql, redis 这类软件,Brew 可以像 systemd 一样管理它们的服务。

  • 列出所有服务状态:

    bash 复制代码
    brew services list
  • 启动一个服务(并设置开机自启):

    bash 复制代码
    brew services start <formula_name>
  • 停止一个服务(并取消开机自启):

    bash 复制代码
    brew services stop <formula_name>
  • 重启一个服务:

    bash 复制代码
    brew services restart <formula_name>

示例: 启动 redis 并设置为开机自启

bash 复制代码
brew services start redis

四、高级命令

1. 锁定某个软件的版本

防止某个软件被 brew upgrade 意外升级。

bash 复制代码
brew pin <formula_name>

取消锁定:

bash 复制代码
brew unpin <formula_name>

2. 查看依赖关系

显示某个软件依赖哪些其他软件,或者其他哪些软件依赖它。

bash 复制代码
brew deps --tree <formula_name>

五、Cask 命令(用于安装图形界面应用)

Homebrew Cask 是 Homebrew 的扩展,用于安装 macOS 应用程序(如 Chrome、Visual Studio Code 等)。

  • 安装一个应用程序:

    bash 复制代码
    brew install --cask <app_name>

    示例: 安装 Google Chrome

    bash 复制代码
    brew install --cask google-chrome
  • 搜索 Cask 应用: (同样使用 search)

    bash 复制代码
    brew search --cask <app_name>
  • 列出已安装的 Cask 应用:

    bash 复制代码
    brew list --cask

常用命令组合与工作流

日常更新所有软件的最佳实践:

bash 复制代码
# 1. 先更新 Homebrew 自身
brew update

# 2. 查看哪些软件可以升级
brew outdated

# 3. 升级所有软件(或指定软件)
brew upgrade

# 4. 清理旧版本
brew cleanup

# 5. (可选)检查是否有问题
brew doctor

一键更新并清理:

bash 复制代码
brew update && brew upgrade && brew cleanup
相关推荐
SimonKing7 小时前
你的图片又被别人“白嫖”了?用这篇Java防盗链攻略说再见!
java·后端·程序员
ai绘画-安安妮12 小时前
AI工程师必看!GitHub上10个高价值LLM开源项目,建议立即收藏
人工智能·学习·程序员·开源·大模型·github·转行
程序员鱼皮14 小时前
在国企干了 5 年 Java,居然不知道 RPC?这正常吗?
后端·rpc·程序员
艾醒15 小时前
大模型面试题剖析:大模型微调数据集构建
人工智能·算法·程序员
就是帅我不改15 小时前
面试官:单点登录怎么实现?我:你猜我头发怎么没的!
后端·面试·程序员
知了一笑16 小时前
独立做项目,拿得起放得下
程序员·产品·项目·独立开发
AI大模型1 天前
给AI装上一个'超级大脑':信息检索如何改变RAG系统的游戏规则
程序员·llm·agent
AI大模型1 天前
RAG生产环境实战指南:从Demo到百万用户的血泪教训
程序员·llm·agent