Using NodeJS 18 in AWS Amplify on Amazon Linux 2 fails - node.js

Trying to upgrade an existing React app running on AWS Amplify from node v16 to v18
The image used is the provided Amazon Linux 2
Expected it to install node 18 on the machine it spun up and build the application, since this is the LTS version
Here is the error I get in the build process:
2022-11-15T19:19:02.924Z [WARNING]: node: /lib64/libm.so.6: version GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version GLIBC_2.28' not found (required by node)

The same problem happened to me, I fixed it by adding a custom image in the build config.
You can see the steps to add a custom image in the following link
The image that worked for me was the following:
public.ecr.aws/t7o4u3y2/node-18.2.0:latest

Amazon Linux 2 includes Glibc 2.26 or under. To use a higher glibc version, you need to consider other AMI, for example Amazon Linux 2022 (al2022-ami) as it includes glibc 2.34.
You can also revert back to Node.js 16 as it uses a lower version of Glibc.

Thanks for opening this issue. Amazon Linux 2 doesn't support the right GLIBC version at the moment, we're coordinating internally to get that updated. As #saharl-neosec mentions, you can provide a custom docker image until we fully support it:
https://github.com/aws-amplify/amplify-hosting/issues/3109

Related

Deploying Node.js app with gdal | AWS Elastic Beanstalk

I'm trying to deploy a node.js app but get stuck with an error about missing dependencies for gdal.
Error: /lib64/libm.so.6: version 'GLIBC_2.27' not found (required by /var/app/current/node_modules/gdal/lib/binding/gdal.node)
How would I go about installing this required dependency?
gdal-async on npm explicitly supports AWS.
As its author, I will be happy to help you if it doesn't work - you can create an issue on github.
I don't know what you call gdal.js.
There is the original gdal by Mapbox and Natural Atlas that is not actively developed anymore.
There is gdal-next on which I used to work a little bit which has a current version of GDAL but it is not very active either.
There is my gdal-async which is the only one that is currently active.
And there is an Emscripten port that is pure JS and runs in the browser, but it is stalled at GDAL 2.
Supporting AWS is simply a matter of compiling with the right libraries.

node-webcrypto-ossl, GLIBC_2.32 not found, Manjaro OS

When I try to run an application that uses node-webcrypto-ossl node module I get the error:
Error: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found.
Obviously node-webcrypto-ossl requires an older version of glibc.
The version of glibc installed on my machine is 2.33-5. I've tried downgrading my glibc but ended up with a broken system (fixed it already).
How do I resolve the issue?
Obviously node-webcrypto-ossl requires an older version of glibc.
No. GLIBC is backwards compatible: applications built against older version continue to run fine on newer GLIBC versions.
Your problem is the opposite: you have an application linked against GLIBC_2.32 trying to run against an older version of GLIBC.
The version of glibc installed on my machine is 2.33-5
The application is not using that version; it's using some other GLIBC.
The problem was that I was trying to run my app in docker ...
That's one way running against older than expected GLIBC could happen.

Unable to access gitlab web UI after upgrading to 14.12

I have gitlab omnibus install on a linux debian server. Yesterday, the installation was upgraded to 14.12 (from 14.11) - and now I'm unable to access the web UI. On investigation, it seems that the issue was caused by a conflict of versions of ruby and passenger. I'm using an external nginx on the server, as the tail server has other virtual hosts. I have the latest version of passenger installed - 6.0.9. Gitlab latest version comes with ruby version 2.7.2 - but passenger 6.0.9 has no support for that version, it support 2.7.3 instead.
I downgraded passenger to version 6.0.8 - now the passenger_native error is resolved (by direct downloading exact version). However I'm getting the following error in the log:
Could not spawn process for application /opt/gitlab/embedded/service/gitlab-rails:
A timeout occurred while starting a preloader process.
There's not much more info. There is one question I found on SO from years ago - this one - with the same error - but it's not solved. I'm in no position to install/run docker on the server.
How can I get gitlab UI to show?
Note: this is cross-posted to ServerFault here.

Should my Docker base image variants match my underlying host OS?

For example, I have a server running Ubuntu 16.x that hosts a set of Docker containers that are running FROM node:x.x.x-stretch. The stretch variant is built off of Debian Jessie (the same version Ubuntu 16.x is built off of).
Is there any reason I shouldn't be using the latest Node image (node:x.x.x-buster), where -buster is built off of Debian 10?
From what I understand, this means that my node image would be more up-to-date / supported longer at the small cost of having less shared with the underlying host OS. Am I missing anything?
The main reason why people don't automatically update to the latest version, is due to package dependencies. It's difficult to keep track of what packages are dependent on what version of node, let alone what version of other packages.

Update my AWS EB Node.js to version 6.0.0

Is there anyway to push my EB instance to run a later node.js version, the docs here say that the supported platform version is only 4.4.3 but I need to run 6.0.0
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.html#concepts.platforms.nodejs
According to the official documentation it seems that only some versions are supported on Elastic Beanstalk (mainly 4.4.3 / 0.12.6 but not 6.0.0). You can still choose between these versions in the interface but not outside this list.
The only solution I see for now is to deploy your own stack directly on an EC2 instance without using the Elastic Beanstalk service.

Resources