You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装R语言DirichletMultinomial包时libgsl.so.27加载失败求助

安装R包DirichletMultinomial时无法识别/usr/local/lib下的libgsl.so.27

在远程服务器上安装R语言的DirichletMultinomial包时,遇到R无法识别/usr/local/lib目录下存在的libgsl.so.27文件的问题,本地环境安装该包正常,仅远程服务器出现此问题。

已确认/usr/local/lib下存在目标文件

执行ls -lh /usr/local/lib显示相关文件存在:

$ ls -lh /usr/local/lib
total 46M
-rw-r--r-- 1 root root  27M Apr 29 11:30 libgsl.a
-rw-r--r-- 1 root root 2.2M Apr 29 11:30 libgslcblas.a
-rwxr-xr-x 1 root root  948 Apr 29 11:30 libgslcblas.la*
lrwxrwxrwx 1 root root   20 Apr 29 11:30 libgslcblas.so -> libgslcblas.so.0.0.0*
lrwxrwxrwx 1 root root   20 Apr 29 11:30 libgslcblas.so.0 -> libgslcblas.so.0.0.0*
-rwxr-xr-x 1 root root 1.3M Apr 29 11:30 libgslcblas.so.0.0.0*
-rwxr-xr-x 1 root root  917 Apr 29 11:30 libgsl.la*
lrwxrwxrwx 1 root root   16 Apr 29 11:30 libgsl.so -> libgsl.so.27.0.0*
lrwxrwxrwx 1 root root   16 Apr 29 11:30 libgsl.so.27 -> libgsl.so.27.0.0*
-rwxr-xr-x 1 root root  16M Apr 29 11:30 libgsl.so.27.0.0*
drwxr-xr-x 2 root root   20 Apr 29 11:30 pkgconfig/

安装包时的错误信息

尝试安装包时出现如下错误:

gcc -shared -L/HL8/HApp/R/4.3.3/lib64/R/lib -L/usr/local/lib64 -o DirichletMultinomial.so R_init_DirichletMultinomial.o dirichlet_fit.o dirichlet_fit_main.o -L/usr/local/lib -lgsl -lgslcblas -lm -L/HL8/HApp/R/4.3.3/lib64/R/lib -lR
installing to /home/username/R/x86_64-pc-linux-gnu-library/4.3/00LOCK-DirichletMultinomial/00new/DirichletMultinomial/libs
** R
** data
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
Error: package or namespace load failed for ‘DirichletMultinomial’ in dyn.load(file, DLLpath = DLLpath, ...):
 unable to load shared object '/home/nsk980613/R/x86_64-pc-linux-gnu-library/4.3/00LOCK-DirichletMultinomial/00new/DirichletMultinomial/libs/DirichletMultinomial.so':
  libgsl.so.27: cannot open shared object file: No such file or directory
Error: loading failed

已尝试的无效方法

  • 先后通过yum包管理器和手动编译tarball安装GSL,已卸载yum安装的版本,问题仍未解决,不敢卸载手动安装版本怕破坏环境
  • 设置export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib,该方法无效

解决方案

1. 更新动态链接库缓存

执行以下命令让系统识别/usr/local/lib下的库文件:

sudo ldconfig

更新完成后重新尝试安装DirichletMultinomial包。

2. 永久配置LD_LIBRARY_PATH

临时设置的环境变量可能未在R会话中生效,可通过以下步骤永久配置:

  1. 编辑用户的~/.bashrc或~/.profile文件,添加:
    export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
    
  2. 执行source ~/.bashrc使配置立即生效,随后重启R进行安装。

3. 安装时指定GSL路径

强制R在编译包时使用指定路径的GSL库,执行以下R命令:

install.packages("DirichletMultinomial", configure.args = c("--with-gsl-include=/usr/local/include", "--with-gsl-lib=/usr/local/lib"))

4. 检查库与R的架构匹配

确认GSL库和R的系统架构一致(均为x86_64):

file /usr/local/lib/libgsl.so.27
file $(which R)

若架构不匹配,需重新编译对应架构的GSL库。

内容的提问来源于stack exchange,提问作者user24790338

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 23:43:28