R и libcurl4 вряд ли сосуществуют в Ubuntu 18.04 - PullRequest
0 голосов
/ 21 апреля 2020

У меня Ubuntu 18.04. Я недавно обновил свою версию R с 3.2.3 до 3.6.3. После переустановки пакетов, которые мне нужны, я наткнулся на проблему, вызванную httr и curl . Другие посты, особенно this (но также this и this ) были написаны о похожих (если не почти идентичных проблемах), но их следование ни к чему не привело, и мои проблема все еще существует.

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

Я пытаюсь установить пакет с httr среди зависимостей. Поскольку мне нужно переустановить его, я попытался сделать это с install.packages("httr") и с локального пути (см. Пример).

> install.packages("/home/schmat/Documents/Marti/packages/httr_1.4.1.tar.gz", repos = NULL, type="source")
Installing package into ‘/home/schmat/R/x86_64-pc-linux-gnu-library/3.6’
(as ‘lib’ is unspecified)
ERROR: dependency ‘curl’ is not available for package ‘httr’

Это показало, что curl недоступен, поэтому я попытался установить curl таким же образом. Только чтобы получить это:

No package 'libcurl' found
Using PKG_CFLAGS=
Using PKG_LIBS=-lcurl
------------------------- ANTICONF ERROR ---------------------------
Configuration failed because libcurl was not found. Try installing:
 * deb: libcurl4-openssl-dev (Debian, Ubuntu, etc)
 * rpm: libcurl-devel (Fedora, CentOS, RHEL)
 * csw: libcurl_dev (Solaris)
If libcurl is already installed, check that 'pkg-config' is in your
PATH and PKG_CONFIG_PATH contains a libcurl.pc file. If pkg-config
is unavailable you can set INCLUDE_DIR and LIB_DIR manually via:
R CMD INSTALL --configure-vars='INCLUDE_DIR=... LIB_DIR=...'
--------------------------------------------------------------------

Поскольку это показало, что мне нужно установить libcurl4-openssl-dev, я попытался сделать это через apt install, и я получил:

The following packages have unmet dependencies:
 libcurl4-openssl-dev : Depends: libcurl4 (= 7.58.0-2ubuntu3.8) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Так что я попытался добавить файл libcurl.pc, который у меня есть, к $PKG_CONFIG_PATH:

export PKG_CONFIG_PATH=/home/schmat/anaconda3/lib/pkgconfig/libcurl.pc

безрезультатно.

Я попробовал git clone подход, предложенный в этой теме , но безуспешно.

В этот момент я попытался установить libcurl4 из apt install. Однако при этом мой R удаляет удаленный из системы. Я переустановил R (та же версия, 3.6.3), и это удаляет libcurl4.

Я застрял в этом l oop, где я не могу получить то, что мне нужно, потому что чего-то еще не хватает, по кругу. Как это возможно? Почему пакет R (последняя версия, 26 марта 2020 года!), Для которого в конечном итоге требуется какая-либо функция curl, не может быть установлен, поскольку curl не может сосуществовать с R/3.6.3?

1 Ответ

0 голосов
/ 21 апреля 2020

Невероятно, как после нескольких дней проб и ошибок, в тот самый момент, когда я решил написать здесь вопрос, я также нашел ответ через несколько минут.

В одной из предоставленных мной ссылок ( this ), OP упоминает, что он очистил /etc/apt/sources.list от "rubbi sh". Однако не указано, какой руби sh или как файл был отредактирован.

Я сделал (и работал) для меня следующее.

  1. Я отредактировал файл (с правами sudo), изменив последние две строки с:
deb https://cloud.r-project.org/bin/linux/ubuntu xenial-cran35/
# deb-src https://cloud.r-project.org/bin/linux/ubuntu xenial-cran35/

На:

deb https://cloud.r-project.org/bin/linux/ubuntu/ bionic-cran35/
deb-src https://cloud.r-project.org/bin/linux/ubuntu/ bionic-cran35/

Обратите внимание, что Я изменил «xenial» на «bioni c» и раскомментировал последнюю строку.

Закрытие и повторное открытие терминала.

Ран sudo apt update и sudo apt upgrade.

Установлено libcurl4 через sudo apt install -y libcurl4. Это все еще удаляет R и его компоненты.

Установлено libcurl4-openssl-dev через sudo apt install -y libcurl4-openssl-dev.

Ран sudo apt update и sudo apt upgrade.

Установлено r-base через sudo apt install -y r-base. На этот раз libcurl4 не удаляется.

Запустите R и установите нужный мне пакет.

...