我最近升级到 F24,现在在我的 R 会话中我无法加载几个包,sp。reshape2、latex2exp、knitr 等。
我发现的最初问题是 F24 使用 libicu56,而这些包使用 libicu54。我按照此线程中的建议 设置具有所需版本的符号链接:
ln -s /usr/lib64/libicui18n.so.56 /usr/lib64/libicui18n.so.54
ln -s /usr/lib64/libicuuc.so.56 /usr/lib64/libicuuc.so.54
ln -s /usr/lib64/libicudata.so.56 /usr/lib64/libicudata.so.54
Run Code Online (Sandbox Code Playgroud)
最初的错误消失了,但现在我有了:
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/home/uname/R/x86_64-redhat-linux-gnu-library/3.3/stringi/libs/stringi.so':
/home/uname/R/x86_64-redhat-linux-gnu-library/3.3/stringi/libs/stringi.so: undefined symbol: _ZTIN6icu_548ByteSinkE
Run Code Online (Sandbox Code Playgroud)
这导致我使用 R 的 stringi 包,但我无法加载它 - 它给出了相同的错误。
我也更新了 F24 和所有 R 包。
有任何想法吗?
小智 5
通过从 CRAN 下载 tar.gz 包,然后运行以下命令,我能够在 fedora 24 上安装包stringi:
R CMD INSTALL stringi_1.1.1.tar.gz --configure-args='--disable-pkg-config'
Run Code Online (Sandbox Code Playgroud)
我在更新 icu (Gentoo) 后就发生了这种情况。另一个解决方案是删除并再次安装 stringi,因为它正在寻找不再存在的特定库文件。
remove.packages('stringi')
install.packages('stringi')
Run Code Online (Sandbox Code Playgroud)
如果您的.Rprofile触发器library(stringi),那么您必须使用 启动会话R --vanilla才能执行此操作,否则它将继续失败。
另一种解决方案--disable-pkg-config也有效。它将使 stringi 为自己构建 icu,而不是依赖系统(源附带了 icu 的副本)。