Description
Cap for Linux doesn't start on Ubuntu 22.04 LTS. Clicking the app icon does nothing. When I start it from a terminal, it exits right away with this error:
$ Cap
Cap: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.39' not found (required by Cap)
Ubuntu 22.04 ships glibc 2.35. The Linux binaries require glibc 2.39, which is the version in Ubuntu 24.04, so they can't run on 22.04 or any other distro with an older glibc. Ubuntu 22.04 is still a supported LTS release and is widely used.
What I checked:
| Build |
Result on 22.04 |
0.6.0 .deb |
Cap, cap-gpui and cap-cli all require GLIBC_2.39 |
| 0.6.0 AppImage |
Fails the same way. The bundled libraries (libmount, libdbus-1, libkrb5, libudev, and others) also require GLIBC_2.36 or GLIBC_2.38, because they were copied from the build host |
0.5.2 .deb (oldest Linux build on the versions page) |
Also requires GLIBC_2.39 |
The .deb also installs without errors on 22.04 even though it can't run there, so from the user's side the app just silently does nothing.
Reproduction
- On Ubuntu 22.04, download
Cap_0.6.0_amd64.deb from cap.so/download
- Install it with
sudo apt install ./Cap_0.6.0_amd64.deb. It installs without errors.
- Click Cap in the app menu. Nothing happens.
- Run
Cap in a terminal to see the glibc error above.
- Optional:
objdump -T /usr/bin/Cap | grep -o 'GLIBC_[0-9.]*' | sort -Vu | tail -1 prints GLIBC_2.39
Suggestions
- Build the Linux release on an older base, such as an
ubuntu-22.04 runner or a manylinux-style container, so the binaries target glibc 2.35. For the AppImage, avoid bundling system libraries like libc-linked libmount/libdbus taken from a newer host.
- If that isn't possible, add a versioned glibc dependency to the
.deb (for example libc6 (>= 2.39)) so apt refuses to install it, and list the minimum distro versions on the download page.
Workaround for anyone else hitting this: running the 0.6.0 .deb inside an ubuntu:24.04 Docker container, with the X11 socket, /dev/dri and the PipeWire/Pulse sockets passed through, starts the app.
Related: #1553 (Linux tracking issue)
Additional Context
- Cap version: 0.6.0 (also checked 0.5.2)
- Operating system, version: Ubuntu 22.04.5 LTS, kernel 6.8.0, X11 session, glibc 2.35
- Device (optional): x86_64, NVIDIA GeForce GTX 1650
Description
Cap for Linux doesn't start on Ubuntu 22.04 LTS. Clicking the app icon does nothing. When I start it from a terminal, it exits right away with this error:
Ubuntu 22.04 ships glibc 2.35. The Linux binaries require glibc 2.39, which is the version in Ubuntu 24.04, so they can't run on 22.04 or any other distro with an older glibc. Ubuntu 22.04 is still a supported LTS release and is widely used.
What I checked:
.debCap,cap-gpuiandcap-cliall requireGLIBC_2.39libmount,libdbus-1,libkrb5,libudev, and others) also requireGLIBC_2.36orGLIBC_2.38, because they were copied from the build host.deb(oldest Linux build on the versions page)GLIBC_2.39The
.debalso installs without errors on 22.04 even though it can't run there, so from the user's side the app just silently does nothing.Reproduction
Cap_0.6.0_amd64.debfrom cap.so/downloadsudo apt install ./Cap_0.6.0_amd64.deb. It installs without errors.Capin a terminal to see the glibc error above.objdump -T /usr/bin/Cap | grep -o 'GLIBC_[0-9.]*' | sort -Vu | tail -1printsGLIBC_2.39Suggestions
ubuntu-22.04runner or a manylinux-style container, so the binaries target glibc 2.35. For the AppImage, avoid bundling system libraries like libc-linkedlibmount/libdbustaken from a newer host..deb(for examplelibc6 (>= 2.39)) so apt refuses to install it, and list the minimum distro versions on the download page.Workaround for anyone else hitting this: running the 0.6.0
.debinside anubuntu:24.04Docker container, with the X11 socket,/dev/driand the PipeWire/Pulse sockets passed through, starts the app.Related: #1553 (Linux tracking issue)
Additional Context