Brew 使用指南

一、什么是 brew?

全程:Homebrew

  • macOS(或 Linux)软件包管理器。它可以让你轻松地安装、更新、卸载软件,解决软件依赖关系,你不再需要手动下载、拖拽安装或处理复杂的编译选项。

  • Homebrew 会将软件包安装到独立目录,并将其文件软链接至 /opt/homebrew 。

  • brew官网

二、安装 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. 安装特定版本软件

有时你需要安装的不是最新版,而是某个特定版本。

  1. 首先找到你需要的版本的 Formula(可能存在于一个“tap”中):
    brew search node@ # 搜索带版本的 node
    
  2. 如果找到了(如 node@14),直接安装:
    brew install node@14
    
  3. 你需要手动将特定版本添加到 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为例安装

  1. 安装

    # 运行安装命令
    brew install mysql@8.0
    
  2. 链接到系统路径

    # 添加到 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
    
  3. 启动 MySQL 服务

    # 启动并设置开机自启
    brew services start mysql@8.0
    
    # 或者只启动不设置自启
    mysql.server start
    
  4. 安全初始化

    # 运行安全配置脚本
    mysql_secure_installation
    

    按照提示操作:

    • 设置 root 密码

    • 移除匿名用户(选 Y)

    • 禁止远程 root 登录(选 Y)

    • 移除测试数据库(选 Y)

    • 重新加载权限表(选 Y)

  5. 环境变量配置

    1. 添加到 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
      
    2. 验证安装
    # 检查版本
    mysql --version
    
    # 应该显示类似:mysql  Ver 8.0.xx for macosx on x86_64 (Homebrew)
    
    # 测试连接
    mysql -u root -p
    
  6. 常用管理命令

    1. 服务管理
    # 查看服务状态
    brew services list
    
    # 停止服务
    brew services stop mysql@8.0
    
    # 重启服务
    brew services restart mysql@8.0
    
    1. 配置文件位置
    # 主配置文件
    /usr/local/etc/my.cnf
    
    # 数据目录
    /usr/local/var/mysql/
    
    # 错误日志
    /usr/local/var/mysql/your_computer_name.err
    
  7. 其他

    1. 优化
      # 备份原始配置
      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
      
    2. 忘记密码
      # 停止服务
      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
      
    3. 自己管理启动

    编写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