homebrew 是 macos 开发环境的系统级依赖管理基石,负责统一安装 git、make 等 cli 工具;语言运行时需用 pyenv/nvm/rustup 等专用工具隔离版本;项目层则依生态选用 composer/maven/poetry 等声明式工具,三层职责分明、互不越权。

macOS 开发工具链的环境依赖管理,核心在于分层控制:系统层用 Homebrew 统一安装基础命令行工具,语言层用专用版本管理器隔离运行时,项目层靠声明式配置锁定依赖。三者不混用、不越权,才能避免冲突和“命令存在却用错版本”的问题。
Homebrew:系统级工具链的基石
它不是可选插件,而是 macOS 开发环境的起点。所有非 Apple 自带的 CLI 工具(git、make、cmake、curl、openssl 等)都应通过 Homebrew 安装,而非手动编译或下载二进制包。
- 安装失败时,先校准系统时间(TLS 握手依赖准确时间),再用中科大或 Gitee 镜像源执行安装脚本
- Apple Silicon Mac 默认路径是 /opt/homebrew/bin,Intel 是 /usr/local/bin;必须将该路径前置到 $PATH(写入 ~/.zshrc 并 source)
- 安装后运行 which git 或 which make,确认返回路径包含 /opt/homebrew/bin 或 /usr/local/bin,而非 /usr/bin
语言运行时:用专用工具管理多版本
Homebrew 不适合做 Python/Node.js/Rust 的多版本切换——它只保留最新稳定版软链。真要共存,必须引入协同工具:
- Python:用 pyenv(brew install pyenv),再 pyenv install 3.9.16 && pyenv global 3.9.16
- Node.js:用 nvm(curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash),再 nvm install 18 && nvm use 18
- Rust:直接用 rustup(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh),它自带完整工具链隔离能力
切记:不要用 brew link --force python 强制覆盖系统链接,可能破坏 Xcode CLI 工具依赖。
项目依赖:按生态选用声明式工具
不同语言有各自标准,不跨生态混用:
- PHP:用 Composer,全局安装后配阿里云镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
- Java:用 Maven,通过 Homebrew 安装后,在 ~/.m2/settings.xml 中配置阿里云镜像
- iOS:用 CocoaPods(brew install cocoapods 或 sudo gem install cocoapods),项目内执行 pod install
- Python 项目:用 pip + requirements.txt,或更现代的 poetry(brew install poetry)
卸载与清理:别只删包,要清路径和缓存
brew uninstall 只删软件包本身,不会自动清理残留:
- 手动检查并删除 ~/.zshrc 中已失效的 export PATH=... 行
- 运行 hash -d 清除 shell 命令哈希缓存,避免旧路径仍被调用
- 若曾用 brew link 创建符号链接,卸载后需手动 brew unlink pkgname 或删除对应链接
不复杂但容易忽略。











