R devtools 无法安装 - Ubuntu 20.04 - "pkgload "的软件包或命名空间加载失败。

问题描述 投票:2回答:1

我很想 install.packages("devtools")然而,它总是以这个错误失败

Error: .onLoad failed in loadNamespace() for 'pkgload', details:
  call: readRDS(nsInfoFilePath)
  error: error reading from connection
Execution halted
ERROR: lazy loading failed for package ‘devtools’
* removing ‘/home/bjoern/R/x86_64-pc-linux-gnu-library/3.6/devtools’

我试着去解决这个问题。

  1. 增加 dependencies = T 争论
  2. 根据hadley wickham在github上提出的建议-> 更新rlang软件包
  3. 试着跑 install.packages("pkgload") 导致几乎一模一样的错误(见下文)
  4. 完全删除R并重新安装
  5. 另外安装以下软件包。
    • r-base-dev
    • r-cran-devtools
    • 建议的
  6. 更新了所有的包 update.package(ask = FALSE, checkBuilt = TRUE)

install.packages("pkgload")出错。

Error: package or namespace load failed for ‘pkgload’:
 .onLoad failed in loadNamespace() for 'pkgload', details:
  call: readRDS(nsInfoFilePath)
  error: error reading from connection
Error: loading failed
Execution halted
ERROR: loading failed

我更深地挖掘到 pkgload (至少我希望这是问题的唯一原因)。我会检查一下手动(重新)安装所有的导入和 pkgload 的 CRAN 页面上的建议是否能解决这个问题。

导入的内容。 desc, methods, pkgbuild, rlang, rprojroot, rstudioapi, utils, withr 建议: bitops, covr, Rcpp, testthat


我的 sessionInfo() 的输出。
R version 3.6.3 (2020-02-29)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 20.04 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] 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   
 [7] LC_PAPER=de_DE.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] 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_3.6.3 tools_3.6.3

我还是不相信在ubuntu20上安装devtools是不可能的事。 然而在这一点上,我接受任何秸秆

解决方案编辑。

总之我解决这个问题的是之前安装了testthat包。感谢评论者 rui-barradas

install.packages("testthat") 
install.packages("pkgload") 
install.packages("devtools") 
r ubuntu github devtools
1个回答
3
投票

我也在Ubuntu 20.04上运行R 4.0.0。

当尝试安装一个软件包时,如果它依赖于另一个在R 4.0.0之前安装的软件包,我就会收到一个错误信息,安装失败。即使我设置了 dependencies = TRUE 在呼吁 install.packages.

例子: 命令是

install.packages('pkgload')

我省略了第一行输出,说是下载了文件。然后,相关部分。

  • 安装 源头 包'pkgload' ... ** 包'rcmdcheck'成功解压并检查了MD5和 ** 使用阶段性安装 ** R ** 字节编译并为懒加载准备包 错误:包'testthat'是在R 4.0.0之前安装的:请重新安装它 执行停止 ERROR: 包'pkgload'的懒加载失败。
  • 删除 "usrlocallibRsite-librarypkgload"。
  • 恢复之前的 "usrlocallibRsite-librarypkgload" install.packages中的警告:安装软件包 "pkgload "的退出状态为非零 下载的源码包在 "tmpRtmpVxpbs0downloaded_packages "中。

正确的方式。 安装包的正确方法 pkgload 是运行序列

install.packages('testthat')
install.packages('pkgload')

而问题也就迎刃而解了。

在其他包中,已经发生了这个递归问题。想象一下那个包 testthat 依赖于另一个在R 4.0.0之前安装的软件包(其实不然)。

烦人的问题,但可以解决。

sessionInfo()  
#R version 4.0.0 (2020-04-24)  
#Platform: x86_64-pc-linux-gnu (64-bit)  
#Running under: Ubuntu 20.04 LTS  
#  
#Matrix products: default  
#BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0  
#LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0  
#  
#locale:  
# [1] LC_CTYPE=pt_PT.UTF-8       LC_NUMERIC=C                
#[3] LC_TIME=pt_PT.UTF-8        LC_COLLATE=pt_PT.UTF-8      
# [5] LC_MONETARY=pt_PT.UTF-8    LC_MESSAGES=pt_PT.UTF-8     
# [7] LC_PAPER=pt_PT.UTF-8       LC_NAME=C                   
# [9] LC_ADDRESS=C               LC_TELEPHONE=C                
#[11] LC_MEASUREMENT=pt_PT.UTF-8 LC_IDENTIFICATION=C           
#  
#attached base packages:  
#[1] stats     graphics  grDevices utils     datasets   
#[6] methods   base       
#  
#other attached packages:  
#[1] rvest_0.3.5       xml2_1.3.2        data.table_1.12.8  
#
#loaded via a namespace (and not attached):  
© www.soinside.com 2019 - 2024. All rights reserved.