version `GLIBC_2.32' not found (required by dog)
If dog does something unexpected, or displays an error on the screen, or if it outright crashes, then please include the following information in your report:
- The version of dog being used (
dog --version) - v.0.1.0 - The command-line arguments you are using - dog
- Your operating system and hardware platform - Intel CPU, Ubuntu 20.04 (Pop_OS!)
If it’s a crash, please include the full text of the crash that gets printed to the screen. If you’re seeing unexpected behaviour, a screenshot of the issue will help a lot.
Placed the binary in /usr/local/bin and try to run dog or dog --version results in the following error:
user@laptop:~$ dog
dog: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32' not found (required by dog) user@laptop:~$ dog --version dog: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32' not found (required by dog)
It appears that 20.04 LTS has 2.31 by default, where 20.10 has the 2.32. Is it not possible to run on Ubuntu without manually installing the newer packages?
same
dog: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by dog)
Ubuntu 20.04 (Focal) has libc6 of version 2.31 by default, however dog which is available here was compiled against libc6 of version 2.32, and this version of libc6 will be available only in Ubuntu 20.10 (Groovy). It might be much easier to recompile it yourself for 20.04. Or you can take mine.
It's the same on Debian.
Azlux@testdevice:~/bin$ sudo apt list libc6
Listing... Done
libc6/stable,now 2.28-10 amd64 [installed]
Azlux@testdevice:~/bin$ ./dog
./dog: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./dog)
Azlux@testdevice:~/bin$
Is that possible to be glibc independent or to use a lower version for public release ?
Seconded. Having a multitude of debian and ubuntu systems that still are actively supported (e.g. 16.04, 18.04 as LTS versions), using a library version that not even the current LTS can natively run is not a good idea.
Perhaps consider lowering the dependencies or building a statically linked version for linux x64 as servers never tend to run "in-between" or bleeding edge versions of OS'es ;)
What about a musl build?
I have a sidetrack mirror CI project where I've done a musl build, the pipeline is available on https://gitlab.com/mirrorbuilds/dog/-/pipelines
The CI config is also available on https://gitlab.com/mirrorbuilds/ci-configs/-/blob/master/dog/.gitlab-ci.yml
cc @jc00ke
Same issue
Ok, I've compiled myself and add everything into https://packages.azlux.fr/ It's an apt repository based on github release. Since the release don't have runnable binary, I've disabled the auto-update (I will do manually until @ogham fix the current issue, and maybe add arm build too (#33))
The build script is on the website. Autocompletion and manual are also installed automatically.
No news about this issue ?
This error is a side-effect of me building on one version of Linux, only testing on that same version of Linux, then (incorrectly!) assuming that it would work for slightly older versions too. This happened to me once before when exa accidentally required a library that I happened to have on my own machine — I didn't notice, but everyone else did!
I'll do my best to support more versions and architectures in the next release.
May be build dog on old version glibc? Where build dog now?
Everyone who is on Debian based distribution, you can adapt the Dockerfile found on master branch to build the executable from source and then copy in on your system.
For instance :
FROM rust
WORKDIR /build
COPY /src /build/src
COPY /dns /build/dns
COPY /dns-transport /build/dns-transport
COPY /man /build/man
COPY build.rs Cargo.toml /build/
RUN cargo build --release
Then:
docker build -t dog .
docker run --rm -it -d --name dog dog:latest
docker cp dog:/build/target/release/dog ./
docker stop dog
Using rust:latest image, the produced executable works on Ubuntu 20.04, but you can take an older image like rust:stretch if it is not the case for you.
You can also compile a static binary using musl libc. You just need to add the openssl dependency with the vendored features mentioned in the documentation.
I added to the root Cargo.toml the dependency :
openssl = { version = "0.10", features = ["vendored"] }
And compiled using musl target :
cargo build --target x86_64-unknown-linux-musl --release
Same here with latest openSUSE 15.3:
./dog: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by ./dog)
Latest glibc on latest openSUSE 15.3 is "only" 2.31… 😞
Ok, I've compiled myself and add everything into https://packages.azlux.fr/ It's an apt repository based on github release. Since the release don't have runnable binary, I've disabled the auto-update (I will do manually until @ogham fix the current issue, and maybe add arm build too (#33))
The build script is on the website. Autocompletion and manual are also installed automatically.
The direct link to download is https://packages.azlux.fr/debian/pool/main/d/dog/
@ayanamist , hm, no RPMs overthere… I'm currently fine with the docker-solution 👍🏻