Why Does `dbbotctl env setup` Fail?

Start with:

/usr/local/dbbot/bin/dbbotctl doctor

It surfaces control-host prerequisites first, including python3, sshpass, and whether the portable Ansible entrypoints are present.

Common causes:

  1. The control host does not have a compatible python3. The release bundle currently ships ansible-base 2.10.17, which expects controller-side Python 3.6 through 3.11; 3.12+ is out of scope. Minimal CentOS 7 usually has no python3; dbbotctl env setup prompts before installing it, and pressing Enter or typing y continues the setup.
  2. The Linux control host has neither yum nor dnf, so dbbotctl env setup cannot bootstrap dependencies.
  3. SELinux Python bindings are missing on Linux, and neither python3-libselinux nor libselinux-python3 can be installed from the current repositories.
  4. macOS Command Line Tools are missing, so tar, ssh, or pip are unavailable.
  5. The release package is incomplete and files such as /usr/local/dbbot/portable-ansible/ansible-playbook or libexec/dbbotctl/sshpass-x64 are missing.

Recommended check order:

  1. Run dbbotctl doctor and inspect the WARN / FAIL lines first.
  2. Verify the portable entrypoint directly:
python3 /usr/local/dbbot/portable-ansible/ansible-playbook --version
  1. On macOS, run xcode-select --install first, then rerun dbbotctl env setup.
  2. If the host only has Python 3.12+, install a python3 version at 3.11 or lower for the control-host side.

Additional notes:

  • During Linux bootstrap, dbbot may write ~/.bashrc and copy the bundled sshpass-x64 to /usr/bin/sshpass, so local permissions on the control host must be sufficient.
  • When debugging with direct paths, prefer /usr/local/dbbot/portable-ansible/... explicitly instead of inventing a public environment variable name.

Related docs: