更新 libssh2 为我解决了这个问题
在下面,我将分享我安装 R 的经验,因为我遇到了类似的问题,在通过简单地更新 libssh2 包进行了相当多的鬼混之后解决了!
安装了 R 版本 3,一旦启动,它就会抛出关于无法加载共享对象的各种错误,每个错误都以魔术错误“未定义符号:libssh2_exit”结尾,我试图找出这些对象有什么问题,我试图使用 ldconfig 强制加载它们,但我所有的尝试都白费了!这些文件存在,而且它们看起来无论如何都没有损坏
{
[root@Centos6-vtl-sb ~]# R
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/usr/lib64/R/library/methods/libs/methods.so':
/usr/lib64/R/library/methods/libs/methods.so: undefined symbol: libssh2_exit
R version 3.3.3 (2017-03-06) -- "Another Canoe"
Copyright (C) 2017 The R Foundation for Statistical Computing
Platform: x86_64-redhat-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/usr/lib64/R/library/utils/libs/utils.so':
/usr/lib64/R/library/utils/libs/utils.so: undefined symbol: libssh2_exit
In addition: Warning message:
package "methods" in options("defaultPackages") was not found
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/usr/lib64/R/library/grDevices/libs/grDevices.so':
/usr/lib64/R/library/grDevices/libs/grDevices.so: undefined symbol: libssh2_exit
In addition: Warning message:
package "utils" in options("defaultPackages") was not found
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/usr/lib64/R/library/grDevices/libs/grDevices.so':
/usr/lib64/R/library/grDevices/libs/grDevices.so: undefined symbol: libssh2_exit
In addition: Warning message:
package "grDevices" in options("defaultPackages") was not found
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/usr/lib64/R/library/grDevices/libs/grDevices.so':
/usr/lib64/R/library/grDevices/libs/grDevices.so: undefined symbol: libssh2_exit
In addition: Warning message:
package "graphics" in options("defaultPackages") was not found
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/usr/lib64/R/library/methods/libs/methods.so':
/usr/lib64/R/library/methods/libs/methods.so: undefined symbol: libssh2_exit
In addition: Warning message:
package "stats" in options("defaultPackages") was not found
During startup - Warning message:
package "methods" in options("defaultPackages") was not found
> quit()
Save workspace image? [y/n/c]: n
[root@Centos6-vtl-sb ~]# ls /usr/lib64/R/library/methods/libs/methods.so
/usr/lib64/R/library/methods/libs/methods.so
[root@Centos6-vtl-sb ~]#
}
最后我决定检查libssh2版本,发现我的版本是现代版本,一旦我更新它,那些错误就消失了
{
[root@Centos6-vtl-sb ~]# yum whatprovides libssh2
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
* base: mirror.steadfast.net
* centosplus: mirror.steadfast.net
* elrepo: mirrors.ircam.fr
* epel: ftp.upjs.sk
* extras: mirror.steadfast.net
* updates: mirror.steadfast.net
libssh2-1.4.2-2.el6_7.1.x86_64 : A library implementing the SSH2 protocol
Repo : base
Matched from:
libssh2-1.4.2-2.el6_7.1.i686 : A library implementing the SSH2 protocol
Repo : base
Matched from:
libssh2-1.2.2-7.el6.x86_64 : A library implementing the SSH2 protocol
Repo : installed
Matched from:
Other : Provides-match: libssh2
[root@Centos6-vtl-sb ~]# rpm -qa | grep -i libssh
libssh2-1.2.2-7.el6.x86_64
[root@Centos6-vtl-sb ~]#
[root@Centos6-vtl-sb ~]#
[root@Centos6-vtl-sb ~]# yum update libssh2
.......
[root@Centos6-vtl-sb ~]# R
R version 3.3.3 (2017-03-06) -- "Another Canoe"
Copyright (C) 2017 The R Foundation for Statistical Computing
Platform: x86_64-redhat-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
>
> quit()
Save workspace image? [y/n/c]: y
[root@Centos6-vtl-sb ~]#
}
谢里夫