R devtools не удается установить - Ubuntu 20.04 - не удалось загрузить пакет или пространство имен для 'pkgload' - PullRequest
2 голосов
/ 06 мая 2020

Я очень отчаянно хочу 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. Следуя предложению Хэдли Викхема на 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 (что, по крайней мере, я надеюсь, является единственной причиной проблемы). Я проверю, решает ли вручную (пере) установка всего импорта и предложений со страницы CRAN в pkgload.

Импорт: des c, methods, pkgbuild, rlang , rproj root, rstudioapi, utils, withr
Предлагает: bitops, covr, R cpp, проверьте это

Мой результат 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

Я все еще отказываюсь верить, что установка devtools на ubuntu20 невозможна
Однако в этот момент я беру любую соломинку

Редактирование решения:

Короче говоря, для меня проблема была решена при установке пакета testthat раньше. Благодаря комментарию rui-barradas

install.packages("testthat") 
install.packages("pkgload") 
install.packages("devtools") 

1 Ответ

3 голосов
/ 06 мая 2020

Я тоже использую Ubuntu 20.04, но использую R 4.0.0.

При попытке установить пакет, если он зависит от другого пакета, который был установлен до R 4.0.0 I появляется сообщение об ошибке, и установка не выполняется. Это происходит, даже если я установил dependencies = TRUE в вызове на install.packages.

Пример: Команда была

install.packages('pkgload')

Я опускаю первые выходные строки, говоря, что файл был загружен. Затем соответствующая часть.

  • установка исходный код пакет 'pkgload' ...
    ** пакет 'rcmdcheck' успешно распакован и проверены суммы MD5
    ** с использованием поэтапной установки
    ** R
    ** байтовая компиляция и подготовка пакета к отложенной загрузке Ошибка: пакет 'testthat' был установлен до R 4.0.0: переустановите его
    Выполнение остановлено ОШИБКА: не удалось выполнить отложенную загрузку для пакета 'pkgload'
  • удаление '/ usr / local / lib / R / site-library / pkgload'
  • восстановление предыдущего '/ usr / local / lib / R / site-library / pkgload 'Предупреждение в install.packages: установка пакета' pkgload 'имела ненулевой статус выхода. Загруженные исходные пакеты находятся в
    ' / tmp / RtmpVxpbs0 / loaded_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):  
...