8 votes

Installation de paquets R dans macOS Mojave : Erreur dans if (nzchar(SHLIB_LIBADD))

J'ai essayé d'installer des paquets R directement à partir du terminal mais j'ai beaucoup plus de mal que de configurer les bibliothèques que je veux dans Windows. Parfois, cela fonctionne si j'installe chaque dépendance pour les paquets plus complexes en les téléchargeant depuis CRAN et en les plaçant dans le dossier R. Je suis conscient que ce n'est pas efficace mais l'erreur récurrente si je lance R dans le terminal pendant l'installation de certains paquets est la suivante :

** 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

J'ai consulté de nombreux forums mais la seule solution que j'ai trouvée jusqu'à présent est d'installer manuellement les dépendances individuelles en les téléchargeant et en les déposant dans le dossier R principal. Cela prend beaucoup plus de temps que prévu. Toute suggestion sera appréciée. Merci

21voto

YONGCHAO ZHANG Points 171

Dans mon cas (centos 7) : /home/xilab/miniconda3/lib/R/etc/Makeconf est un fichier vide !

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 n'est pas vide, donc :

 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

problème résolu !

10voto

bJust Points 141

J'ai vu ce problème dans la version conda de R où /votre/anaconda/environnement/lib/R/etc/ a un fichier Makeconf.mro.original avec un fichier Makeconf vide. Cela ne devrait pas être prévu.

Pendant l'installation de certains paquets, R vérifie ce qui se trouve dans ce fichier Makeconf, l'un de ces contrôles concerne SHLIB_LIBADD. J'ai juste sauvegardé le fichier Makeconf vide (ou autre). Puis j'ai copié Makeconf.mro.original dans Makeconf.

Cela a résolu mon cas.

EDIT :

Récemment, j'ai vu dans centos-machine que le fichier Makeconf.mro.original n'est pas créé après l'échec de install.packages("nom de la bibliothèque"). Il n'y a pas de solution facile pour cela.

Dans mon cas, l'installation de R était dans un environnement Conda. J'ai donc créé un nouvel environnement conda avec l'installation de R. La nouvelle installation a un fichier Makeconf dans le répertoire etc. J'ai donc copié le fichier Makeconf de la nouvelle installation de R dans le répertoire etc de mon ancienne installation de R.

Il peut être préférable de conserver une copie de sauvegarde de Makeconf de etc vers un Makeconf.bak pour les problèmes futurs, dans votre répertoire de travail R etc.

J'espère que cela vous aidera dans certains cas.

1voto

mfripp Points 46

J'ai eu ce problème en essayant d'exécuter install.packages("RPostgres") dans une version de R installée par Conda. La solution était d'utiliser conda comme gestionnaire de paquets au lieu de celui de R install.packages fonction. Cela signifie qu'il faut exécuter ces commandes à l'invite de commande d'un système normal (pas dans R) :

conda search -c conda-forge RPostgres
# shows various versions of r-rpostgres
conda install -c conda-forge r-rpostgres

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X