将R安装到自定义位置(./configure --prefix = $ HOME / RTargets / 3.3)。这很好,但install.packages(' devtools')失败了。消息是:
installing via 'install.libs.R' to /Users/me/Library/R/3.3/library/stringi
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/Users/me/Library/R/3.3/library/stringi/libs/stringi.so':
dlopen(/Users/me/Library/R/3.3/library/stringi/libs/stringi.so, 6): Library not loaded: libicui18n.58.dylib
Referenced from: /Users/me/Library/R/3.3/library/stringi/libs/stringi.so
Reason: image not found
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/Users/me/Library/R/3.3/library/stringi’
但是,此文件存在:
/usr/local/lib>ls -l libicui18n*
-rwxr-xr-x 1 eqiaz44 admin 2679892 Mar 2 23:50 libicui18n.58.1.dylib
lrwxr-xr-x 1 eqiaz44 admin 21 Nov 11 14:14 libicui18n.58.dylib -> libicui18n.58.1.dylib
lrwxr-xr-x 1 eqiaz44 admin 21 Nov 11 14:14 libicui18n.dylib -> libicui18n.58.1.dylib
我无法弄清楚为什么包的加载过程无法找到dylib文件,因为它位于默认位置。我无法检查stringi.so文件引用如何被删除。
有没有办法告诉R在安装失败时删除文件或出现这种情况的原因?
答案 0 :(得分:0)
使用:
./configure --prefix=$HOME/RTargets/3.3 --enable-R-shlib
设置为使用自定义目录时,需要启用共享库选项。
推荐阅读: RStudio从源构建R
https://support.rstudio.com/hc/en-us/articles/218004217-Building-R-from-source
答案 1 :(得分:0)
我试了几次完全删除R并重新安装它没有运气。即使不将R构建为共享库并仅使用默认配置设置,问题仍然存在。我确认在构建标准安装和共享库时,下面的解决方案很有用。
在看到第二段到最后一段here
后,我能够正常工作无论出于何种原因,R函数dyn.load(...)似乎没有使用标准OS(Mac Sierra)库路径。通过修改R在加载库时使用的路径,我能够使它工作。
RHOME / etc / ldpaths中脚本的顶部如下所示:
if test -n ""; then
: ${R_LD_LIBRARY_PATH=${R_HOME}/lib:}
else
: ${R_LD_LIBRARY_PATH=${R_HOME}/lib}
fi
我添加了加载库,重新启动R和安装包的位置
if test -n ""; then
: ${R_LD_LIBRARY_PATH=/usr/local/lib:${R_HOME}/lib:}
else
: ${R_LD_LIBRARY_PATH=/usr/local/lib:${R_HOME}/lib}
fi
R configure脚本(我在3.3.1和3.3.2中试过这个)在检测到Darwin时跳过配置R库路径。它有一个注释,说明脚本假定默认OS path lookup将正常发生,设置任何值都会改变其行为。
我不确定断开连接的位置:这是dyn.load的错误,操作系统行为的变化,还是别的。可能有更好的方法通过在./configure或make阶段设置变量来解决这个问题,但我无法解决这个问题。