Manjaro桌面环境在安装reshape2或加载tidyverse之中。

在安装reshape2时出现如下报错

1
2
3
Error in dyn.load(file, DLLpath = DLLpath, ...) : 
  unable to load shared object '/home/chance/R/x86_64-pc-linux-gnu-library/4.0/stringi/libs/stringi.so':
  libicui18n.so.67: cannot open shared object file: No such file or directory

第一方案是使用locate查找libicui18n.so.67这个库。

1
2
3
4
5
locate libicui18n.so.67                             
## /usr/lib/libicui18n.so.67
## /usr/lib/libicui18n.so.67.1
## /usr/lib32/libicui18n.so.67
## /usr/lib32/libicui18n.so.67.1

结果发现实际上libicui18n.so.67是在当前环境中是存在的,但stringi却索引不到。

尝试自定义环境变量LD_LIBRARY_PATH在其中包括/usr/lib/:/usr/lib32/仍然不能解决问题。

实际上,/usr/lib//usr/lib32/均为系统默认的库索引路径。

解决方案

这是由于对于Manjaro这样的滚动发行版,stringi依赖的库是会持续更新变化的。因此,我们需要基于更新的系统库重新编译stringi

1
rm -rf /home/chance/R/x86_64-pc-linux-gnu-library/4.0/stringi/

在R中以普通用户重新安装stringi即可。

1
install.packages("stringi")

参考来源

https://archived.forum.manjaro.org/t/manjaro-update-now-r-cant-load-libraries/115419/4