wasp-lang / wasp

The fastest way to develop full-stack web apps with React & Node.js.
https://wasp-lang.dev
MIT License
13.76k stars 1.18k forks source link

How to solve /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34` not found #867

Closed EmmanuelTheCoder closed 1 year ago

EmmanuelTheCoder commented 1 year ago

Describe the bug

There is something I observed with Wasp 0.7.1 on Windows (WSL). Before now, I used Wasp 0.6.0 and everything works fine but after installing Wasp 0.7.1 on Windows, trying to run any wasp command resulted in the following errors:

/lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.34 not found (required by ...wasp-lang/0.7.1/wasp-bin)

/lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32 not found (required by ...wasp-lang/0.7.1/wasp-bin)

/lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.33 not found (required by ...wasp-lang/0.7.1/wasp-bin).

Below is photo evidence.

wasp libc6 err

To Reproduce

Steps to reproduce the behavior:

  1. Install Wasp 0.7.1 on Windows (WSL)
  2. Try to run any wasp command and boom you have the terminal yelling at you some GLIBC error

What does this mean and how to resolve it

The error means that Wasp 0.7.1 was compiled against GLIBC 2.32 - 2.34 and therefore it requires any of those versions (preferably 2.34 or higher) to run. In my case, I was on glibc 2.31 which is the latest (and highest) version for Ubuntu 20.04 (Focal)

Since that was the case, trying to install a greater glibc of another Ubuntu version might kill my machine. This is to say that glibc for say version 22.4 will not work for version 20.04.

The solution to this was that I needed to update my Ubuntu version to at least Impish (21.10) so that I can get access to glibc 2.34 to run Wasp on Windows (Impish uses glibc 2.34 - meets the glibc requirement of Wasp 0.7.1). I strongly recommend that you upgrade to Jammy Jellyfish (22.04LTS). This version uses glibc2.36 (this is what I am currently on and works well for Wasp 0.7.1).

To check your current Ubuntu version, run:

cat /etc/os-release

To check your current glibc version, run:

ldd --version ldd

To upgrade glibc version, run:

sudo apt-get update -y
sudo apt-get install -y libc6

If you get a response that says your current glibc version is the latest and if this is less than the Wasp 0.7.1 requirement (glibc 2.34) then it is time to upgrade your Linux version to enable you to run Wasp 0.7.1.

Upgrade your Linux version and you should be good to go. I will put out an article on my dev.to blog shortly (and revert here) about how to upgrade to Jammy Jellyfish (22.04) which is the latest long-term support released in April 2022 and will be supported for 10 years.

NB: I recommend you upgrade to Jammy Jellyfish (22.04LTS). It has glibc 2.36 and it works just fine for me.

Summary:

You need glibc 2.34 or greater to run Wasp 0.7.1 on Windows (WSL)

EmmanuelTheCoder commented 1 year ago

I found this article helpful for upgrading your Ubuntu version to the latest LTS (for this reason I wouldn't be putting out another article for this)

https://www.layerstack.com/resources/tutorials/How-to-upgrade-from-Ubuntu-20.04-Ubuntu-22.04

Martinsos commented 1 year ago

@EmmanuelTheCoder thanks for reporting this! It is interesting that this happened. I don't think we did any changes to Wasp between 0.6 and 0.7 that should cause a jump in libc version, which is why this surprised me. We are talking here about the Haskell really -> and version of Haskell compiler didn't change, actually we have ways to freeze the deps to ensure we are using the same version always.

However, we are building the release on CI. What might have happened is that CI upgraded its ubuntu version and built Wasp with newer glibc! Hm yeah it might be that.

Things we can do:

  1. Check if we can make sure that CI doesn't change version without us knowing. Although maybe it is good that it does, so Wasp works with newer ubuntu releases? Does that matter?
  2. Put a warning in our docs to let people know.
  3. Build wasp completely statically, so it doesn't depend on libc.

Actually we already have an issue for this I just realized! I will link to it and close this one since they share most of the content. https://github.com/wasp-lang/wasp/issues/650 .

EmmanuelTheCoder commented 1 year ago

I think that it's a good thing that CI changes versions (in this case, to the version just before the LTE). This helps ensure that Wasp is up to speed with newer Ubuntu releases but these changes should be monitored for proper reporting and documentation.

Any downside with building Wasp statically and not making it depend on libc?

Martinsos commented 1 year ago

I think that it's a good thing that CI changes versions (in this case, to the version just before the LTE). This helps ensure that Wasp is up to speed with newer Ubuntu releases but these changes should be monitored for proper reporting and documentation.

Any downside with building Wasp statically and not making it depend on libc?

It would make it somewhat bigger, but I don't think that is much of an issue in practice. The main thing stopping us from doing it is just dedicating time for it! I believe we will handle it soon.

EmmanuelTheCoder commented 1 year ago

I get. There are bigger fishes to fry. In the meantime, an update about this error on the docs would be great until you find the time to build wasp statically.