Ошибки при установке зависимостей R после новой установки R в Ubuntu 18.04

Система: Ubuntu 18.04

Исходная ошибка, побудившая меня попытаться переустановить R и зависимости:

Error: package or namespace load failed for 'lubridate' in dyn.load(file, DLLpath = DLLpath, ...):  unable to load shared object '/usr/local/lib/R/site-library/stringi/libs/stringi.so':   libicui18n.so.57: cannot open shared object file: No such file or directory

Действия для воспроизведения:

  1. Установить Р: apt install r-base
  2. Попробуйте установить зависимости R: install.packages(c("dplyr", "lubridate", "qcc", "forecast"), repos='http://cran.us.r-project.org')

Ошибка, отображаемая во время установки:

/usr/local/lib/R/site-library/BH/include/boost/smart_ptr/scoped_ptr.hpp:74:31: warning: 'template<class> class std::auto_ptr' is deprecated

Ошибка, которая появляется после установки:

The downloaded source packages are in
    '/tmp/RtmpnulsEe/downloaded_packages'
Warning message:
In install.packages(c("dplyr", "lubridate", "qcc", "forecast", "stringi"),  :
  installation of package 'forecast' had non-zero exit status

После очистки и переустановки зависимостей r-base и R я вижу это... (уже проверил, что libcurl4-openssl-dev была последней версией):

Error: package or namespace load failed for 'forecast' in dyn.load(file, DLLpath = DLLpath, ...): 
unable to load shared object '/usr/local/lib/R/site-library/curl/libs/curl.so':
/usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by /usr/local/lib/R/site-library/curl/libs/curl.so)

Обновление: видимо, это что-то в библиотеке forecast, потому что я воспроизвел эту ошибку следующим образом:

$ R
> library(forecast)
Error: package or namespace load failed for 'forecast' in dyn.load(file, DLLpath = DLLpath, ...):
 unable to load shared object '/usr/local/lib/R/site-library/curl/libs/curl.so':
  /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by /usr/local/lib/R/site-library/curl/libs/curl.so)

person Blairg23    schedule 30.05.2018    source источник
comment
В последнее время у меня часто возникает эта проблема... с большинством пакетов, установкой devtools, а затем выполнением установки из github, например. devtools::install_github("tidyverse/lubridate") работает.   -  person mysteRious    schedule 30.05.2018
comment
Это круговой аргумент. ОП говорит, помогите мне, я не могу установить из исходного кода, и вы говорите здесь, установите из исходного кода. Не помогает ему преодолевать build-зависимости.   -  person Dirk Eddelbuettel    schedule 30.05.2018


Ответы (2)


Ваша первоначальная проблема заключается в том, что stringi был создан для дистрибутива версии libicu, которая изменилась. Поскольку этот дистрибутив не знает, что у вас есть lubridate в /usr/local, он все меняет и ломает.

Есть несколько способов исправить это. Самый простой (и самый узкий) — убедиться, что у вас установлен libicu-dev. Затем вы можете переустановить (т.е. перестроить stringi), после чего загрузится lubridate.

В остальном вы просто сходите с ума, швыряя все, что подвижно, к стене. Вам нужно уделить немного времени, чтобы понять, что вы можете либо установить все эти как двоичные файлы (т. е. из PPA-репозитория Майкла Раттера на панели запуска) или из исходного кода. Ваш звонок. У меня есть более старый ответ, объясняющий разницу здесь (а также в других продолжениях здесь), и мы также помогаем в списке r-sig-debian.

Но вкратце: прочтите этот README в CRAN (особенно сначала несколько абзацев) и рассмотрите PPA.

person Dirk Eddelbuettel    schedule 30.05.2018
comment
Интересно ... так я изначально установил R (через PPA), который не работал, поэтому я попытался установить через дистрибутив. Позвольте мне попробовать это снова после очередной очистки и посмотреть, смогу ли я заставить его работать правильно. - person Blairg23; 30.05.2018
comment
Теперь я вспомнил, почему я не мог использовать PPA: Get:10 http://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB] Err:11 https://cran.rstudio.com/bin/linux/ubuntu bionic/ Release 404 Not Found [IP: 52.84.243.137 443] Reading package lists... Done E: The repository 'https://cran.rstudio.com/bin/linux/ubuntu bionic/ Release' does not have a Release file. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details. - person Blairg23; 30.05.2018
comment
Кажется, я не могу найти зеркало CRAN / PPA, поддерживающее Bionic, за исключением PPA Майкла Руттера (sudo add-apt-repository ppa:marutter/rrutter), но я все еще получаю ошибки при попытке установить R или библиотеки... - person Blairg23; 30.05.2018
comment
Их два: один для самого R 3.5 (launchpad.net/~marutter/+ archive/ubuntu/rrutter3.5), а затем один с пакетами (launchpad. net/~marutter/+archive/ubuntu/c2d4u). Дополнительные сведения см. в блоге Майкла (rubuntu.netlify.com). - person Dirk Eddelbuettel; 30.05.2018

Попробовав следующее (удаляя и переустанавливая R между каждым шагом):

  1. apt purge r-base
  2. Добавлено/удалено несколько разных PPA, прежде чем выяснилось, что ни один из них не поддерживает Bionic Beaver. Результат: Release not found.
  3. Нашел PPA Майкла Раттера и попытался его использовать. Результат: то же сообщение об ошибке, что и выше ('CURL_OPENSSL_3' not found).
  4. Попытка нескольких решений этой SO статьи. Результат: то же сообщение об ошибке, что и выше ('CURL_OPENSSL_3' not found).
  5. Прочтите эту статью и выполните следующее в R:

    > remove.packages("curl")
    > install.packages("curl")
    > install.packages(c("dplyr", "lubridate", "qcc", "forecast", "stringi", "curl"), repos='http://cran.us.r-project.org')
    

И все заработало как задумано.

person Blairg23    schedule 30.05.2018
comment
Последний шаг может использовать двоичный код для r-cran-dplyr, r-cran-lubridate,... - person Dirk Eddelbuettel; 30.05.2018