【发布时间】:2023-03-31 05:52:01
【问题描述】:
R 需要比我的 CentOS 7 提供的更新版本的 HDF5,我尝试通过在“/opt/hdf5-1.12.0”中安装 HDF-Group 的预编译包和 CentOS7 的库存来弥补这一点HDF5 包。
但是任何在 R 中安装包的尝试都会失败:
> sessionInfo()
R version 3.6.0 (2019-04-26)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: CentOS Linux 7 (Core)
Matrix products: default
BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.6.0
此错误之前的所有步骤都很好,所有路径都正确
深入挖掘,我发现我显然无法动态加载该库,尽管它存在于引用路径中:
> Sys.setenv(LD_LIBRARY_PATH = \
"/usr/lib64/R/lib:/usr/lib/jvm/jre/lib/amd64/server:\
/usr/lib/jvm/jre/lib/amd64:/usr/lib/jvm/java/lib/amd64:\
/usr/java/packages/lib/amd64:/lib:/usr/lib:/opt/hdf5-1.12.0")
> dyn.load('/opt/hdf5-1.12.0/lib/libhdf5_hl.so.200')
Error in dyn.load("/opt/hdf5-1.12.0/lib/libhdf5_hl.so.200") :
unable to load shared object '/opt/hdf5-1.12.0/lib/libhdf5_hl.so.200':
libhdf5.so.200: cannot open shared object file: No such file or directory
实际上:
[root: ls /opt/hdf5-1.12.0/lib/libhdf5_hl.so.200
lrwxrwxrwx. root root unconfined_u:object_r:usr_t:s0 /opt/hdf5-1.12.0/lib/libhdf5_hl.so.200 ->; libhdf5_hl.so.200.0.0
[root: ls /opt/hdf5-1.12.0/lib/libhdf5_hl.so.200.0.0
-rwxr-xr-x. root root unconfined_u:object_r:usr_t:s0 /opt/hdf5-1.12.0/lib/libhdf5_hl.so.200.0.0
这里是 R 会话信息:
> sessionInfo()
R version 3.6.0 (2019-04-26)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: CentOS Linux 7 (Core)
Matrix products: default
BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.6.0
文件系统权限与成功用于存储在 /opt...下的所有其他自定义应用程序完全相同。
root$: ls -al /opt/hdf5-1.12.0/lib
total 17604
drwxr-xr-x. 2 root root 4096 Jul 25 20:53 .
drwxr-xr-x. 6 root root 104 Jul 25 20:53 ..
-rw-r--r--. 1 root root 83427 Jul 25 20:53 jarhdf5-1.12.0.jar
-rw-r--r--. 1 root root 9119168 Jul 25 20:53 libhdf5.a
-rw-r--r--. 1 root root 958770 Jul 25 20:53 libhdf5_cpp.a
lrwxrwxrwx. 1 root root 22 Jul 25 20:53 libhdf5_cpp.so -> libhdf5_cpp.so.200.0.0
lrwxrwxrwx. 1 root root 22 Jul 25 20:53 libhdf5_cpp.so.200 -> libhdf5_cpp.so.200.0.0
-rwxr-xr-x. 1 root root 534352 Jul 25 20:53 libhdf5_cpp.so.200.0.0
-rw-r--r--. 1 root root 470268 Jul 25 20:53 libhdf5_fortran.a
lrwxrwxrwx. 1 root root 26 Jul 25 20:53 libhdf5_fortran.so -> libhdf5_fortran.so.200.0.0
lrwxrwxrwx. 1 root root 26 Jul 25 20:53 libhdf5_fortran.so.200 -> libhdf5_fortran.so.200.0.0
-rwxr-xr-x. 1 root root 418648 Jul 25 20:53 libhdf5_fortran.so.200.0.0
-rw-r--r--. 1 root root 234954 Jul 25 20:53 libhdf5_hl.a
-rw-r--r--. 1 root root 13574 Jul 25 20:53 libhdf5_hl_cpp.a
lrwxrwxrwx. 1 root root 25 Jul 25 20:53 libhdf5_hl_cpp.so -> libhdf5_hl_cpp.so.200.0.0
lrwxrwxrwx. 1 root root 25 Jul 25 20:53 libhdf5_hl_cpp.so.200 -> libhdf5_hl_cpp.so.200.0.0
-rwxr-xr-x. 1 root root 19760 Jul 25 20:53 libhdf5_hl_cpp.so.200.0.0
lrwxrwxrwx. 1 root root 19 Jul 25 20:53 libhdf5_hl_fortran.a -> libhdf5hl_fortran.a
-rw-r--r--. 1 root root 184756 Jul 25 20:53 libhdf5hl_fortran.a
lrwxrwxrwx. 1 root root 20 Jul 25 20:53 libhdf5_hl_fortran.so -> libhdf5hl_fortran.so
lrwxrwxrwx. 1 root root 28 Jul 25 20:53 libhdf5hl_fortran.so -> libhdf5hl_fortran.so.200.0.0
lrwxrwxrwx. 1 root root 28 Jul 25 20:53 libhdf5hl_fortran.so.200 -> libhdf5hl_fortran.so.200.0.0
-rwxr-xr-x. 1 root root 165800 Jul 25 20:53 libhdf5hl_fortran.so.200.0.0
lrwxrwxrwx. 1 root root 21 Jul 25 20:53 libhdf5_hl.so -> libhdf5_hl.so.200.0.0
lrwxrwxrwx. 1 root root 21 Jul 25 20:53 libhdf5_hl.so.200 -> libhdf5_hl.so.200.0.0
-rwxr-xr-x. 1 root root 157344 Jul 25 20:53 libhdf5_hl.so.200.0.0
-rwxr-xr-x. 1 root root 604720 Jul 25 20:53 libhdf5_java.so
-rw-r--r--. 1 root root 5586 Jul 25 20:53 libhdf5.settings
lrwxrwxrwx. 1 root root 18 Jul 25 20:53 libhdf5.so -> libhdf5.so.200.0.0
lrwxrwxrwx. 1 root root 18 Jul 25 20:53 libhdf5.so.200 -> libhdf5.so.200.0.0
-rwxr-xr-x. 1 root root 4851592 Jul 25 20:53 libhdf5.so.200.0.0
lrwxrwxrwx. 1 root root 14 Jul 25 20:53 libsz.so -> libsz.so.2.0.0
lrwxrwxrwx. 1 root root 14 Jul 25 20:53 libsz.so.2 -> libsz.so.2.0.0
-rwxr-xr-x. 1 root root 50518 Jul 25 20:53 libsz.so.2.0.0
lrwxrwxrwx. 1 root root 13 Jul 25 20:53 libz.so -> libz.so.1.2.5
lrwxrwxrwx. 1 root root 13 Jul 25 20:53 libz.so.1 -> libz.so.1.2.5
-rwxr-xr-x. 1 root root 106903 Jul 25 20:53 libz.so.1.2.5
有人可以给我提示吗?
因为我的想法已经用完了......
【问题讨论】:
-
在
LD_LIBRARY_PATH中将/opt/hdf5-1.12.0替换为/opt/hdf5-1.12.0/lib/是否有助于解决问题? -
当您尝试加载
libhdf5_hl.so.200时,您是否注意到错误消息提到了文件libhdf5.so.200? -
你好 Gorka 和 Rui,谢谢你的参与。我什至明确地将 lib 部分添加到过去,但它并没有改变这种情况:我也觉得提到的对象不同,但我明白这是……像级联故障?这两个对象实际上都存在,如清单所示,我添加到我的帖子中。
标签: r shared-libraries centos7 hdf5