【问题标题】:Loading some packages with Rstudio server does not work, while it works with R server使用 Rstudio 服务器加载某些包不起作用,而它适用于 R 服务器
【发布时间】:2022-01-07 00:46:33
【问题描述】:

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

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

> 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 时,可以毫无问题地加载rasterterra 包:

$ 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")RRstudio 服务器控制台中给出不同的结果 - 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") 中。这样做之后,当我加载库 rasterterra 时,我仍然会遇到同样的错误。

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

【问题讨论】:

  • 有很多可能性。两个版本都使用相同的库吗? (在两者中运行.libPaths() 进行检查。)两者是否看到相同的环境变量,包括PATHLD_LIBRARY_PATH?是否都使用相同的用户名运行?
  • @user2554330 请查看更新并告诉我您的想法:)
  • 您是否尝试过以 root 身份重新安装这些软件包?
  • @runr 你能澄清一下以“root”身份安装是什么意思吗?
  • 通过,例如,sudo R,从那里再次运行install.package(..) 来处理那些导致问题的软件包

标签: r linux rstudio-server terra


【解决方案1】:

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

通过 Google 搜索错误消息 libproj.so.15: cannot open shared object file: No such file or directory 我看到了 thisthis 的讨论,也许还有更多相关页面。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    相关资源
    最近更新 更多