我已经在网上转了好几个小时了,所以我放弃了,需要向专业人士请教。
我正在尝试在Ubuntu服务器上的本地文件夹中安装R的更新版本。我需要一个特定的包(Phangorn),但是R的系统范围副本太旧了,我不能升级它,因为它会破坏太多其他人的依赖(而且我不是管理员)。
因此,我下载了R-devel的最新版本,并遵循了这些优秀的说明(http://pj.freefaculty.org/blog/?p=315)。我不得不安装我自己的zlib、liblzma (XZ)和pcre (现在在~/packages中)的副本。我似乎不需要做curl和bzip2。这造成了足够多的问题,但在经过多次修改之后,我成功地编译了R。
但是,当我尝试在其中安装Phangorn时,它给出了以下错误:
/usr/bin/ld: cannot find -lgfortran
/usr/bin/ld: cannot find -lgfortran
collect2: error: ld returned 1 exit status
make: *** [igraph.so] Error 1
ERROR: compilation failed for package ‘igraph’
* removing ‘/home/wms_joe/bin/R-devel/library/igraph’
ERROR: dependency ‘igraph’ is not available for package ‘phangorn’
* removing ‘/home/wms_joe/bin/R-devel/library/phangorn’
The downloaded source packages are in
‘/tmp/RtmpahSdck/downloaded_packages’
Updating HTML index of packages in '.Library'
Making 'packages.html' ... done
Warning messages:
1: In install.packages("phangorn") :
installation of package ‘igraph’ had non-zero exit status
2: In install.packages("phangorn") :
installation of package ‘phangorn’ had non-zero exit status所以据我所知,Phangorn依赖于igraph,而igraph依赖于gfortran,而R找不到它。
它看起来和这个线程中详细描述的问题是一样的:Building R package getting error "ld: cannot find -lgfortran "
但是所有的解决方案似乎都需要软链接,因此需要sudo,这完全违背了我进行本地安装的意义:
我在这里有什么选择?如果我为我自己的目录下载lgfortran (假设这已经解决了这个问题),我应该把它链接到哪里?
发布于 2017-04-12 01:39:55
这些都不是“优秀的指令”,因为它们是针对RHEL6的,而不是针对Ubuntu的。所以你有一个阻抗不匹配。
在Ubuntu上,您最快的选择(如果您有src-dep依赖项)是
sudo apt-get build-dep r-base第二个最快的方法是查看包元数据源代码,从debian/control读取构建依赖项(但似乎没有在线副本)。
至于phanghorn,您也可以尝试下载它的源代码,然后编辑掉对特定R版本的要求,看看会发生什么--有时这只是一些小插曲的更改,根本不会影响您的可用性。
最后,由于缺少gfortran组件而无法构建igraph,因此构建失败。如果可以的话,安装与您的编译器版本相对应的libgfortran-*-dev包--并且安装r-base-dev应该可以保证它。
最后但并非最不重要的一点是,考虑像Docker这样的工具来运行已安装程序的本地变体。
https://stackoverflow.com/questions/43352580
复制相似问题