CentOS系统R安装xml2包报错无法加载libicui18n.so.58共享对象
问题根因
报错本质是R加载xml2共享库时,系统动态链接器找不到libicui18n.so.58依赖。你虽然已经安装了对应版本的ICU库,但存在两个核心问题:
- 你安装的
libicui18n.so.58分布在/usr/local/lib、Anaconda安装目录、个人下载文件夹等非系统默认动态库扫描路径下,链接器默认不会检索这些位置 - 你查询的环境变量名写错了,正确的动态库路径变量是
LD_LIBRARY_PATH,不是LD_LOCATION_PATH,执行无输出属于正常情况
操作步骤
按顺序执行即可:
- 先清理之前安装失败残留的锁文件,避免后续安装被拦截
rm -rf /home/<替换为你的实际用户名>/R/x86_64-redhat-linux-gnu-library/3.6/00LOCK-xml2 - 优先用系统包管理器安装依赖,兼容性最好:
- CentOS 7执行:
sudo yum install -y libicu-devel - CentOS 8/Stream执行:
sudo dnf install -y libicu-devel
如果系统源自带的libicu版本不是58(CentOS7默认源是50版本),直接走下一步配置
- CentOS 7执行:
- 如果你已经手动编译ICU58安装到了
/usr/local/lib,直接刷新动态链接器缓存就能让系统识别到库:echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/usrlocal.conf sudo ldconfig # 执行以下命令验证,能输出libicui18n.so.58的路径就说明配置生效 ldconfig -p | grep libicui18n.so.58 - 不想用手动编译版本的话,可以直接复用你系统里已经装好的Anaconda自带的ICU58,配置环境变量即可:
# 临时生效(仅当前终端打开的R有效) export LD_LIBRARY_PATH=/opt/anaconda3/lib:$LD_LIBRARY_PATH # 永久生效(写入bash配置,执行后重开终端生效) echo 'export LD_LIBRARY_PATH=/opt/anaconda3/lib:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc不要用
/home/Zach/Downloads/test/目录下的库,后续如果删除下载文件夹会导致依赖再次丢失 - 重启R终端,重新执行安装命令
install.packages("xml2")
验证
安装完成后在R中执行library(xml2),无报错即安装成功。
内容的提问来源于stack exchange,提问作者techworm
相关产品推荐
相关产品推荐

