sequenceTubeMap icon indicating copy to clipboard operation
sequenceTubeMap copied to clipboard

GLIBC version incompatibility

Open guo23e opened this issue 4 months ago • 5 comments

Dear Authors, The current version of the software requires GLIBC-2.27. I wonder if you have any previous versions available, preferably one that depends on GLIBC-2.25. Your help would be greatly appreciated.

guo23e avatar Aug 18 '25 12:08 guo23e

The tube map itself is in JavaScript and requires NodeJS to run, but doesn't directly depend on or target a particular version of glibc itself.

If you aren't able to get a NodeJS binary that works on your version of glibc, you might need to build it from source.

The tube map calls into a vg binary. There are static vg binaries for Linux available on the vg releases page which are static executables and do not dynamically link against your installed glibc, so they should run regardless of the glibc version you have.

Where a glibc version dependency might crop up is in the hundreds of transitive dependencies that the Sequence Tube Map has, like almost any NodeJS project. It's possible one of those dependencies thinks it can download and run a binary executable and assumes a particular glibc version.

Do you have an error message or other evidence of the tube map failing to run for you that implicates the glibc version as the problem? That might indicate whether the binary that needs a newer glibc is in fact coming from a dependency, and, if so, which dependency it is that is the problem.

adamnovak avatar Aug 20 '25 14:08 adamnovak

The tube map itself is in JavaScript and requires NodeJS to run, but doesn't directly depend on or target a particular version of glibc itself.

If you aren't able to get a NodeJS binary that works on your version of glibc, you might need to build it from source.

The tube map calls into a binary. There are static binaries for Linux available on the vg releases page which are static executables and do not dynamically link against your installed glibc, so they should run regardless of the glibc version you have.vg``vg

Where a glibc version dependency might crop up is in the hundreds of transitive dependencies that the Sequence Tube Map has, like almost any NodeJS project. It's possible one of those dependencies thinks it can download and run a binary executable and assumes a particular glibc version.

Do you have an error message or other evidence of the tube map failing to run for you that implicates the glibc version as the problem? That might indicate whether the binary that needs a newer glibc is in fact coming from a dependency, and, if so, which dependency it is that is the problem.

Hello 7.lnstall the version of NodeJS that the Sequence Tube Map asks for in its .nvmrc file. As of this writing that is 18.7.0. You can install the right version automatically with : nvm In my execution of 9,Install the exact versions of NPM dependencies that the Sequence Tube Map is tested against: Note that this is using npm, not nvm as in the previous step. input:npm ci The following error will appear: node: /lib64/libm.so.6: version GLIBC_2.27' not found (required by node) node: /lib64/libc.so.6: version GLIBC_2.25' not found (required by node) node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node) The current version of the software requires NodeJS version 18.7.0, and NodeJS of 18.7.0 requires a newer GLIBC (GNU C library) version (2.25, 2.27, 2.28).

guo23e avatar Aug 21 '25 09:08 guo23e

OK, that makes sense.

It looks like we bumped the supported NodeJS version from 10 to 18 in #220, so if you git checkout de3be1da04d293f1103bc164b0725c26ed5893c3, which is the commit before that merged, and try to follow the README.md in the source tree at that version, you might be able to get the older version working.

But we bumped the Node version because our dependencies were dropping support for old Node. So I think you would definitely need to npm ci to use the lock file, no matter what the README recommends, because npm install might be impossible now.

Another approach might be to try using the current Tube Map code with whatever the latest version of NodeJS is that is packaged for your platform. I don't know that there's anything in Node 18 that's specifically needed; you might be able to get Node 16 for your platform and it might work just fine.

You could try building NodeJS from source against your system's installed glibc, since the glibc version requirement is I think a property of the compiled binary that nvm is fetching and not of the project itself. You would clone the NodeJS repo, git checkout v18.7.0 or similar, and follow the BUILDING.md instructions. But then you need to satisfy Node's prerequisites for compiler version and so on, which might just turn into doing Linux From Scratch and building your own whole alternative userspace.

There's also a Docker-based way to run the tube map, but we don't update the prebuilt images for that and the documentation might need to be changed to port 3001 instead of 3000 now. But that might be able to work on a system that's very old but still provides either Docker or Singularity.

adamnovak avatar Aug 21 '25 14:08 adamnovak

Actually @guo23e you should try the Node builds from the NodeJS Unofficial Builds project. They have a linux-x64-glibc-217 flavor of Node builds which might be targeting an old enough glibc for you (check ldd --version). They don't have it for Node 18.7, but they have it for 18.20.8, which should be close enough to work.

https://unofficial-builds.nodejs.org/download/release/v18.20.8/node-v18.20.8-linux-x64-glibc-217.tar.xz

Try installing the node binary from there as the node on your $PATH, not using NVM, and then installing and running the tube map. (You might want to consult their installation instructions).

adamnovak avatar Aug 21 '25 14:08 adamnovak

实际上,您应该尝试从 NodeJS 非官方构建项目中构建节点。他们有一种 Node 版本的风格,可能针对的是足够旧的 glibc(检查)。他们没有用于节点 18.7 的它,但他们有用于 18.20.8 的它,这应该足够接近以工作。linux-x64-glibc-217``ldd --version

https://unofficial-builds.nodejs.org/download/release/v18.20.8/node-v18.20.8-linux-x64-glibc-217.tar.xz

尝试从那里安装节点二进制文件,作为 ,不使用 NVM,然后安装并运行管映射。(您可能需要查阅他们的安装说明)。node``$PATH

It has been installed, thank you very much.

guo23e avatar Sep 06 '25 07:09 guo23e