$ ceph-devstack -v doctor --fix
> podman info
> sudo true
> test -e /dev/loop-control
> test -w /dev/loop-control
> cat /sys/fs/selinux/enforce
> uname
> bash -c . /etc/os-release && echo $ID
Podman version is too old for rootless native overlayfs (needs {podman_overlay_version})
> uname -r
> command -v fuse-overlayfs
Traceback (most recent call last):
File "/home/ubuntu/.local/bin/ceph-devstack", line 10, in <module>
sys.exit(main())
File "/home/ubuntu/.local/share/uv/tools/ceph-devstack/lib/python3.10/site-packages/ceph_devstack/cli.py", line 61, in main
sys.exit(asyncio.run(run()))
File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
return future.result()
File "/home/ubuntu/.local/share/uv/tools/ceph-devstack/lib/python3.10/site-packages/ceph_devstack/cli.py", line 50, in run
if not await asyncio.gather(
File "/home/ubuntu/.local/share/uv/tools/ceph-devstack/lib/python3.10/site-packages/ceph_devstack/requirements.py", line 273, in check_requirements
result = result and await FuseOverlayfsPresence().evaluate()
File "/home/ubuntu/.local/share/uv/tools/ceph-devstack/lib/python3.10/site-packages/ceph_devstack/requirements.py", line 27, in evaluate
if await self.check() is True:
File "/home/ubuntu/.local/share/uv/tools/ceph-devstack/lib/python3.10/site-packages/ceph_devstack/requirements.py", line 18, in check
proc = await self.host.arun(self.check_cmd)
File "/home/ubuntu/.local/share/uv/tools/ceph-devstack/lib/python3.10/site-packages/ceph_devstack/host.py", line 50, in arun
return await self.cmd(
File "/home/ubuntu/.local/share/uv/tools/ceph-devstack/lib/python3.10/site-packages/ceph_devstack/exec.py", line 80, in arun
transport, protocol = await loop.subprocess_exec(
File "/usr/lib/python3.10/asyncio/base_events.py", line 1681, in subprocess_exec
transport = await self._make_subprocess_transport(
File "/usr/lib/python3.10/asyncio/unix_events.py", line 207, in _make_subprocess_transport
transp = _UnixSubprocessTransport(self, protocol, args, shell,
File "/usr/lib/python3.10/asyncio/base_subprocess.py", line 36, in __init__
self._start(args=args, shell=shell, stdin=stdin, stdout=stdout,
File "/usr/lib/python3.10/asyncio/unix_events.py", line 799, in _start
self._proc = subprocess.Popen(
File "/usr/lib/python3.10/subprocess.py", line 971, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.10/subprocess.py", line 1863, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'command'
$ cat > ~/.local/bin/command << 'EOF'
#!/bin/bash
builtin command "$@"
EOF
chmod +x ~/.local/bin/command
Claude is saying it is because the
command -vis run without shell and suggested to use shutil.which or use workaroundwhich worked for this