1

Rstudio server在远程服务器上使用,并且已经安装了一些软件包。

当我尝试加载类似rasterterra使用的库时Rstudio server,出现错误:

> 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 的评论:

  1. .libPaths()在两者中给出完全相同的结果。

  2. Sys.getenv("PATH") 并在和服务器控制台Sys.getenv("LD_LIBRARY_PATH")中给出不同的结果-似乎没有看到大多数路径变量。我在服务器中运行并输入,并复制结果并将它们分别粘贴到和中。这样做之后,当我加载库和.RRstudioRstudio serverpth = Sys.getenv("PATH")ld_pth = Sys.getenv("LD_LIBRARY_PATH")RSys.setenv(PATH = "result_of_pth")Sys.setenv(PATH = "result_of_ld_pth")Rstudio serverrasterterra

  3. 是的,两者都使用相同的用户名运行。

4

1 回答 1

1

问题似乎是terra不起作用,并且因为raster依赖于它,该包也无法加载。

从错误消息的谷歌搜索中, libproj.so.15: cannot open shared object file: No such file or directory我看到了这个这个讨论,也许还有更多相关的页面。

这些讨论了sf包,但该包使用与 相同的系统依赖项terra,因此这也应该适用terra

于 2021-11-30T20:16:03.913 回答