【发布时间】:2022-01-07 00:46:33
【问题描述】:
我在远程服务器上使用Rstudio server,并且我已经安装了一些软件包。
当我尝试使用 Rstudio server 加载 raster 或 terra 之类的库时,出现错误:
> library(terra)
Error: package or namespace load failed for ‘terra’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/home/pearless/R/x86_64-pc-linux-gnu-library/4.1/terra/libs/terra.so':
libproj.so.15: cannot open shared object file: No such file or directory
> library(raster)
Error: package or namespace load failed for ‘raster’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/home/pearless/R/x86_64-pc-linux-gnu-library/4.1/terra/libs/terra.so':
libproj.so.15: cannot open shared object file: No such file or directory
请注意,使用Rstudio server 加载其他包(例如tidyverse)可以正常工作:
> library(tidyverse)
── Attaching packages ──────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.3.1 ──
✓ ggplot2 3.3.5 ✓ purrr 0.3.4
✓ tibble 3.1.6 ✓ forcats 0.5.1
✓ readr 2.0.2
── Conflicts ─────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
x dplyr::filter() masks stats::filter()
x dplyr::lag() masks stats::lag()
当我在服务器中使用R 控制台而不使用Rstudio server 时,可以毫无问题地加载raster 和terra 包:
$ R
R version 4.1.1 (2021-08-10) -- "Kick Things"
Copyright (C) 2021 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> library(terra)
terra version 1.4.11
> library(raster)
Loading required package: sp
我该如何解决这个问题,以便我也可以在Rstudio server中加载这些包?
更新基于@user2554330 的评论:
-
.libPaths()在两者中给出完全相同的结果。 -
Sys.getenv("PATH")和Sys.getenv("LD_LIBRARY_PATH")在R和Rstudio服务器控制台中给出不同的结果 -Rstudio server似乎没有看到大多数路径变量。我在服务器的R中运行pth = Sys.getenv("PATH")和ld_pth = Sys.getenv("LD_LIBRARY_PATH"),并将结果复制并分别粘贴到Rstudio server中的Sys.setenv(PATH = "result_of_pth")和Sys.setenv(PATH = "result_of_ld_pth")中。这样做之后,当我加载库raster和terra时,我仍然会遇到同样的错误。 -
是的,两者都使用相同的用户名运行。
【问题讨论】:
-
有很多可能性。两个版本都使用相同的库吗? (在两者中运行
.libPaths()进行检查。)两者是否看到相同的环境变量,包括PATH和LD_LIBRARY_PATH?是否都使用相同的用户名运行? -
@user2554330 请查看更新并告诉我您的想法:)
-
您是否尝试过以 root 身份重新安装这些软件包?
-
@runr 你能澄清一下以“root”身份安装是什么意思吗?
-
通过,例如,
sudo R,从那里再次运行install.package(..)来处理那些导致问题的软件包
标签: r linux rstudio-server terra