4

我在运行 Fedora 27 的 RStudio 中安装 xml2 时遇到问题。在运行install.packages('xml2')时,我收到以下错误:

installing to /home/ryi/R/x86_64-redhat-linux-gnu-library/3.4/xml2/libs
** R
** inst
** preparing package for lazy loading
** help
Error : /tmp/Rtmp2sKZQZ/R.INSTALL689b37bd918d/xml2/man/read_xml.Rd:47: unable to load shared object '/home/ryi/R/x86_64-redhat-linux-gnu-library/3.4/xml2/libs/xml2.so':
  libicui18n.so.58: cannot open shared object file: No such file or directory
ERROR: installing Rd objects failed for package ‘xml2’
* removing ‘/home/ryi/R/x86_64-redhat-linux-gnu-library/3.4/xml2’
Warning in install.packages :
  installation of package ‘xml2’ had non-zero exit status

The downloaded source packages are in
    ‘/tmp/RtmpPs5Gzi/downloaded_packages’

我注意到在我的/usr/lib64/,我libicui18n.so.57只有,所以我尝试在那里复制一个libicui18n.so.58,我得到了以下错误:

installing to /home/ryi/R/x86_64-redhat-linux-gnu-library/3.4/xml2/libs
** R
** inst
** preparing package for lazy loading
** help
Error : /tmp/Rtmp908Ecf/R.INSTALL653812e0e41f/xml2/man/read_xml.Rd:47: unable to load shared object '/home/ryi/R/x86_64-redhat-linux-gnu-library/3.4/xml2/libs/xml2.so':
  libicuuc.so.58: cannot open shared object file: No such file or directory
ERROR: installing Rd objects failed for package ‘xml2’
* removing ‘/home/ryi/R/x86_64-redhat-linux-gnu-library/3.4/xml2’
Warning in install.packages :
  installation of package ‘xml2’ had non-zero exit status

The downloaded source packages are in
    ‘/tmp/RtmpPs5Gzi/downloaded_packages’

而且我注意到了同样的问题——我有这个库的 .57 版本,而不是 .58 版本。在我一遍又一遍地重复之前,这实际上是一个共享库问题吗?或者,有没有办法一次性解决这个问题?

我已经安装了 xml2 ( libxml2-devel-2.9.5-2.fc27.x86_64)。

4

2 回答 2

3

由于还没有人回答这个问题并且我找到了一个 hacky 解决方案,我想我会更新一下什么是有效的。

看来我的问题是,即使在安装 libxml2-devel 后,我所拥有的库版本也/usr/lib64与 RStudio 的 xml2 包所需的版本不同。例如,关于我上面的问题中提到的特定包libicuuc.so.58,只能libicuuc.so.57/usr/lib64.

运行locate libicuuc.so.58,我发现anaconda3有正确版本的库,所以我通过简单的添加暂时解决了上述问题~/anaconda3/lib$LD_LIBRARY_PATH大致按照here的说明进行操作。

这有点hacky,但导致安装成功。

编辑(重要)添加~/anaconda3/libLD_LIBRARY_PATH导致.bashrc登录循环,大概是因为 Fedora 试图使用错误的库。为了解决这个问题,我添加了以下几行:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/ryi/anaconda3/lib/
export LD_LIBRARY_PATH

R_HOME/etc/ldpaths.

于 2017-12-17T02:11:38.673 回答
-1

我通过源代码安装 ICU4C 解决了这个问题:

  1. 从ICU-Project下载 ICU4C 58.2
  2. 编译
  3. 将库位置添加到$LD_LIBRARY_PATH,

安装将起作用。

于 2019-03-22T07:18:22.253 回答