Linux: app doesn't start on Ubuntu 22.04 — binaries require GLIBC_2.39
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.debfrom 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
Capin a terminal to see the glibc error above. - Optional:
objdump -T /usr/bin/Cap | grep -o 'GLIBC_[0-9.]*' | sort -Vu | tail -1printsGLIBC_2.39
Suggestions
- Build the Linux release on an older base, such as an
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. - If that isn't possible, add a versioned glibc dependency to the
.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 .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
Source: CapSoftware/Cap