Version `GLIBC_2.29' not found error while running in pipeline
Hi,
I am getting the below error, while running in the pipeline
npm error prebuild-install warn install /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found
Version of better-sqlite3 in package-lock is 11.2.1.
Note: The pipeline is failing for past 6 days.
The error message states that your OS does not have the required GLIBC. What OS are you running the pipeline on?
This is happening running inside the node:lts-buster docker image.
npm error code 1
npm error path /incidents-app/node_modules/better-sqlite3
npm error command failed
npm error command sh -c prebuild-install || node-gyp rebuild --release
npm error make: Entering directory '/incidents-app/node_modules/better-sqlite3/build'
npm error TOUCH ba23eeee118cd63e16015df367567cb043fed872.intermediate
npm error ACTION deps_sqlite3_gyp_locate_sqlite3_target_copy_builtin_sqlite3 ba23eeee118cd63e16015df367567cb043fed872.intermediate
npm error TOUCH Release/obj.target/deps/locate_sqlite3.stamp
npm error CC(target) Release/obj.target/sqlite3/gen/sqlite3/sqlite3.o
npm error rm -f Release/obj.target/deps/sqlite3.a Release/obj.target/deps/sqlite3.a.ar-file-list; mkdir -p `dirname Release/obj.target/deps/sqlite3.a`
npm error ar crs Release/obj.target/deps/sqlite3.a @Release/obj.target/deps/sqlite3.a.ar-file-list
npm error COPY Release/sqlite3.a
npm error CXX(target) Release/obj.target/better_sqlite3/src/better_sqlite3.o
npm error rm ba23eeee118cd63e16015df367567cb043fed872.intermediate
npm error make: Leaving directory '/incidents-app/node_modules/better-sqlite3/build'
npm error prebuild-install warn install /lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /incidents-app/node_modules/better-sqlite3/build/Release/better_sqlite3.node)
npm error gyp info it worked if it ends with ok
npm error gyp info using [email protected]
npm error gyp info using [email protected] | linux | arm64
npm error gyp info find Python using Python version 3.7.3 found at "/usr/bin/python3"
npm error gyp http GET https://nodejs.org/download/release/v20.15.0/node-v20.15.0-headers.tar.gz
npm error gyp http 200 https://nodejs.org/download/release/v20.15.0/node-v20.15.0-headers.tar.gz
npm error gyp http GET https://nodejs.org/download/release/v20.15.0/SHASUMS256.txt
npm error gyp http 200 https://nodejs.org/download/release/v20.15.0/SHASUMS256.txt
npm error gyp info spawn /usr/bin/python3
npm error gyp info spawn args [
npm error gyp info spawn args '/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
npm error gyp info spawn args 'binding.gyp',
npm error gyp info spawn args '-f',
npm error gyp info spawn args 'make',
npm error gyp info spawn args '-I',
npm error gyp info spawn args '/incidents-app/node_modules/better-sqlite3/build/config.gypi',
npm error gyp info spawn args '-I',
npm error gyp info spawn args '/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
npm error gyp info spawn args '-I',
npm error gyp info spawn args '/root/.cache/node-gyp/20.15.0/include/node/common.gypi',
npm error gyp info spawn args '-Dlibrary=shared_library',
npm error gyp info spawn args '-Dvisibility=default',
npm error gyp info spawn args '-Dnode_root_dir=/root/.cache/node-gyp/20.15.0',
npm error gyp info spawn args '-Dnode_gyp_dir=/usr/local/lib/node_modules/npm/node_modules/node-gyp',
npm error gyp info spawn args '-Dnode_lib_file=/root/.cache/node-gyp/20.15.0/<(target_arch)/node.lib',
npm error gyp info spawn args '-Dmodule_root_dir=/incidents-app/node_modules/better-sqlite3',
npm error gyp info spawn args '-Dnode_engine=v8',
npm error gyp info spawn args '--depth=.',
npm error gyp info spawn args '--no-parallel',
npm error gyp info spawn args '--generator-output',
npm error gyp info spawn args 'build',
npm error gyp info spawn args '-Goutput_dir=.'
npm error gyp info spawn args ]
npm error gyp info spawn make
npm error gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
npm error g++: error: unrecognized command line option '-std=c++20'; did you mean '-std=c++2a'?
npm error make: *** [better_sqlite3.target.mk:118: Release/obj.target/better_sqlite3/src/better_sqlite3.o] Error 1
npm error gyp ERR! build error
npm error gyp ERR! stack Error: `make` failed with exit code: 2
npm error gyp ERR! stack at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:209:23)
npm error gyp ERR! System Linux 5.10.104-linuxkit
npm error gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--release"
npm error gyp ERR! cwd /incidents-app/node_modules/better-sqlite3
npm error gyp ERR! node -v v20.15.0
npm error gyp ERR! node-gyp -v v10.1.0
npm error gyp ERR! not ok
Well, Debian 10 ships with GLIBC 2.28. Also it reached it's EOL 2 years ago.
So you can either try to somehow install GLIBC 2.29 within the container together with the required tool chain to build the native part of the library, or just switch to a supported and maintained version of Debian.
Same issue I got in my Next.js project. I had to update to node 20.x in Vercel
Beside the missing GLIBC 2.29 or higher, what is an issue of the used OS, [email protected] requires a C++20 compatible compiler, due to the requirements of V8. As some older compilers don't know c++20 but only c++2a as a compiler level, this would requires changes in the whole project setup and I don't think building workarounds for outdated compilers is something desirable.
So you can either try to use an older (prebuilt) version of better-sqlite3, that does not require GLIBC 2.29 or higher or C++20 when compiling on demand, or you just update the runtime environments to up to date libraries if possible. Otherwise it would be up to you, to setup the required compilation toolchain within the target runtime / container.
For future reference – you can set Node version either:
- Project Settings > General > Node.js Version, or
- Put
"engines": {"node": "20.x" },to package.json