R devtools 无法安装 - Ubuntu 20.04 - ‘pkgload’ 的包或命名空间加载失败

R devtools unable to install - Ubuntu 20.04 - package or namespace load failed for ‘pkgload’

我非常想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
    • r-推荐
  6. 更新了所有包update.packages(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 页面建议是否解决了问题。

Imports: desc, methods, pkgbuild, rlang, rprojroot, rstudioapi, utils, withr
Suggests: 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") 

我也在 Ubuntu 20.04 但 运行ning R 4.0.0.

当尝试安装一个包时,如果它依赖于在 R 4.0.0 之前安装的另一个包,我会收到一条错误消息并且安装失败。即使我在对 install.packages 的调用中设置了 dependencies = TRUE,也会发生这种情况。

示例: 命令是

install.packages('pkgload')

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

  • installing source package ‘pkgload’ ...
    ** package ‘rcmdcheck’ successfully unpacked and MD5 sums checked
    ** using staged installation
    ** R
    ** byte-compile and prepare package for lazy loading Error: package ‘testthat’ was installed before R 4.0.0: please re-install it
    Execution halted ERROR: lazy loading failed for package ‘pkgload’
  • removing ‘/usr/local/lib/R/site-library/pkgload’
  • restoring previous ‘/usr/local/lib/R/site-library/pkgload’ Warning in install.packages : installation of package ‘pkgload’ had non-zero exit status The downloaded source packages are in
    ‘/tmp/RtmpVxpbs0/downloaded_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):  

我遇到了同样的问题,至少在我的情况下,解决方案是 Ubuntu 20.04.1 LTS (Focal Fossa) + R 4.0.2:

首先(从终端),安装:

第一步:sudo apt-get update -y
第 2 步:sudo apt-get install -y libxml2-dev

然后从 RStudio(先设置存储库,然后选择 8 个存储库)并安装两个包:

  1. 安装 xml2 包

  2. 安装开发工具

对我有用。