dom96 / choosenim

Tool for easily installing and managing multiple versions of the Nim programming language.
BSD 3-Clause "New" or "Revised" License
682 stars 65 forks source link

GLIBC_2.27 Not found #280

Closed sdmcallister closed 2 years ago

sdmcallister commented 2 years ago

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

choosenim: /lib64/libc.so.6: versionGLIBC_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
sdmcallister commented 2 years ago

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 2 years ago

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 :/

brentp commented 2 years ago

seeing this here as well: https://app.travis-ci.com/github/quinlan-lab/STRling/builds/240283264

dom96 commented 2 years ago

@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 :)

marcomq commented 2 years ago

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.

sdmcallister commented 2 years ago

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

marcomq commented 2 years ago

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 https://github.com/dom96/choosenim/pull/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...

timotheecour4 commented 2 years ago

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 2 years ago

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 2 years ago

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