web-dev-qa-db-fra.com

R 3.4.1 Erreur de chemin de la bibliothèque personnelle "Single Candle": impossible de créer "NA"

Je viens de mettre à jour R (3.4.1 "Single Candle") sur ma machine Linux Mint 18.1 Cinnamon et j'ai essayé d'installer un paquet. R a renvoyé ce qui suit:

> install.packages('ggplot2')
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Warning in install.packages("ggplot2") :
  'lib = "/usr/local/lib/R/site-library"' is not writable
Would you like to use a personal library instead?  (y/n) y
Would you like to create a personal library
NA
to install packages into?  (y/n) y
Error in install.packages("ggplot2") : unable to create ‘NA’

J'ai déjà rencontré la sortie 'lib not writeable' avant, mais elle offre généralement une solution semblable à celle-ci:

Would you like to create a personal library
~/R/x86_64-pc-linux-gnu-library/3.4
to install packages into?  (y/n) y 

Des idées pour lesquelles la bibliothèque personnelle suggère NA? Y at-il un moyen de remplacer manuellement cela? 

41
Biolife12

Après le 8 juillet 2017, cela résoudra tous les problèmes

Sudo apt-get update
3
MYaseen208

Je ne sais pas ce qui cause ce problème (je le rencontre également sur Ubuntu 16.04), mais voici une solution rapide:

.libPaths(c("/home/your_username/R/x86_64-pc-linux-gnu-library/3.4/", .libPaths()))

Bien sûr, vous pouvez remplacer "/home/your_username/..." pour n’importe quel autre répertoire (qui stockera votre bibliothèque personnelle).

Cette solution permet d'utiliser install.packages() et library(). En attente d'un correctif complet!

EDIT: Je dois noter que cette solution n'est pas persistante. Autrement dit, cela ne durera pas après le redémarrage de R. Vous pouvez résoudre ce problème en ajoutant la même ligne de code décrite ci-dessus dans le fichier /home/your_username/.Rprofile.

12
arcruz0

En regardant les détails dans le commentaire de @Dirk ( https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=866768 ), il s'agit d'un comportement planifié pour que les packages soient installés une fois pour toutes utilisateurs du système.

La solution consiste à rendre /usr/local/lib/R/ accessible en écriture pour tous les utilisateurs, plutôt que de rétablir l'ancien comportement consistant à disposer d'une bibliothèque de packages personnels pour chaque utilisateur.

Ouvrez un terminal et:

  • Accédez à /usr/local/lib/ avec cd /usr/local/lib/
  • Modifiez le propriétaire: groupe afin que tous les utilisateurs puissent écrire dans le dossier. Il se trouve que j’ai un groupe sur mon ordinateur auquel tous les utilisateurs sont membres; je l’ai donc utilisé, mais voir https://askubuntu.com/questions/66718/how-to-manage-users-and-groups pour aider à constituer un groupe si nécessaire
  • Pour changer de propriétaire, utilisez Sudo chown owner:group -R R/. owner est un utilisateur quelconque, peu importe. group est la clé; assurez-vous que toute personne souhaitant utiliser R sur votre système est membre de ce groupe. -R est récursif (c’est-à-dire le faire pour tous les fichiers et dossiers dans R/).
  • Si vous devez modifier les autorisations du groupe, utilisez chmod -R 775 R/. Cela donne au propriétaire et au groupe des autorisations de lecture, d'écriture et d'exécution, ainsi qu'à tous les autres utilisateurs des autorisations de lecture et d'exécution.

Maintenant, redémarrez R et vous devriez pouvoir installer des paquetages sur votre emplacement partagé.

12
Phil

Ma solution était la suivante:

Dans le fichier /usr/lib/R/etc/Renviron il y a une configuration de R.

Aux lignes 43 à 45, il y a:

# edd Jun 2017  Comment-out R_LIBS_USER
#R_LIBS_USER=${R_LIBS_USER-'~/R/x86_64-pc-linux-gnu-library/3.4'}
##R_LIBS_USER=${R_LIBS_USER-'~/Library/R/3.4/library'}

J'ai décommenté R_LIBS_USER=${R_LIBS_USER-'~/R/x86_64-pc-linux-gnu-library/3.4'}, redémarré RStudio et maintenant cela fonctionne.

EDIT: En regardant les commentaires, cela semble être un comportement planifié. Ici est une autre solution.

10
potockan

Peut-être que ceci est un bogue de R 3.4.1, et ma solution est de changer la 

R_LIBS_SITE=${R_LIBS_SITE-'/usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library'} 

dans le fichier /etc/R/Renviron dans 

R_LIBS_SITE=${R_LIBS_SITE-'~/R/x86_64-pc-linux-gnu-library/3.4.1:/usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library'}
0
zefeng wu

La même chose m’est arrivée lors de l’exécution de la procédure d’installation de certains paquets Bioconductor.

Ensuite, j'ai réalisé que je pourrais aussi écrire ceci (ou similaire) sur la ligne de commande bash:

export R_LIBS_USER=$HOME/R/x86_64-pc-linux-gnu-library/3.4 && R 

ou

export R_LIBS_USER=$HOME/R/x86_64-pc-linux-gnu-library/3.4 && rstudio 

puis exécutez upgrade.packages() (ou install.packages(), ou biocLite()) dans R.

De cette façon, le changement est temporaire et vous n'avez pas à mettre à jour les fichiers de configuration.

Cette commande Shell est inutile si, par la suite, une commande dans .Renvironor. Rprofile` définit R_USER_LIBS sur un emplacement différent lors du démarrage de R (- vérifiez votre configuration).

Il peut être souhaitable de rester dans $ HOME/R/x86_64-pc-linux-gnu-library/3.X. Si vous avez déjà beaucoup de paquets dans cet emplacement, vous voulez les mettre à jour/installés là-bas. J'ai beaucoup de paquets Bioconductor dedans, et je ne veux pas qu'ils soient téléchargés à nouveau, certains d'entre eux téléchargent d'énormes jeux de données "Omics" lorsqu'ils sont utilisés . Peut-être la partition où R réside dans un espace disque insuffisant ou sur un lecteur lent.

0
knb