tliron / puccini

Cloud topology management and deployment tools based on TOSCA
https://puccini.cloud
Apache License 2.0
88 stars 20 forks source link

`GLIBC_2.32' not found (required by ./puccini-tosca) #113

Closed ashish-gupta-2 closed 1 year ago

ashish-gupta-2 commented 1 year ago

HI ,

we are getting the below issue while running the ./puccini-tosca command

./puccini-tosca: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./puccini-tosca)
tliron commented 1 year ago

That is very odd. What version and operating system are you on? Are you sure you downloaded the right version of Puccini for your system?

ashish-gupta-2 commented 1 year ago

ubuntu 20.04

tliron commented 1 year ago

This must be an issue with the Go compiler (Puccini is 100% Go). For now I can recommend building Puccini directly from source. There are some helper scripts and instruction here.

tliron commented 1 year ago

Have you installed using the .deb file or the Linux tarball?

Could you report if this worked for you when you built locally?

ruffsandor commented 1 year ago

For me the same happened installing from rpm. (v 0.20.1) I'm on rocky 8.5, my glibc version (executing /lib64/libc.so.6 ) is 2.28

For me I had to 1) upgrade my go version (to 1.17) Older go was not able to build 2) install from src.

Note: I had to workaround the "git_version" command used by the "scripts/build", because that one assumes that there is a git repo somewhere, but I just downloaded a tar.gz

tliron commented 1 year ago

Thanks, the git_version issue is indeed an oversight, I will fix that.

It seems that the Go compiler/linker is not very good at creating truly portable Linux executables... I will investigate this further.

tliron commented 1 year ago

OK, I think I also found a way to close this entire issue. It does seem that by default the Go compiler enables the use of C libraries, and likely one or more of the dependencies of Puccini makes use of this, or even the Go standard library itself (in this case, it's glib). However, it is possible to manually disable this and fall back to "100% Go". From my initial testing this seems to work fine in Puccini.

Note that the language wrappers (Java, Python, Ruby) do rely on C libraries, of course, so it's not possible to disable there. But for the Puccini core tools ... hopefully this error will disappear. Experimental for now, let's see how well this works.