Я пытался установить пакеты R прямо из терминала, но мне приходится бороться не только с настройкой нужных мне библиотек в Windows. Иногда это срабатывает, если я устанавливаю все зависимости для более сложных пакетов, загружая их из CRAN и помещая в папку R. Я понимаю, что это неэффективно, но повторяющаяся ошибка, если я запускаю R в терминале при установке некоторых пакетов, выглядит следующим образом:
** libs
Error in if (nzchar(SHLIB_LIBADD)) SHLIB_LIBADD else character() :
argument is of length zero
* removing ‘/anaconda3/lib/R/library/<package name>’
[...]
In install.packages("<package name>") :
installation of package ‘fpc’ had non-zero exit status
Я просматривал множество форумов, но до сих пор нашел единственное решение - установить отдельные зависимости вручную, загрузив их и поместив в основную папку R. Это займет больше времени, чем ожидалось. Любое предложение будет оценено по достоинству. Спасибо
Да, моя конечная цель - показать все выходные данные моего кода R в записной книжке Jupyter, поскольку это формат html, которым легче поделиться. Тем не менее, я не могу понять, что на самом деле означает ошибка и как ее исправить.
Вкратце, только установив пакеты через conda, мне удалось установить их, а не из R.Также необходимо обновить различные зависимости, поэтому компиляция всей библиотеки - это гораздо более трудоемкий процесс, и нужно выполнить много работы. Компиляция C++ наряду с обновлением зависимостей, не зависящих от R. Мне все еще интересно, что означает ошибка ...
Я видел эту проблему в версии R conda, где / yours / anaconda / environment / lib / R / etc / имеет файл Makeconf.mro.original вместе с пустым файлом Makeconf. Этого не должно быть.
Во время установки некоторых пакетов R проверяет содержимое этого файла Makeconf, одна из таких проверок - SHLIB_LIBADD. Я только что сделал резервную копию пустого (или любого другого) файла Makeconf. Затем скопируйте Makeconf.mro.original в Makeconf.
Это решило мой случай.
Обновлено:
Недавно я увидел в centos-machine, что файл Makeconf.mro.original не создается после сбоя install.packages («имя библиотеки»). Для этого нет простого решения.
В моем случае установка R была внутри среды conda. Итак, я создал новую среду conda с установкой R. В новой установке есть файл Makeconf в каталоге etc. Итак, я скопировал файл Makeconf из свежего R в мой ранее работавший каталог R.
Возможно, будет лучше сохранить резервную копию Makeconf из etc в Makeconf.bak на случай будущих проблем в вашем рабочем каталоге R etc.
Я надеюсь, что это поможет в некоторых случаях.
Спасибо! Ваш обходной путь также работал в системе Linux, где у меня была точно такая же проблема.
Отличная находка! Это решило проблему с Rcpp
, который у меня не работает.
Не могли бы вы помочь мне найти файл Makeconf.mro.original? Я не вижу в anaconda / environment / lib / R / etc /
@ Самир. Может случиться так, что при установке компиляция завершилась неудачно на другом этапе, и Makeconf.pro.original не будет создан. В любом случае, вы должны посмотреть anaconda / envs / NameOfYourEnviroment / lib / R / etc, или, в зависимости от того, как установлен R, можно посмотреть в anaconda / lib / R / etc
в моем случае (centos 7):
/home/xilab/miniconda3/lib/R/etc/Makeconf
- это пустой файл!
find ~ -name Makeconf
/home/xilab/miniconda3/pkgs/r-base-3.6.1-hce969dd_0/lib/R/etc/Makeconf
/home/xilab/miniconda3/pkgs/r-base-3.6.1-h8900bf8_2/lib/R/etc/Makeconf
/home/xilab/miniconda3/envs/python2.7/lib/R/etc/Makeconf
/home/xilab/miniconda3/lib/R/etc/Makeconf
/home/xilab/miniconda3/pkgs/r-base-3.6.1-hce969dd_0/lib/R/etc/Makeconf
не пустой, поэтому:
mv /home/xilab/miniconda3/lib/R/etc/Makeconf /home/xilab/miniconda3/lib/R/etc/Makeconf.backup
cp /home/xilab/miniconda3/pkgs/r-base-3.6.1-hce969dd_0/lib/R/etc/Makeconf /home/xilab/miniconda3/lib/R/etc/Makeconf
проблема решена!
недавно я столкнулся с другой проблемой (zlib.h: No such file or directory
), и я снова проверил файл Makeconf
, я обнаружил, что мне нужно изменить путь к -I
.
vi /home/xilab/miniconda3/lib/R/etc/Makeconf # replace /opt/anaconda1anaconda2anaconda3 with /home/xilab/miniconda3 :%s//opt/anaconda1anaconda2anaconda3//home/xilab/miniconda3/g
У меня возникла эта проблема при попытке запустить install.packages("RPostgres")
в установленной conda версии R. Решением было использовать conda
в качестве диспетчера пакетов вместо функции R install.packages
. Это означало запуск этих команд в обычной системной командной строке (не в R):
conda search -c conda-forge RPostgres
# shows various versions of r-rpostgres
conda install -c conda-forge r-rpostgres
Возможно, вам следует использовать R-правильную версию против анаконды или, по крайней мере, попробовать это, поскольку это, вероятно, проблема (я был на Мохаве с WWDC, и у меня не было проблем, но я использую правильный R против анаконды, искалеченной R)