为什么 `dbbotctl env setup` 会失败?

先执行:

/usr/local/dbbot/bin/dbbotctl doctor

它会先把 python3sshpass、绿色版 Ansible 入口是否存在等前置问题暴露出来。

常见原因:

  1. 控制机没有兼容的 python3。当前发行包内置的是 ansible-base 2.10.17,控制机侧要求 Python 3.63.113.12+ 不在支持范围内。最小化 CentOS 7 通常没有 python3dbbotctl env setup 会提示安装;按回车或输入 y 后继续。
  2. Linux 控制机既没有 yum 也没有 dnf,导致 dbbotctl env setup 无法自动补齐依赖。
  3. Linux 控制机缺少 SELinux Python 绑定,且仓库里没有可安装的 python3-libselinux / libselinux-python3
  4. macOS 缺少 Command Line Tools,导致 tarsshpip 不可用。
  5. 发行包不完整,/usr/local/dbbot/portable-ansible/ansible-playbooklibexec/dbbotctl/sshpass-x64 缺失。

建议排查顺序:

  1. 先跑 dbbotctl doctor 看是 WARN 还是 FAIL
  2. 手工验证绿色版入口是否能启动:
python3 /usr/local/dbbot/portable-ansible/ansible-playbook --version
  1. 如果是 macOS,先执行 xcode-select --install,再重新运行 dbbotctl env setup
  2. 如果控制机上只有 Python 3.12+,请补一个 3.11 或更低版本的 python3

补充说明:

  • Linux 初始化阶段会尝试写入 ~/.bashrc,并在缺少 sshpass 时把随包的 sshpass-x64 放到 /usr/bin/sshpass,所以控制机本地权限必须足够。
  • 直接使用绿色版路径排障时,请优先写死 /usr/local/dbbot/portable-ansible/...,不要自行假设公开环境变量名。

相关文档: