当安装程序运行加载测试时,我在尝试安装时readxl或haven在R(tidyverse编译后的两个依赖项)中不断收到以下错误:
** testing if installed package can be loaded
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '<my_lib_Path>/readxl/libs/readxl.so':
<my_lib_path>/readxl/libs/readxl.so: undefined symbol: libiconv
Error loading failed
Run Code Online (Sandbox Code Playgroud)
我有libiconv.so一个本地的lib路径(不适用于R软件包),它包含LD_LIBRARY_PATH在我的R会话中我已经验证了Sys.getenv("LD_LIBRARY_PATH")该目录.为什么R的动态库加载器不能找到这个共享对象? 是否有一个不同的R特定环境变量我需要定义以使R中的动态库加载器搜索我的本地lib路径?
请注意,这不是R库路径的问题,而是R包具有的非R依赖性.如果我正在编译和链接C++代码,gcc将使用ld,从而LD_LIBRARY_PATH跟踪动态依赖项.R似乎并不尊重这种相当常见的方法,而且我似乎无法找到有关如何管理这些更细粒度的依赖性问题的任何文档.
!> sessionInfo()
R version 3.3.3 (2017-03-06)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: CentOS Linux 7 (Core)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C …Run Code Online (Sandbox Code Playgroud) 所以我无法加载 ROracle。我确实对此很陌生,因此任何信息都值得赞赏,任何有关提供哪些进一步信息的信息也会有所帮助。
> library(ROracle)
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '~/R/x86_64-pc-linux-gnu-library/2.14/ROracle/libs/ROracle.so':
libclntsh.so.11.1: cannot open shared object file: No such file or directory
Error: package/namespace load failed for ‘ROracle’
Run Code Online (Sandbox Code Playgroud)
ROracle.so 正是它所说的位置。libclntsh.so.11.1 可以在/usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1. 这是结果.libPaths:
> .libPaths()
[1] "/home/nguiller/R/x86_64-pc-linux-gnu-library/2.14" "/usr/local/lib/R/site-library" "/usr/lib/R/site-library"
[4] "/usr/lib/R/library" "/usr/lib/rstudio/R/library"
Run Code Online (Sandbox Code Playgroud)
我的 .Renviron 文件
LD_LIBRARY_PATH="/usr/lib/oracle/11.2/client64/lib:/home/nguiller/Downloads/instantclient_11_2"
ORACLE_HOME="/usr/lib/oracle/11.2/client64/:/home/nguiller/Downloads/instantclient_11_2"
OCI_LIB="/usr/lib/oracle/11.2/client64/lib"
Run Code Online (Sandbox Code Playgroud)
由于 OCI 库,我在开始安装 ROracle 时遇到了很多麻烦,但它最终与 R CMD INSTALL --configure-ags='--with-oci-lib=/usr/lib/oracle/11.2/client64/lib --with-oci-inc=/usr/include/oracle/11.2/client64' ROracle_1.1-8.tar.gz
让我知道我可以如何提供帮助。