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?
Après le 8 juillet 2017, cela résoudra tous les problèmes
Sudo apt-get update
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
.
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:
/usr/local/lib/
avec cd /usr/local/lib/
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/
).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é.
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.
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'}
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.