0.22.8 glibc issue
krismolendyke opened this issue · 8 comments
Looks like #514 introduced a regression in the Linux binary distribution:
pixlet: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by pixlet)
pixlet: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by pixlet)
Downgrading to 0.22.7
works for me.
I'm experiencing this as well on Raspberry Pi OS, which is based on Debian Bullseye:
$ pixlet --help
pixlet: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by pixlet)
pixlet: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by pixlet)
Debian Bullseye uses libc version 2.31. By contrast, Ubuntu 22.04 (which is what is used to build the binary) uses libc version 2.35. For comparison, here are the versions used by various other currently-supported distros:
Big ol' table
Distro | glibc Version |
---|---|
Amazon Linux 2 | 2.25-2.26 |
Debian Buster (10) | 2.28 |
Debian Bullseye (11) | 2.31 |
Fedora 35 | 2.34 |
Fedora 36 | 2.35 |
Fedora 37 | 2.36 |
RHEL 7 | 2.17 |
RHEL 8 | 2.28 |
RHEL 9 | 2.34 |
Slackware 14.0 | 2.15 |
Slackware 14.1 | 2.17 |
Slackware 14.2 | 2.23 |
Slackware 15.0 | 2.33 |
Ubuntu 18.04 LTS | 2.27 |
Ubuntu 20.04 LTS | 2.31 |
Ubuntu 22.04 LTS | 2.35 |
Ubuntu 22.10 | 2.36 |
I've left out rolling-release distros because those are basically all using 2.36 as well as most derivatives like Rocky Linux, as those generally use the same version as the upstream distro.
Pinging @betterengineering for visibility.
+1 Seeing this on linux (GitHub Codespaces with the go
image mcr.microsoft.com/devcontainers/go
)
I had this GLIBC error message as well (downloaded pixlet binary version 0.22.8). My system shows version 2.31 which is also declared as latest package when I try to upgrade (Ubuntu GLIBC 2.31-0ubuntu9.9) running Ubuntu 20.04. Rebuild of pixlet 0.22.8 from source solved the problem, however caused a fair bit of pain in the process as I had to update Node, npm, Go as I was previously on Pixlet version 17.
He folks! Sorry about the headaches here. We were statically linking only the libwebp dependency and not everything. I updated this in #559 but only for amd64. Check out v0.23.1
and let me know if you have any issues.
In order to get arm64 to also be fully static, I need to spend more time to fix the cross compilation using the appropriate arm based glibc.
Per ipfs/distributions#348 and various other references on the internet (see in particular this Stack Overflow post), statically linking glibc can cause issues, and isn't truly static.
The good news is that Zig's C compiler can be used with CGO and has the ability to dynamically link against any version of glibc by specifying the version in the target like so:
zig cc -target x86_64-linux-gnu.2.25
zig cc -target aarch64-linux-gnu.2.31
I would recommend trying this route instead.
This is working for me now, thanks!
This is still happening for me on arm64.