You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ansible在Mac上安装Homebrew失败,请求协助排查修复

Fixing Homebrew Installation Error with Ansible on macOS

我来帮你搞定这个Ansible安装Homebrew的问题!从你的错误输出来看,问题出在Homebrew安装脚本检测到没有TTY(终端交互环境),进入非交互式模式后无法正常获取sudo权限——毕竟Ansible默认的shell模块不会分配TTY,导致脚本里的sudo请求没法完成。

下面给你两个靠谱的解决方案,按需选择:

方案1:给Shell任务分配TTY(推荐)

这个方法让Ansible模拟终端环境,让安装脚本的sudo请求能正常获取你通过-K输入的密码。修改你的Playbook,给执行脚本的任务加上pty: yes参数:

- name: Install Homebrew on mac
  hosts: mac_vms
  tasks:
    - name: Check if Homebrew is already installed
      stat:
        path: /usr/local/bin/brew
      register: b

    - name: Execute Homebrew install script
      shell: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
      delay: 3
      when: not b.stat.exists
      pty: yes  # 关键:分配TTY,让脚本能正常处理sudo交互

然后执行命令时去掉-b参数(我们要让普通用户执行脚本,由脚本自己请求sudo权限):

ansible-playbook -i hosts.yaml installHomeBrew.yml -vvvv -K

方案2:强制非交互式安装

如果你不想处理TTY的问题,可以通过设置NONINTERACTIVE=1环境变量,让Homebrew脚本跳过所有交互式确认,直接完成安装。修改Playbook如下:

- name: Install Homebrew on mac
  hosts: mac_vms
  tasks:
    - name: Check if Homebrew is already installed
      stat:
        path: /usr/local/bin/brew
      register: b

    - name: Execute Homebrew install script (non-interactive)
      shell: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
      delay: 3
      when: not b.stat.exists
      environment:
        NONINTERACTIVE: 1  # 强制非交互式模式,跳过所有确认

执行命令时可以保留-b -K(让Ansible以root身份执行脚本,避免脚本内部的sudo请求):

ansible-playbook -i hosts.yaml installHomeBrew.yml -vvvv -b -K

额外提示

  • 不要用root用户直接运行Homebrew安装脚本(官方明确不推荐),所以方案1更符合最佳实践;
  • 确保你的macOS主机能正常访问GitHub(安装脚本需要下载资源);
  • 如果之前安装失败过,建议先清理残留文件(比如/usr/local/Homebrew目录)再重试。

内容的提问来源于stack exchange,提问作者santhosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 18:07:42