bcbio / bcbio-nextgen

Validated, scalable, community developed variant calling, RNA-seq and small RNA analysis
https://bcbio-nextgen.readthedocs.io
MIT License
994 stars 353 forks source link

Can bcbio customize the user-defined GLIBC directory? #3718

Open lovebaboon1989 opened 1 year ago

lovebaboon1989 commented 1 year ago

Hi there, I'm running bcbio-nextgen pipeline on an old cluster server, and bcbio just reports an error of "GLIBC 2.16 and GLIBC 2.17 not found", I just checked our platform only has GLIBC up to 2.14 version. But I found in my own directory, there is a libc.so.6 file within which I found GLIBC_2.16 and GLIBC_2.17, so I just wonder whether and how I could let bcbio to use my own libc.so.6 file (or add my directory to the default environmental path)? I'm not the root user on the cluster server, so I can't delete or change the libc.so.6 file from the root/lib64/ directory. Many thanks!

rollf commented 1 year ago

Maybe you can simply set the LD_LIBRARY_PATH to the directory where the newer version is placed? Like here. (I'm guessing though).

lovebaboon1989 commented 1 year ago

Hi, thanks for your help, I tried that before but unfortunately it didn't work.

naumenko-sa commented 1 year ago

You could try to build a newer glibc and use LD_PRELOAD? https://www.jertype.com/upgrading-glibc/

lovebaboon1989 commented 1 year ago

Hi there, I tried using LD_PRELOAD but got the following errors: Strategy 1. LD_PRELOAD=/PHShome/wj092/miniconda3/pkgs/glibc-2.28-999/lib/libc.so.6 /data/klengellab/tools/bcbio/anaconda/bin/bcbio_nextgen.py

And I got the following error message: /data/klengellab/tools/bcbio/anaconda/bin/python: relocation error: /lib64/librt.so.1: symbol __vdso_clock_gettime, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference

Strategy 2. export LD_PRELOAD=/PHShome/wj092/miniconda3/pkgs/glibc-2.28-999/lib/libc.so.6 /data/klengellab/tools/bcbio/anaconda/bin/bcbio_nextgen

And I got the following error message: -bash: export: `/data/klengellab/tools/bcbio/anaconda/bin/bcbio_nextgen': not a valid identifier

The article in the link mentions linking the 'libc.so.6' to an executable app, but I'm not sure whether I did it in a correct way...

naumenko-sa commented 1 year ago

linking was to solve a timezone issue. your second example lacks .py (bcbio_nextgen.py)

lovebaboon1989 commented 1 year ago

Hi, I also tried adding '.py' in the second example: export LD_PRELOAD=/PHShome/wj092/miniconda3/pkgs/glibc-2.28-999/lib/libc.so.6 /data/klengellab/tools/bcbio/anaconda/bin/bcbio_nextgen.py But I got the same error message... -bash: export: `/data/klengellab/tools/bcbio/anaconda/bin/bcbio_nextgen.py': not a valid identifier

naumenko-sa commented 11 months ago

Yes, this error I can understand: export sets a variable (or many variables) in the current environment and in the child ones, i.e.

$ export A=5 B=6 C
$ echo $A
5
$ echo $B
6
$ echo $C

(C was set as an empty string variable)

However, if you are trying to set something which is not a valid variable name, i.e. a path to a program, bash errors out.

$ export A=5 ./somebin
bash: export: `./somebin': not a valid identifier

So, I am taking back the previous suggestion, you'd need to get PRELOAD working without export.

SN