关于 slrum 系统运算节点与登录节点lib不同导致折腾了一晚上的事情
起因:某个程序年前在登录节点测试通过后就放假没搞了,假期后重新开搞,把脚本什么的都整好,打算一键启动然后摸鱼,突然弹出报错信息,然后开始了漫长的debug...
run task
ImportError: libarchive.so.13: cannot open shared object file: No such file or directory
首先 ldd查看问题
ldd local/gdal/lib/libgdal.so
没有发现问题...
之后思考,猜测是在运算节点的问题,修改sbatch脚本输出 $PATH
$LD_LIBRARY_PATH
, 和登录节点的对比并无差别。
进入运算节点看看
srun -p cp1 -N 1 -n 1 --time=01:30:00 --pty /bin/bash
ldd发现一堆 not found, 而且都是在 /lib/aarch64-linux-gnu/
目录下的 ... ...

之后又回去登录节点查看/aarch64-linux-gnu
ls /lib/aarch64-linux-gnu | grep

... ...
写个脚本把运算节点缺少的动态库记录下来,然后cp到一个新的目录tmp_lib
, 并且把这个目录添加到$LD_LIBRARY_PATH
# 运算节点
ldd local/gdal/lib/libgdal.so | grep "not found" > not_found_libraries.txt
之后将not_found_libraries.txt
中的所有文件 copy 到tmp_lib
中,重复个几回,之后在运算节点测试task就通过。👏👏👏