Fedora 24上的libicu和stringi导致R头痛

时间:2016-08-17 02:23:17

标签: r fedora

我最近升级到F24,现在在我的R会话中我无法加载一些软件包,sp。 reshape2,latex2exp,knitr等。

我发现的最初问题是F24使用libicu56,而这些包期望libicu54。我按照this thread中的建议设置了所需版本的符号链接:

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

最初的错误消失了,但现在我有了这个:

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

这导致我使用R的stringi包,但我无法加载它 - 它给出了同样的错误。

我已经更新了F24和所有R包。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我可以通过从CRAN下载tar.gz软件包在fedora 24上安装软件包 stringi ,然后运行以下命令:

R CMD INSTALL stringi_1.1.1.tar.gz --configure-args='--disable-pkg-config'

答案 1 :(得分:1)

在icu(Gentoo)更新之后发生了这件事。另一个解决方案是删除并再次安装stringi,因为它正在查找不再存在的特定库文件。

remove.packages('stringi')
install.packages('stringi')

如果您的.Rprofile触发library(stringi),那么您必须使用R --vanilla开始会话才能执行此操作,否则它将继续失败。

--disable-pkg-config的其他解决方案也适用。它将使stringi为自己构建icu而不是依赖于系统(源代码附带icu副本)。