Deno on CentOS 7: 'GLIBC_2.18' not found - centos7

How to run Deno on Webfaction's CentOS 7 (64-bit)?
It gives an error:
deno: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by deno)

Current Deno release 1.0.0 (latest today) is not compatible with CentOS 7.
I tried on the latest distribution released on 27 April 2020:
$ cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
This issue 7 GLIBC_2.18 not found suggests that there should be a way to solve this problem, but the thread seems to be abandoned for a year.
As of today Deno requires GLIBC_2.18, but unfortunately CentOS 7 is running 2.17, an old version of the gclib which is not enough:
$ ldd --version
ldd (GNU libc) 2.17
If you need to run Deno on CentOS you'll need to use CentOS 8. Tested it and it works.
From How to fix “/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found”:
That means the program was compiled against glibc version 2.14, and it
requires that version to run, but your system has an older version
installed. You'll need to either recompile the program against the
version of glibc that's on your system, or install a newer version of
glibc (the "libc6" package in Debian).
It will not happen for CentOS 7. From glibc_2.18 on Centos 7:
No. Never going to happen. We ship glibc 2.17 as part of CentOS 7 and
that will never change. It's part of the basic RHEL standards that
stuff like this does not change within a major version.
I wouldn't count on Deno — which is a new technology — to backport with old compilers. Consider upgrading your servers to CentOS 8.

For me, I have no way to upgrade the OS as it's managed by IT department. Seems there's a workaround. I found the link on the following thread does work.
https://github.com/denoland/deno/issues/1658#issuecomment-632986792

Related

Install older gcc

I have Fedora 31 installed which has gcc 9.3.1 installed into it.
I want to install gcc 4.8.5 on my machine.
Tried compiling the gcc by downloading tar file from gnu website, but facing lot of compilation errors.
Can anone help me with the installation.
Thanks in advance.
The compiler you are looking for was in a Fedora release many many years ago and will be hard to reasonably get going on a current Fedora Linux system.
However, it is the compiler in RHEL 7, and therefore in CentOS. Your best bet is to install one of those operating systems in a virtual machine. (You can get RHEL for individual use through the RH Developer Program.) In Fedora Workstation, the Boxes program makes it easy to set up such a VM.
You could also use a docker or podman container, but that will take a little more understanding.

Can't run uWebSockets on CentOS 7 with glibc-2.17

Error: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by /root/workspace/backend/node_modules/uWebSockets.js/uws_linux_x64_72.node)
Latest glibc version for CentOS 7 is 2.17.
I know that latest version for CentOS 8 is 2.30 but I can't upgrade, because my VDS depends on host's machine kernel (which is very old).
Is there any way to run/compile it with glibc-2.17 or update glibc?
EDIT:
My kernel version is 2.6.32-042stab141.3.
I can build it and install to /opt/glibc-2.18 without errors, but when I trying to use this I see Segmentation fault error.
P.S. I builded it successfully on Fedora 23 with same OpenVZ kernel.
I have built a custom binary (and tutorial) that will solve your exact problem.
Read it here: https://github.com/dominicklee/uWebSockets.js-for-Centos7
Is there any way to run/compile it with glibc-2.17
Yes: just do it (download source, build on your target machine, profit).
or update glibc?
You didn't say what your "very old kernel" is, but if GLIBC-2.18 supports it, then yes, you can update GLIBC.
However, any mistake you make in the process may make your system un-bootable. See this answer.

GLIBCXX_3.4.26 Not found

I am trying to build open embedded project. But it shows some error like
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: GLIBCXX_3.4.26 not found
How can i install GLIBCXX_3.4.26 in Ubuntu 16.04 ?
I believe the object you are trying to use was compiled with a fairly recent version of GCC 9 with this bug fixed. This GCC version has not yet been released.
You need to recompile it with the Ubuntu system compiler, or ask the Ubuntu compiler people to backport this fix into the Ubuntu 16.04 system compiler (which seems fairly unlikely to happen at this point).
I solved the problem by 2 steps:
1 Install a Anaconda3
2 Copy the file libstdc++.so.6.0.26 to path '/usr/lib/x86_64-linux-gnu', then create a soft link.
I worte the detail commands here.

MinGW: How to upgrade GCC/G++ to version 5 on Windows?

I have MinGW installed on my computer and I just found out that my GCC/G++ has problems compiling newer C++ standards. So I want to upgrade from 4.8.1-4 to the latest version (5.3 at the time of writing this).
The MinGW Installation Manager doesn't install a newer version than 4.8.1-4, so I'll probably have to do it somewhat manually. But how? I heard that Cygwin might be able to do it, but I think MinGW and Cygwin would interfere with each other (environment variables). So I'd rather not do it that way.
MSYS2 might be a good answer to your needs. It has cygwin-like environment together with mingw3/mingw64 environment. And GCC version is 5.3
Link: https://msys2.github.io/

Will MySQL Client Library for glibc2.5 work on Linux box with glibc version < 2.5?

If I want to package my application which uses MySQL C Library (libmysqlclient.so) with the binary which is compiled with glibc2.5 and ship it, Will it work with older linux boxes with linux 2.3 or so installed ?? Or the behaviour is totally indefinite ?
Linux and glibc are two different things. In your title you are stating that the glibc version on your server is 2.5 or less. However, in your question, you are stating that you have Linux 2.3. In your question you don't actually state what version of glibc is on your Linux server.
You could, in theory, have glibc version 4 on a Linux kernel version. In reality, glibc typically requires some version of the kernel in order to be installable. Looking at the release notes for glibc 2.5 it seems that the minimum kernel version is 2.6.0 so it is very unlikely that your server has glibc 2.5 installed.
Either way, the real question is: what version of glibc is on your Linux server. If your Linux server has an older version than glibc2.5 you will not be able to run anything that has been built against something newer.
So, in summary, no, you will probably not be able to run the MySQL C library.
Now, all that being said, it seems to me very unlikely that you would have a Linux server with Linux 2.3 installed. Not only is 2.3 quite old (12-13 years by now), it is also a development release of the Linux kernel. If, in fact, you are saying that your Linux servers have glibc 2.3 then you should check the kernel version. If the kernel version is at least 2.6.0 (released in 2004) then you might be able to upgrade glibc to 2.5 and thus run the MySQL library.