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

Bjö*_*örn 5 ubuntu r github devtools

我非常绝望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’
Run Code Online (Sandbox Code Playgroud)

我试图解决这个问题的事情:

  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
Run Code Online (Sandbox Code Playgroud)

我对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
Run Code Online (Sandbox Code Playgroud)

我仍然拒绝相信在 ubuntu20 上安装 devtools 是不可能的
但是在这一点上我采取任何措施

解决方案编辑:

简而言之,为我解决问题的是之前安装了 testthat 包。感谢rui-barradas 的评论

install.packages("testthat") 
install.packages("pkgload") 
install.packages("devtools") 
Run Code Online (Sandbox Code Playgroud)

Rui*_*das 4

我也在 Ubuntu 20.04 但运行 R 4.0.0。

\n\n

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

\n\n

例子:命令是

\n\n
install.packages('pkgload')\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
\n
    \n
  • 正在安装包 \xe2\x80\x98pkgload\xe2\x80\x99 ...
    \n ** 包 \xe2\x80\x98rcmdcheck\xe2\x80\x99 成功解压并检查 MD5 和
    \n ** 使用分阶段安装
    \n ** R
    \n ** 字节编译并准备延迟加载包错误:package \xe2\x80\x98testthat\xe2\x80\x99 是在 R 4.0.0 之前安装的:请重新安装它
    \n 执行停止错误:程序包 \xe2\x80\x98pkgload\xe2\x80\x99 延迟加载失败
  • \n
  • 删除 \xe2\x80\x98/usr/local/lib/R/site-library/pkgload\xe2\x80\x99
  • \n
  • 恢复以前的 \xe2\x80\x98/usr/local/lib/R/site-library/pkgload\xe2\x80\x99 install.packages 中的警告:安装包 \xe2\x80\x98pkgload\xe2\x80\x99 已\n 非零退出状态 下载的源码包在
    \n \xe2\x80\x98/tmp/RtmpVxpbs0/downloaded_pa​​ckages\xe2\x80\x99
  • \n
\n
\n\n

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

\n\n
install.packages('testthat')\ninstall.packages('pkgload')\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题就解决了。

\n\n

请注意,对于其他软件包,它已经碰巧发现这是一个递归问题。想象一下那个包裹testthat依赖于(但事实并非如此)R 4.0.0 之前安装的另一个软件包。

\n\n

烦人但可以解决。

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