R:Ubuntu中的软件包安装问题

时间:2017-12-14 14:12:33

标签: r ubuntu install.packages

我在Ubuntu 16.04上运行(在联想ThinkPak T450上)。我安装了R版本3.4.1,按照说明here通过Rbloggers安装。

从这里开始,我想开始安装软件包,但是如果我从命令行运行R而没有root权限,我就无法访问CRAN镜像。也就是说,当我运行install.packages('dplyr')(或任何install.packages('blah'))时,我收到以下错误

--- Please select a CRAN mirror for use in this session ---
Error: .onLoad failed in loadNamespace() for 'tcltk', details:
  call: fun(libname, pkgname)
  error: Can't find a usable init.tcl in the following directories: 
    /opt/anaconda1anaconda2anaconda3/lib/tcl8.5 ./lib/tcl8.5 ./lib/tcl8.5 ./library ./library ./tcl8.5.18/library ./tcl8.5.18/library

出现该错误,不会出现CRAN镜像对话框,因此无法安装软件包。注意:当我以root权限启动R(即,通过> sudo R启动)时,不会发生此错误,但我不想以root身份安装软件包。

预先感谢您提供帮助,我们可以发送给您!

编辑:指定repo也会导致错误(在下面的文件路径中,我用user-name替换了我的用户名)。

例如:install.packages('Rcpp',repos='http://cran.us.r-project.org')终止于:

installing to /home/user-name/R/x86_64-pc-linux-gnu-library/3.4/Rcpp/libs
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
Error: package or namespace load failed for ‘Rcpp’ in dyn.load(file, DLLpath = DLLpath, ...):
 unable to load shared object '/home/user-name/R/x86_64-pc-linux-gnu-library/3.4/Rcpp/libs/Rcpp.so':
  /home/user-name/R/x86_64-pc-linux-gnu-library/3.4/Rcpp/libs/Rcpp.so: undefined symbol: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/home/user-name/R/x86_64-pc-linux-gnu-library/3.4/Rcpp’

例如,install.packages('dplyr',repos='http://cran.us.r-project.org')终止于:

installing to /home/user-name/R/x86_64-pc-linux-gnu-library/3.4/dplyr/libs
** R
** data
*** moving datasets to lazyload DB
** inst
** preparing package for lazy loading
Error in dyn.load(file, DLLpath = DLLpath, ...) : 
  unable to load shared object '/home/user-name/R/x86_64-pc-linux-gnu-library/3.4/bindrcpp/libs/bindrcpp.so':
  /home/user-name/anaconda3/lib/R/bin/exec/../../lib/../.././libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/user-name/R/x86_64-pc-linux-gnu-library/3.4/bindrcpp/libs/bindrcpp.so)
ERROR: lazy loading failed for package ‘dplyr’
* removing ‘/home/user-name/R/x86_64-pc-linux-gnu-library/3.4/dplyr’

1 个答案:

答案 0 :(得分:1)

正如DirkEddelbuettel在评论中指出的那样,问题是Anaconda和R的混合。解决这个问题:

  • 我首先查看> conda list并意识到软件包是r-base,从Anaconda卸载了R软件包;因此运行> conda remove r-base

  • 接下来,通过查看> which R的输出,很明显我们仍在尝试从../anaconda3/bin/..目录执行。我怀疑有一种快速的方法可以通过导出或bashrc修改(或类似的东西)来改变它,但对我来说,最快的解决方法是运行> sudo apt-get install r-base r-base-dev,它已经花费了0.2秒,因为它们已经是已安装,但它确实影响了系统查找到的相应目录,对我来说这是/usr/bin/R/

从这里我已经能够安装我需要的一切。

注意:回想一下,我怀疑当我通过conda安装rpy2时发生了“混音”。