tools icon indicating copy to clipboard operation
tools copied to clipboard

🐛 Rome doesn't work on CentOS 7

Open zoidyzoidzoid opened this issue 3 years ago • 12 comments

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?

  1. Downloaded rome
  2. Tried to run it
  3. 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

zoidyzoidzoid avatar Nov 01 '22 20:11 zoidyzoidzoid

This article goes into the details about why this might be a problem.

MichaReiser avatar Nov 02 '22 08:11 MichaReiser

@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

source

MichaReiser avatar Nov 02 '22 08:11 MichaReiser

Someone else also reported this issue. They are using the node:16 Docker image. https://discord.com/channels/678763474494423051/1038880911015563344/1038880911015563344

strager avatar Nov 06 '22 20:11 strager

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

MichaReiser avatar Nov 08 '22 13:11 MichaReiser

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?

strager avatar Nov 08 '22 20:11 strager

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 avatar Nov 09 '22 07:11 MichaReiser

@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 

zoidyzoidzoid avatar Nov 10 '22 12:11 zoidyzoidzoid

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.

xunilrj avatar Nov 10 '22 13:11 xunilrj

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.

MichaReiser avatar Nov 10 '22 13:11 MichaReiser

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.

zoidyzoidzoid avatar Nov 22 '22 15:11 zoidyzoidzoid

A bit late, but there seems to be a github action https://github.com/marketplace/actions/rust-musl-builder-slim

MichaReiser avatar Nov 26 '22 16:11 MichaReiser

build Rome for musl target for static link should resolve this issue

axetroy avatar Nov 26 '22 19:11 axetroy