簡體   English   中英

在 Ubuntu 18.04 和 R 4.0.2 上安裝 tidyr 時出錯

[英]Error installing tidyr on Ubuntu 18.04 & R 4.0.2

在嘗試安裝 package tidyverse ,我在安裝依賴tidyr時遇到錯誤。

這是我收到的消息的尾部:

cpp11.cpp:31:100: error: ‘unmove’ is not a member of ‘cpp11’
     return cpp11::as_sexp(simplifyPieces(cpp11::unmove(cpp11::as_cpp<cpp11::list>(pieces)), cpp11::unmove(cpp11::as_cpp<int>(p)), cpp11::unmove(cpp11::as_cpp<bool>(fillLeft))));
                                                                                                    ^~~~~~
cpp11.cpp:31:138: error: ‘unmove’ is not a member of ‘cpp11’
     return cpp11::as_sexp(simplifyPieces(cpp11::unmove(cpp11::as_cpp<cpp11::list>(pieces)), cpp11::unmove(cpp11::as_cpp<int>(p)), cpp11::unmove(cpp11::as_cpp<bool>(fillLeft))));
                                                                                                                                          ^~~~~~
/usr/lib/R/etc/Makeconf:176: recipe for target 'cpp11.o' failed
make: *** [cpp11.o] Error 1
ERROR: compilation failed for package ‘tidyr’
* removing ‘/home/xxx/yyy/tidyr’
Warning in install.packages :
  installation of package ‘tidyr’ had non-zero exit status

在我天真的眼里,問題似乎出在 cpp11 上。 由於 cpp11 編譯錯誤( R tidyr package 由於 cpp11 編譯錯誤(擴展模式 x 不包含參數包) ),我看到了一個關於 tidyr 安裝錯誤的類似問題,但它是針對 RHEL 系統的。

我的系統上安裝了最新版本的 gcc/c++ (4:7.4.0-1ubuntu2.3)。 還安裝了最新版本的系統依賴libcurl4-openssl-dev libssl-dev libxml2-dev

這是sessionInfo()的 output :

R version 4.0.2 (2020-06-22)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.5 LTS

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

locale:
 [1] LC_CTYPE=en_CA.UTF-8       LC_NUMERIC=C               LC_TIME=en_CA.UTF-8        LC_COLLATE=en_CA.UTF-8     LC_MONETARY=en_CA.UTF-8    LC_MESSAGES=en_CA.UTF-8   
 [7] LC_PAPER=en_CA.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] rstudioapi_0.11   magrittr_1.5      usethis_1.6.1     devtools_2.3.1    pkgload_1.1.0     R6_2.4.1          rlang_0.4.7       fansi_0.4.1       tools_4.0.2      
[10] pkgbuild_1.1.0    sessioninfo_1.1.1 cli_2.0.2         withr_2.2.0       ellipsis_0.3.1    remotes_2.2.0     assertthat_0.2.1  digest_0.6.25     rprojroot_1.3-2  
[19] crayon_1.3.4      processx_3.4.3    callr_3.4.3       fs_1.5.0          ps_1.3.3          curl_4.3          testthat_2.3.2    memoise_1.1.0     glue_1.4.1       
[28] compiler_4.0.2    desc_1.2.0        backports_1.1.8   prettyunits_1.1.1

看起來@hadley 幾天前發布了 tidyr 的更新,基於新的 cpp11 package: https://github.com/tidyverse/tidyr/releases

出於某種原因,這導致 tidyr 無法為我們構建。

我們的(希望是暫時的:)解決方法是這樣的:

(1) 移除對tidyverse的依賴。 相反,顯式依賴子包(如 dplyr/ggplot2/etc.)

(2)通過以下方式安裝tidyr:

packageurl <- "https://cran.r-project.org/src/contrib/Archive/tidyr/tidyr_1.1.0.tar.gz"
install.packages(packageurl, repos=NULL, type="source")

看起來以下提交正在解決這個問題,但不確定何時將其推送到 CRAN: https://github.com/r-lib/cpp11/commit/779669a4d0b07e9f9d9382114f44e4f6ff68eebb

我在這里找到以下內容: https://github.com/tidyverse/tidyr/issues/1024

解決方法是將 cpp11 降級到 0.1 版:

devtools::install_version("cpp11", version = "0.1", repos = "http://cran.us.r-project.org")

基於來自@djacobs7、@mkamenet3 和@Leandro R 的回答。 M. de Marco,我最終實施了以下對我有用的解決方案。

  1. 刪除我從 cran 安裝的cpp11 package。
  2. 重新安裝cpp11 package,但這次來自 github,因為它包含@mkamenet3 提到的提交。
 devtools::install_github("r-lib/cpp11")
  1. 正常安裝tidyr
 install.packages("tidyr")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM