当我try 安装某些需要libRblas.so的软件包(imputeTS)时,AFAIK引用了OpenBLAS,我得到一个错误,没有找到它:

Error in dyn.load(file, DLLpath = DLLpath, ...) : 
  unable to load shared object '/home/jay/R/x86_64-pc-linux-gnu-library/4.2/fracdiff/libs/fracdiff.so':
  libRblas.so: cannot open shared object file: No such file or directory
Calls: <Anonymous> ... asNamespace -> loadNamespace -> library.dynam -> dyn.load
Execution halted

然而,sessionInfo()表示R实际上找到了它.

> sessionInfo()
R version 4.2.1 (2022-06-23)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 22.04 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so

我从this thread中学到"maybe ... another version of R [was built] and it sits in ... [the] $PATH before the packaged version",很可能是这样;我以前的R版本4.2.0是一个自编版本,我通过再次下载源代码和./configure-make uninstall删除了它.不过,这个是通过sudo apt install r-base-core安装的.可能现在某个地方一团糟.不幸的是,引用的线程得到了不同的解决,现在我在寻找各自的结论.

以下是更多信息:

whereis R给出

~$ whereis R
R: /usr/bin/R /usr/lib/R /usr/lib64/R /etc/R /usr/local/lib/R /usr/share/R /usr/share/man/man1/R.1.gz

从错误消息中的相应文件中,使用sudo find ~ -name '<file>'fracdiff.so找到了,而libRblas.so没有找到.

~/R/x86_64-pc-linux-gnu-library/4.2/fracdiff/libs/fracdiff.so

我已经试过了,

~$ sudo apt install libopenblas-dev

但很明显,它已经安装好了.

libopenblas-dev is already the newest version (0.3.20+ds-1).

以下thislibRlapack.solibRblas.so的建议显然在我的系统中不存在,而另一个建议只是给出:

~$ sudo update-alternatives --config libblas.so
update-alternatives: error: no alternatives for libblas.so

推荐答案

一些 comments 让我走上了正确的轨道,帮助我解决了这个问题——我将简要总结一下.

由于怀疑存在依赖性问题,我安装了产生错误消息的包(本例中为fracdiff),并再次try 安装目标包.错误再次发生,但来自另一个包,指示级联问题.奇怪的是,我肯定知道软件包已经安装好了,所以我觉得我最初的怀疑得到了证实,我可能在更新R时弄乱了libs个文件夹,如OP中所述.

因为我可以假设这种情况会一次又一次发生,所以我的结论是完全卸载R,这次也卸载了软件包,然后重新安装所有软件.现在,我可以毫无问题地安装目标软件包.

幸运的是,这在Linux上相当容易.此外,可以相对无人值守地重新安装所有软件包.how-to分布在几个线程和站点上,我将把字符串放在一起,添加引用.

下面是我在R和Bash中所做的(您需要su/sudo):

  1. Store packages (in R) 100
tmp <- installed.packages()
installedpkgs <- as.vector(tmp[is.na(tmp[,"Priority"]), 1])
saveRDS(installedpkgs, 'installed_old.rds')
  1. Remove R completely 100
dpkg -l | grep ^ii | awk '$2 ~ /^r-/ { print $2 }' | sudo xargs apt-get remove --purge -y
  1. Remove all R packages 100

位置可能与您的不同.

R -e '.libPaths()'
rm -rf /home/jay/R/x86_64-pc-linux-gnu-library/4.2 /usr/local/lib/R/site-library /usr/lib/R/site-library /usr/lib/R/library
  1. Install R (here with 101) 100
apt install r-base-core
  1. Restore R packages 100

这会持续一段时间.请注意,只安装了可以在存储库中找到的软件包.

installedpkgs <- readRDS("installed_old.rds")
tmp <- installed.packages()
installedpkgs.new <- as.vector(tmp[is.na(tmp[,"Priority"]), 1])
missing <- setdiff(installedpkgs, installedpkgs.new)
install.packages(missing)
update.packages(ask=FALSE)

R相关问答推荐

如何通过r中每20滚动和来创建组将数据视为1:10

修改dDeliverr中列表列的最后一个元素

R gtsummary tBL_summary,包含分层和两个独立分组变量

使用R中的Shapetime裁剪格栅文件

从开始时间和结束时间导出时间

如何在R中合并和合并多个rabrame?

用黄土法确定区间

使用sf或terra的LINESTRAING的累积长度

R函数,用于生成伪随机二进制序列,其中同一数字在一行中不出现超过两次

基于R中的间隔扩展数据集行

按时间顺序对不同事件进行分组

如何将Which()函数用于管道%>;%

如何在R中使用hmm TMB提前一步预测观察到的状态?

多元正态分布的计算

使用列中的值来调用函数调用中应使用的其他列

层次树图的数据树

用多边形替换地块点

如何构建一个for循环来循环处理动物ID?

网络抓取新闻标题和时间

R将函数参数传递给ggploy