Fedora 24 上的 libicu 和字符串导致 R 头痛

libicu and stringi on Fedora 24 causing R headaches

我最近升级到 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 包。

有什么想法吗?

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

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

在更新 icu (Gentoo) 后,这发生在我身上。另一种解决方案是删除并重新安装 stringi,因为它正在寻找不再存在的特定库文件。

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

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

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