我Rstudio server
在远程服务器上使用,并且已经安装了一些软件包。
当我尝试加载类似raster
或terra
使用的库时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 的评论:
.libPaths()
在两者中给出完全相同的结果。Sys.getenv("PATH")
并在和服务器控制台Sys.getenv("LD_LIBRARY_PATH")
中给出不同的结果-似乎没有看到大多数路径变量。我在服务器中运行并输入,并复制结果并将它们分别粘贴到和中。这样做之后,当我加载库和.R
Rstudio
Rstudio server
pth = Sys.getenv("PATH")
ld_pth = Sys.getenv("LD_LIBRARY_PATH")
R
Sys.setenv(PATH = "result_of_pth")
Sys.setenv(PATH = "result_of_ld_pth")
Rstudio server
raster
terra
是的,两者都使用相同的用户名运行。