Ошибки сборки R-пакетов для conda
Мне тяжело устанавливать R-пакеты, которых нет в репозиториях Anaconda. Мои попытки до сих пор можно найти здесь. Как установить R-пакеты не в репозитории conda?,
В настоящее время я пытаюсь собрать R-пакет rafalib
за conda
следуя инструкциям из этой статьи под заголовком Создание пакета conda R.
Первая часть работает отлично.
conda skeleton cran rafalib
Из:
Tip: install CacheControl to cache the CRAN metadata
Fetching metadata from http://cran.r-project.org/
Writing recipe for rafalib
Done
Команда build сталкивается с ошибками
conda build r-rafalib
Из:
Removing old build environment
Removing old work directory
BUILD START: r-rafalib-1.0.0-r3.2.2_0
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata: ......
Solving package specifications: .
Error: Packages missing in current linux-64 channels:
- r 3.2.2*
- r-rcolorbrewer
я имею r 3.2.2
-64bit установлен через conda
и работает без проблем. У меня тоже уже есть r-colorbrewer
установлен через conda
и я могу использовать этот пакет без проблем в R. Почему я получаю эти ошибки при попытке построить conda
пакет?
Я на Linux (Antergos, производная от Arch) с ядром 4.4.5-1-ARCH.
ОБНОВЛЕНИЕ 2015/04/19
Благодаря этому ответу я узнал, что могу включить зависимости, создав их отдельно в том же каталоге, что и пакет, который я хочу установить. Это не сработало для меня, но я также прочитал, что могу включить канал в команду сборки с -c
так же, как при установке. Итак, теперь я делаю:
conda build -c r r-rafalib
Это решает все проблемы с зависимостями, но после извлечения, извлечения и компоновки пакетов происходит сбой. Вот конец сообщения об ошибке.
Removing old work directory
Source cache directory is: /home/joel/anaconda2/conda-bld/src_cache
Downloading source to cache: rafalib_1.0.0.tar.gz
Downloading http://cran.r-project.org/src/contrib/rafalib_1.0.0.tar.gz
rafalib_1.0.0. 100% |#######################| Time: 0:00:00 4.87 MB/s
Success
Extracting download
Package: r-rafalib-1.0.0-r3.2.2_0
source tree in: /home/joel/anaconda2/conda-bld/work/rafalib
+ mv DESCRIPTION DESCRIPTION.old
+ grep -v '^Priority: ' DESCRIPTION.old
+ /home/joel/anaconda2/envs/_build/bin/R CMD INSTALL --build .
sh: symbol lookup error: sh: undefined symbol: rl_signal_event_hook
Command failed: /bin/bash -x -e /home/joel/drafts/r-rafalib/build.sh
Ошибка sh: symbol lookup error: sh: undefined symbol: rl_signal_event_hook
так же, как я сталкиваюсь при использовании install.packages()
как сообщается здесь.
Есть некоторые связанные обсуждения в этой теме. Я попытался обойти эту ошибку, установив различные версии ncurses, включая эту исправленную версию, и я попытался связать библиотеки readline, как предлагается здесь, но я продолжаю сталкиваться с одной и той же ошибкой. Я довольно потерян в этой точке, и любая помощь для решения этой проблемы будет принята с благодарностью.
1 ответ
Хотя я начал с другой проблемы, окончательное решение оказалось таким же, как и в другом месте. Как установить R-пакеты, которых нет в репозиториях conda?, Я добавляю это здесь для полноты.
В итоге я обошёл rl_event_hook
проблемы, следуя подходу, рекомендованному здесь, и символической привязке libreadline anaconda к системному:
mv ~/anaconda3/lib/libreadline.s.6.2 ~/anaconda3/lib/libreadline.s.6.2.bak
ln -s /usr/lib/libreadline.so.6.3 ~/anaconda3/lib/libreadline.s.6.2
У меня все еще возникают проблемы при установке некоторых R-пакетов с зависимостью из-за невозможности загрузки общих объектов при использовании install.packages()
Однако, более простые пакеты работают нормально, и я могу получить большую часть тяжелых пакетов зависимостей из R-репозиториев anacondas.