tools
tools copied to clipboard
🐛 Rome doesn't work on CentOS 7
Environment information
OS: CentOS 7
CPU architecture: x86_64
Installation method: Downloaded `https://github.com/rome/tools/releases/download/cli%2Fv0.10.1-next/rome-linux-x64` and `chmox +x`'ed it
What happened?
- Downloaded rome
- Tried to run it
- Get the following error
# ./rome
./rome: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by ./rome)
./rome: /lib64/libc.so.6: version `GLIBC_2.29' not found (required by ./rome)
./rome: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by ./rome)
./rome: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by ./rome)
./rome: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by ./rome)
Expected result
I hoped rome would run 😞
I got a similar error with CentOS 8 stream too, even after installing glibc-devel.
I was wondering if this was because we were dynamically linking dependencies, and if we could potentially build binaries that wouldn't need these dependencies, and statically linked musl or something?
Sorry if this isn't a great bug report, and please let me know if I can help provide more details, or ideally help fix this, and better document it for folks that experience similar issues in the future.
Code of Conduct
- [X] I agree to follow Rome's Code of Conduct
This article goes into the details about why this might be a problem.
@zoidbergwill can you confirm the libc version installed on your system by pasting the result of the following two commands
ldd --version
yum list glibc
Someone else also reported this issue. They are using the node:16 Docker image. https://discord.com/channels/678763474494423051/1038880911015563344/1038880911015563344
One option is to use the same docker container that Rust uses to build. https://github.com/rust-lang/rust/tree/master/src/ci/docker
One option is to use the same docker container that Rust uses to build. https://github.com/rust-lang/rust/tree/master/src/ci/docker
How would this work with Visual Studio Code?
How would this work with Visual Studio Code?
Sorry, my explanation was a bit brief. The idea is to use use the docker container in the CI pipeline that builds the Rome binary. Building on a machine with an older glibc version removes the reference to the problematic symbol.
@MichaReiser Sorry for the delay. I'll share output from those!
% docker run -it --rm quay.io/centos/centos:stream8 bash
Unable to find image 'quay.io/centos/centos:stream8' locally
stream8: Pulling from centos/centos
6c5de04c936d: Pull complete
f1ee40d9db4a: Pull complete
17facd475902: Pull complete
0d557d32f54e: Pull complete
Digest: sha256:c9acf46f90fcb637eff59e269fbbebf5ec9e6b6215a07fbe2bbad7429aad6e7e
Status: Downloaded newer image for quay.io/centos/centos:stream8
[root@8177306f8bed /]# curl -L -orome https://github.com/rome/tools/releases/download/cli%2Fv10.0.0/rome-linux-x64
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 9.7M 100 9.7M 0 0 7950k 0 0:00:01 0:00:01 --:--:-- 14.0Mm
[root@8177306f8bed /]# chmod +x ./rome
[root@8177306f8bed /]# ./rome
./rome: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by ./rome)
./rome: /lib64/libc.so.6: version `GLIBC_2.29' not found (required by ./rome)
[root@8177306f8bed /]# ldd --version
ldd (GNU libc) 2.28
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
[root@8177306f8bed /]# yum list glibc
CentOS Stream 8 - AppStream 31 MB/s | 25 MB 00:00
CentOS Stream 8 - BaseOS 15 MB/s | 26 MB 00:01
CentOS Stream 8 - Extras 24 kB/s | 18 kB 00:00
CentOS Stream 8 - Extras common packages 21 kB/s | 5.2 kB 00:00
Installed Packages
glibc.x86_64 2.28-211.el8 @baseos
Available Packages
glibc.i686 2.28-216.el8 baseos
glibc.x86_64 2.28-216.el8 baseos
I managed to build and run rome using https://quay.io/repository/pypa/manylinux2014_x86_64 (glibc 2.17) This is my suggestion, instead of supporting musl.
I managed to build and run rome using https://quay.io/repository/pypa/manylinux2014_x86_64 (glibc 2.17) This is my suggestion, instead of supporting musl.
We may still want to consider a musl build for platforms that don't ship with glibc.
This article goes into the details about why this might be a problem.
Ooooh, I had a look at manylinux, thinking about whether it was useful / applicable for Rust
One option is to use the same docker container that Rust uses to build. https://github.com/rust-lang/rust/tree/master/src/ci/docker
This is a really interesting. It doesn't look like it's easy for folks to use outside of the repo from the investigations I did trying to find where it might be published.
A bit late, but there seems to be a github action https://github.com/marketplace/actions/rust-musl-builder-slim
build Rome for musl target for static link should resolve this issue