Brew 使用指南
一、什么是 brew?
全程:Homebrew
macOS(或 Linux)软件包管理器。它可以让你轻松地安装、更新、卸载软件,解决软件依赖关系,你不再需要手动下载、拖拽安装或处理复杂的编译选项。
Homebrew 会将软件包安装到独立目录,并将其文件软链接至 /opt/homebrew 。
二、安装 Homebrew
在终端(Terminal)中执行以下命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装完成后,运行以下命令确保 Brew 工作正常:
brew doctor
三、基础使用命令
1. 安装软件
- 安装命令行工具(Formula):
brew install <formula_name> # 示例:安装 wget, tree, node brew install wget tree node - 安装图形界面应用(Cask)
brew install --cask <cask_name> # 示例:安装 Chrome, VS Code, Spotify brew install --cask google-chrome visual-studio-code spotify
2. 查询软件
- 搜索软件(不确定完整包名时非常有用):
brew search <keyword> # 示例:搜索所有与 python 相关的包 brew search python - 查看已安装的软件列表:
brew list # 列出所有通过 Formula 安装的命令行工具 brew list --cask # 列出所有通过 Cask 安装的应用程序 - 查看某个软件的信息:
brew info <formula_name> brew info --cask <cask_name>
3. 更新软件
- 更新 Homebrew 自身(获取最新的 Formula 和 Cask 列表):
brew update
- 检查哪些软件可以更新:
brew outdated - 更新所有软件:
brew upgrade - 更新指定软件:
brew upgrade <formula_name> - 更新 Cask 应用: 对于 Cask 应用,upgrade 命令同样有效。如果应用有自动更新功能(如 Chrome),则可能无需通过 Brew 更新。
brew upgrade --cask <cask_name>
4. 卸载软件
- 卸载软件:
brew uninstall <formula_name> brew uninstall --cask <cask_name> - 清理旧版本和缓存: Homebrew 会保留旧版本和下载缓存,定期清理可以节省空间。
brew cleanup # 清理所有旧版本软件的缓存
brew cleanup <formula_name> # 清理指定软件的缓存
brew cleanup -n # 查看哪些会被清理,但不实际执行(干跑)
四、 高级用法
1. 管理服务(Services)
Homebrew 可以像 systemd 一样管理一些后台服务(如 MySQL, Nginx, PostgreSQL)。
- 安装服务:
brew install mysql - 在登录时启动并立即运行服务:
brew services run mysql # 立即运行但不设置开机启动 brew services start mysql # 设置开机启动并立即运行 - 停止服务:
brew services stop mysql - 重启服务:
brew services restart mysql - 查看所有服务状态:
brew services list
2. 诊断问题
brew doctor: 检查你的系统是否存在潜在问题,并给出修复建议。遇到任何安装问题时首先运行此命令。brew config: 显示 Homebrew 的系统和配置信息,用于故障排除时提供环境详情。brew gist-logs <formula>: 上传某个软件的详细安装日志到 Gist,方便在 GitHub 上提交问题时使用。
3. 安装特定版本软件
有时你需要安装的不是最新版,而是某个特定版本。
- 首先找到你需要的版本的 Formula(可能存在于一个“tap”中):
brew search node@ # 搜索带版本的 node - 如果找到了(如 node@14),直接安装:
brew install node@14 - 你需要手动将特定版本添加到 PATH 环境变量中,因为 Brew 默认只链接最新版本。安装后提示会告诉你怎么做。
4. Taps(第三方仓库)
官方仓库没有你需要的软件?可以添加第三方仓库。
- 添加一个 Tap:
brew tap <user/repo> # 示例:添加一个著名的字体仓库 brew tap homebrew/cask-fonts # 然后你就可以安装这个 tap 里的字体了 brew install --cask font-fira-code - 查看已添加的 Tap:
brew tap - 删除一个 Tap:
brew untap <user/repo>
5.更换镜像源
```bash
# 替换 Homebrew 源为国内镜像
# 中科大镜像
git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git
# 或者清华镜像
git -C "$(brew --repo)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
# 更新 Homebrew
brew update
```
6. 禁用 Homebrew 自动更新(可选)
```bash
# 如果觉得自动更新烦人,可以禁用
echo 'export HOMEBREW_NO_AUTO_UPDATE=1' >> ~/.zshrc
echo 'export HOMEBREW_NO_ENV_HINTS=1' >> ~/.zshrc
source ~/.zshrc
```
五、mysql为例安装
安装
# 运行安装命令 brew install mysql@8.0链接到系统路径
# 添加到 zshrc echo 'export PATH="/usr/local/opt/mysql@8.0/bin:$PATH"' >> ~/.zshrc # 使配置生效 source ~/.zshrc # 验证路径 which mysql # 应该显示: /usr/local/opt/mysql@8.0/bin/mysql启动 MySQL 服务
# 启动并设置开机自启 brew services start mysql@8.0 # 或者只启动不设置自启 mysql.server start安全初始化
# 运行安全配置脚本 mysql_secure_installation按照提示操作:
设置 root 密码
移除匿名用户(选 Y)
禁止远程 root 登录(选 Y)
移除测试数据库(选 Y)
重新加载权限表(选 Y)
环境变量配置
- 添加到 shell 配置文件
# 如果是 zsh(macOS Catalina 及以后) echo 'export PATH="/usr/local/opt/mysql@8.0/bin:$PATH"' >> ~/.zshrc # 如果是 bash echo 'export PATH="/usr/local/opt/mysql@8.0/bin:$PATH"' >> ~/.bash_profile # 使配置生效 source ~/.zshrc # 或 source ~/.bash_profile - 验证安装
# 检查版本 mysql --version # 应该显示类似:mysql Ver 8.0.xx for macosx on x86_64 (Homebrew) # 测试连接 mysql -u root -p- 添加到 shell 配置文件
常用管理命令
- 服务管理
# 查看服务状态 brew services list # 停止服务 brew services stop mysql@8.0 # 重启服务 brew services restart mysql@8.0- 配置文件位置
# 主配置文件 /usr/local/etc/my.cnf # 数据目录 /usr/local/var/mysql/ # 错误日志 /usr/local/var/mysql/your_computer_name.err其他
- 优化
# 备份原始配置 cp /usr/local/etc/my.cnf /usr/local/etc/my.cnf.backup # 编辑配置(添加以下内容) echo "[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci innodb_buffer_pool_size = 1G slow_query_log = 1 long_query_time = 2 [client] default-character-set = utf8mb4" >> /usr/local/etc/my.cnf # 重启生效 brew services restart mysql@8.0 - 忘记密码
# 停止服务 brew services stop mysql@8.0 # 安全模式启动 mysqld_safe --skip-grant-tables & # 重置密码 mysql -u root FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码'; exit; # 重启服务 brew services restart mysql@8.0 - 自己管理启动
编写start_mysql.sh,chmod +x start_mysql.sh
#!/bin/zsh export HOMEBREW_NO_AUTO_UPDATE=1 MYSQL_PATH="/usr/local/opt/mysql@8.0/bin/mysql.server" # 使用不同的变量名避免与系统只读变量冲突 mysql_status=$($MYSQL_PATH status 2>/dev/null) if [[ $mysql_status == *"SUCCESS"* ]]; then echo "MySQL 正在运行,准备停止..." $MYSQL_PATH stop elif [[ $mysql_status == *"ERROR! MySQL is not running"* ]]; then echo "MySQL 未运行,准备启动..." $MYSQL_PATH start else echo "无法确定 MySQL 状态,尝试启动..." $MYSQL_PATH start fi- 优化