-
Notifications
You must be signed in to change notification settings - Fork 20.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
geth 1.14.6 requires newer glibc #30115
Comments
The Linux 64-bit pre-built binaries v1.14.6 require GLIBC_2.34. |
glibc cannot be statically linked, at least not in Go. I guess the issue stems from us updating our builders to a newer Ubuntu version. (cc @holiman). Though tbh, I'm not sure what we can meaningfully do here. Using an old version of glibs is just as arbitrary as using a new one, isn't it? |
The docker image ethereum/client-go:alltools-latest has statically linked binaries for Linux 64-bit #file geth #ldd geth So the project already supports static linking. |
Yeah, but the docker executables run on alpine and use musl, not libc.
…On Fri, 5 Jul 2024 at 23:59, alex2grad ***@***.***> wrote:
The docker image ethereum/client-go:alltools-latest has statically linked
binaries for Linux 64-bit
#file geth
geth: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically
linked, BuildID[sha1]=339b91232aaf970656908d202da063425d3f0fc6, with
debug_info, not stripped
ldd geth
not a dynamic executable
So the project already supports static linking.
—
Reply to this email directly, view it on GitHub
<#30115 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAA7UGLDDDOBKNPHNNMSZMDZK4CJZAVCNFSM6AAAAABKJZFBY6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMJRGQYDKOJWGA>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
Static executables don't carry dynamic dependencies or libc version and could run on any Linux. For example I run geth executable from docker image ethereum/client-go:alltools-v1.14.6 #./geth --version #./geth version-check #uname -a #cat /etc/os-release |
I had the same issue on the ARM64 binary. I am on 22.04 and don't know how to upgrade GLIBC to the version requested by geth so I will downgrade until I figure out how to upgrade or something is put in the release notes. |
Same problem happens in Ubuntu-20.04 in wsl, it seems not solved yet.
|
Same issue here with native Ubuntu 20.04 (full updated). Can this StackOverflow answer be the solution?
|
Ran into this on Debian 11 which has glibc 2.31, a release note would've been nice unless it's a bug |
I met this question,too. My ec2's linux system is AWS linux 2,and the glibc version is glibc-2.26-63.amzn2.0.1.x86_64. |
Sorry, we kind of dropped the ball here and forgot about this issue in the last release. We didn't intentionally break compatibility with older glibc versions, so it could be classified as a bug. Let me summarize the affected distributions:
For these distributions, the binary provided on geth.ethereum.org does not launch. |
The issue has been investigated further, and returning to Ubuntu 18.04 Bionic on builders is not an option for us. Travis CI has deprecated this version and only supports Ubuntu 20.04 and 22.04 going forward. We will stick to Ubuntu 20.04 Focal, and this means we are bound to the glibc version provided by it. The only other available option would be publishing fully static builds. It is possible to build Geth as a statically-linked executable, but we have not tested glibc in static mode. AFAIK it will still retain a reference to certain dynamic glibc modules within the binary even if glibc itself is linked in statically. |
I actually wonder how it could be that our pre-built Geth binary, built on Ubuntu 20.04, does not launch on that same version of Ubuntu. |
Since #30319 has now been merged, builds should always happen on Ubuntu 20.04 Focal. |
Focal uses glibc I think what happens might be that, according to @vivi365, the versions used on travis have been a tad random and nondeterministic, so sometimes it's been xenial, sometimes bionic, sometimes jammy. Which also could explain this:
|
./geth --version ./geth --version So the version 1.14.8-stable-a9523b64 depends on GLIBC version at least 2.14. Focal has GLIBC version 2.31 So even on Trusty the latest binary can run. |
Thanks @alex2grad for the info! |
It should be noted in the release notes that the official binary for geth requires a newer glibc
The text was updated successfully, but these errors were encountered: