dom96/choosenim

GLIBC_2.27 Not found

sdmcallister opened this issue · 10 comments

I'm using centos7 and I see the following message after doing choosenim update self.

choosenim: /lib64/libc.so.6: version GLIBC_2.27' not found (required by choosenim)`

Trying to go back to a version that works.

I see that somehow you can specify the version of choosenim using env variables, but I can't get this to work.

I've tried:

export CHOOSENIM_CHOOSE_VERSION=v0.7.2/choosenim-0.7.2_linux_amd64
export CHOOSENIM_CHOOSE_VERSION=v0.7.2

I noticed the old choosenim binary was still available so I just used it directly and was able to move to Nim 1.6..

dom96 commented

Yes, old choosenim was statically linked with a libc. You can continue to use it. How old is GLIBC_2.27? I compiled on Ubuntu 18.04 which I figured would be old enough, but I guess not :/

dom96 commented

@brentp Yeah, I feel the pain, but at the same time... Ubuntu 16.04 has been end of life'd April '21. Time to upgrade :)

Ubuntu 16.04 has been end of life'd April '21.

I have this error on RHEL 7 / CentOs 7. I tried to install choosenim to compile a ManyLinux2014 binary for python.
RHEL 7 seems still to be supported until 2024.

We also just got RHEL 7 at work so this came up again which was disappointing.

I know some people still using RHEL 6 on production. They are planning to upgrade - not sure if they want to use RHEL 7 or directly RHEL 8. But RHEL 7 is still something that is used out there and still considered to be stable.
It would be great to have at least CentOS 7 compatibility on build machines.

I created some PR to automatically build binaries using a GH workflow
#296
It would use manylinux2014 to be CenOS 7 / RHEL 7 compatible.
I have no idea if the pre-compiled Nim binaries themself are CentOS 7 compatible...

This issue also affects Amazon Linux 2 EC2 instances, which is an important use case (eg see https://stackoverflow.com/questions/72022527/glibc-2-27-not-found-while-installing-node-on-amazon-ec2-instance, https://repost.aws/questions/QUrXOioL46RcCnFGyELJWKLw/glibc-2-27-on-amazon-linux-2 => Glibc 2.26, not Glibc 2.27). Note that Nim's build_all.sh isn't affected by this issue, it's specific to choosenim.

partial workaround

git clone https://github.com/nim-lang/Nim
cd Nim
sh build_all.sh
export PATH=$(pwd)/bin:$PATH
nimble install choosenim

which installs a working choosenim.

After that there's one more glitch:

choosenim stable
Prompt: Symlink for 'nimble' detected in '/home/ticour/.nimble/bin'. Can I remove it? [y/N]

Obviously, this isn't great if we're trying to get a working version of nim fast, as it requires bootstrapping nim, but at least it's a partial solution.

dom96 commented

After that there's one more glitch:

That's actually a feature :)

You can just say "yes" if you want choosenim to overwrite any non-choosenim installed Nimble.

dom96 commented

This should be resolved now. Thanks to @marcomq we now have builds on manylinux which hopefully will make choosenim work on these older distros :)