Node: Nodejs v7.10.1 broken on CentOS 5. Error: "node: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by node)"

Created on 12 Jul 2017  路  11Comments  路  Source: nodejs/node

  • Version: v7.10.1
  • Platform: CentOS 5
  • Subsystem:

Version v.7.10.1 no longer works on CentOS 5.
Nodejs 7 versions have been working up until 7.10.0.

$ nvm use 7.8.0
Now using node v7.8.0 (npm v4.2.0)
$ node -v
v7.8.0
$ nvm use 7.9.0
Now using node v7.9.0 (npm v4.2.0)
$ node -v
v7.9.0
$ nvm use 7.10.0
Now using node v7.10.0 (npm v4.2.0)
$ node -v
v7.10.0
$ nvm use 7.10.1
Now using node v7.10.1 (npm v)
$ node -v
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.10' not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.3' not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by node)
$
build

All 11 comments

@nodejs/build @nodejs/release

I think you should install glibc?

@XadillaX A new version of glibc should not be a requirement for a security (patch level) release.

@XadillaX A new version of glibc should not be a requirement for a security (patch level) release.

@ronkorving In principle, I agree. However...see discussion at https://github.com/nodejs/node/pull/12672. CentOS 5 went EOL (from the vendor) in March. If I'm reading that conversation right, it means that new releases of Node.js, even patch level ones, are not guaranteed to run there anymore.

The thing is though there aren't going to be many more v7.x releases (v7.10.1 might be the last one even), so I don't see how it could hurt to just use the same glibc throughout v7.x.

The thing is though there aren't going to be many more v7.x releases (v7.10.1 might be the last one even), so I don't see how it could hurt to just use the same glibc throughout v7.x.

I agree, but I'm not the one doing releases and maintaining the infrastructure, so I feel like my opinion counts for less because there may be issues I am not sensitive to. Moreover, 7.x isn't really the issue. It's 6.x, which will be supporting until April 2019. I suspect the breakage/upgrade/whatever-you-want-to-call-it happened there too.

This is unexpected and likely frustrating for users. At a minimum, we probably should find a place to repeat the text added in https://github.com/nodejs/node/pull/12672 where it will be more visible. Maybe the README.md file. The README file refers to that file for the list of supported platforms, but it is arguably kind of hidden by virtue of being in the "Building Node.js" section. Like, @tokyowizard probably didn't think to look under "Building Node.js" and why would they? They're not building Node.js and the previous downloaded version worked just fine. From the end user perspective, why wouldn't and shouldn't this patch release be expected to work? We should put the information (that it might not work) somewhere that they might find it when they go looking for it.

That information should probably have been in the "notable changes" section of the release post.

@Trott Yeah, I think for most people a new Node release is just an nvm install away. I would expect new versions to run. Reading release notes may come later.

Speaking of which, this is where I would expect an explicit mention when a platform (or glibc version) is no longer supported. It's the first place where I as a user would look. (update: Ah, @targos just made the same point, I didn't hit refresh in my browser yet :))

So _technically_ CentOS 5 hasn't been supported since Node 4. However I don't think we make this in any way visible (it's only in BUILDING.md) so I don't think we can reasonably expect users to see this.

In this situation I believe this is a bug with the release scripts, @rvagg added this crazy if expression to run on CentOS 5 For Node 7 and below, and CentOS 6 for Node 8 and above:

if [[ \
  $OSTYPE =~ linux && \
  $ARCH =~ x86_64|x64|i386|x86|ia32 && \
  ( \
    ( ${NODE_VERSION:0:1} -gt "7" && ! $NODE_LABELS =~ post-8-release ) || \
    ( ${NODE_VERSION:0:1} -lt "7" && $NODE_LABELS =~ post-8-release ) \
  ) \
]]; then
  echo "Not building Node.js ${NODE_VERSION:0:1} on $NODE_NAME"
  exit 0
fi

I'm pretty sure it should be -le not -lt. In fact I'm not sure how we have a linux build at all.

cc/ @nodejs/build , can anyone confirm that my suggestion is correct?

@nodejs/build - please see @gibfahn's comment. I'm closing this out as the bug report is against v7.x and that's out of support.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Brekmister picture Brekmister  路  3Comments

mcollina picture mcollina  路  3Comments

willnwhite picture willnwhite  路  3Comments

danielstaleiny picture danielstaleiny  路  3Comments

stevenvachon picture stevenvachon  路  3Comments