Установка пакетов R в macOS Mojave: ошибка в if (nzchar (SHLIB_LIBADD))

Я пытался установить пакеты 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-правильную версию против анаконды или, по крайней мере, попробовать это, поскольку это, вероятно, проблема (я был на Мохаве с WWDC, и у меня не было проблем, но я использую правильный R против анаконды, искалеченной R)

hrbrmstr 17.12.2018 11:39

Да, моя конечная цель - показать все выходные данные моего кода R в записной книжке Jupyter, поскольку это формат html, которым легче поделиться. Тем не менее, я не могу понять, что на самом деле означает ошибка и как ее исправить.

Nicola 17.12.2018 11:50

Вкратце, только установив пакеты через conda, мне удалось установить их, а не из R.Также необходимо обновить различные зависимости, поэтому компиляция всей библиотеки - это гораздо более трудоемкий процесс, и нужно выполнить много работы. Компиляция C++ наряду с обновлением зависимостей, не зависящих от R. Мне все еще интересно, что означает ошибка ...

Nicola 17.12.2018 15:34
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
8
3
5 385
3

Ответы 3

Я видел эту проблему в версии 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, где у меня была точно такая же проблема.

cymon 26.02.2019 12:11

Отличная находка! Это решило проблему с Rcpp, который у меня не работает.

Brian B 22.04.2019 03:46

Не могли бы вы помочь мне найти файл Makeconf.mro.original? Я не вижу в anaconda / environment / lib / R / etc /

Samir 09.07.2019 22:24

@ Самир. Может случиться так, что при установке компиляция завершилась неудачно на другом этапе, и Makeconf.pro.original не будет создан. В любом случае, вы должны посмотреть anaconda / envs / NameOfYourEnviroment / lib / R / etc, или, в зависимости от того, как установлен R, можно посмотреть в anaconda / lib / R / etc

bJust 11.07.2019 04:26

в моем случае (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.

YONGCHAO ZHANG 25.10.2019 06:37
vi /home/xilab/miniconda3/lib/R/etc/Makeconf # replace /opt/anaconda1anaconda2anaconda3 with /home/xilab/miniconda3 :%s//opt/anaconda1anaconda2anaconda3//home/xilab/minico‌​nda3/g
YONGCHAO ZHANG 25.10.2019 06:40

У меня возникла эта проблема при попытке запустить 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 

Другие вопросы по теме