在conda环境中工作时,我观察到R〉=4.1.3时出现了一个意外的行为。也就是说,在终端中,我可以启动R并加载基于GDAL的库
R version 4.1.3 (2022-03-10) -- "One Push-Up"
Copyright (C) 2022 The R Foundation for Statistical Computing
Platform: x86_64-conda-linux-gnu (64-bit)
... STANDARD R MESSAGE ...
> library(sf)
Linking to GEOS 3.11.1, GDAL 3.6.2, PROJ 9.1.0; sf_use_s2() is TRUE
但是在RStudio中我得到了下面的错误
R version 4.1.3 (2022-03-10) -- "One Push-Up"
Copyright (C) 2022 The R Foundation for Statistical Computing
Platform: x86_64-conda-linux-gnu (64-bit)
... STANDARD R MESSAGE ...
> library(sf)
Error: package or namespace load failed for ‘sf’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/home/ivan/miniconda3/envs/r41_dev/lib/R/library/sf/libs/sf.so':
/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /home/ivan/miniconda3/envs/r41_dev/lib/R/library/sf/libs/../../../../libgdal.so.32)
尽管终端中的行为表明安装了包libstdc++
,但我已经从the Gnome repo重新安装了它。该包肯定安装在我的机器上。
apt list --installed | grep libstdc++
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libstdc++-8-dev/focal,now 8.4.0-3ubuntu2 amd64 [installed,automatic]
libstdc++-9-dev/focal-updates,focal-security,focal-security,now 9.4.0-1ubuntu1~20.04.1 amd64 [installed,automatic]
libstdc++6/focal,now 11.1.0-1ubuntu1~20.04 amd64 [installed]
libstdc++6/focal,now 11.1.0-1ubuntu1~20.04 i386 [installed,automatic]
Rstudio版本为
RStudio 2022.07.2+576 "Spotted Wakerobin" Release (e7373ef832b49b2a9b88162cfe7eac5f22c40b34, 2022-09-06) for Ubuntu Bionic
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.12.8 Chrome/69.0.3497.128 Safari/537.36
这里是会话信息
> sessionInfo()
R version 4.1.3 (2022-03-10)
Platform: x86_64-conda-linux-gnu (64-bit)
Running under: Ubuntu 20.04.5 LTS
Matrix products: default
BLAS/LAPACK: /home/ivan/miniconda3/envs/r41_dev/lib/libopenblasp-r0.3.21.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=de_DE.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=de_DE.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=de_DE.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_4.1.3 magrittr_2.0.3 class_7.3-21 DBI_1.1.3 tools_4.1.3 units_0.8-1
[7] proxy_0.4-27 Rcpp_1.0.10 KernSmooth_2.23-20 grid_4.1.3 e1071_1.7-13 classInt_0.4-8
我在RStudio中使用conda环境已经有一段时间了,我遇到了很多挑战,但我似乎没有能力解决这个问题。
谁能帮我理解为什么RStudio不能访问这个包,而R可以从终端访问它?
顺便说一句,这个问题在R= 4. 0. 5时不会发生,据我所知,在R= 4. 1时也不会发生。我当然多次更新apt,但我不记得对我的系统进行过任何重大更新。
编辑以解决@merv在评论中提出的问题
我用不同的R版本创建了几个环境,试图构建和解决这个问题,但没有成功。
我现在遵循以下步骤:
1.使用conda -V
检查conda版本,返回conda 22.11.1
1.使用conda create -n r41_test -c conda-forge r-base=4.1.3 r-sf -y
创建全新的环境
1.使用conda activate r41_test
激活环境1将conda list
输出保存到文件并共享through this link
1.从终端启动R
1.使用library(sf)
加载sf库,库加载没有问题
1.使用q()
关闭R并键入n
,以避免保存工作空间图像
1.通过键入rstudio
启动RStudio(从激活的环境)
1.从RStudio中的R控制台使用library(sf)
加载库sf,库加载失败,并出现与上述报告相同的错误。
在运行此测试时,我注意到一些以前没有注意到的事情:当在步骤2中创建conda环境时,打印了以下消息,但环境创建成功。我还可以激活它,从终端启动R,并加载库,尽管存在SafetyError
。
Downloading and Extracting Packages
Preparing transaction: done
Verifying transaction: |
SafetyError: The package for r-base located at /home/ivan/miniconda3/pkgs/r-base-4.1.3-h2f963a2_5
appears to be corrupted. The path 'lib/R/doc/html/packages.html'
has an incorrect size.
reported size: 3061 bytes
actual size: 55120 bytes
done
在我之前的文章中,我也在另一台运行Ubuntu 20.04的笔记本电脑上尝试过这个过程。我几乎不使用那台机器,所以它可能是一个“独立控制”。我不确定SafetyError
是否也被扔在那里,但RStudio未能在那台机器上加载包。
1条答案
按热度按时间91zkwejq1#
我认为这是因为通过deb包安装的rstudio没有使用conda环境中的
libstdc++.so
。尝试: