web-dev-qa-db-fra.com

Suppression des bibliothèques R dans les chemins / usr / protégés

Je connais Unix en tant que système d'exploitation, mais pas dans la logique générale de la façon dont les développeurs décident d'organiser les emplacements de bibliothèque d'applications.

Prenez R, par exemple. L'installation de R sur ubuntu peut être effectuée avec apt-get. Vous obtiendrez une installation dans le répertoire:

/usr/local/R/lib/site-library         --> All R packages go here.
/usr/lib/R/library                    --> R packages go here.

Par défaut, ces deux répertoires ne sont pas accessibles en écriture. Alors pourquoi une installation R par défaut est-elle installée là-bas?

J'ai rencontré de nombreux problèmes lors de l'installation des packages R dans le répertoire "default" (qui, je suppose, est /usr/lib/R/library?), j'ai donc dû les installer dans un répertoire local à ~/R/x86_64_pc-linux_gnu-library/3.2.

Ma question est: comment puis-je me débarrasser de TOUTES les bibliothèques "par défaut" et utiliser UNIQUEMENT mon répertoire de bibliothèques local? Non seulement pour supprimer les anciennes bibliothèques par défaut, mais pour informer R que ma nouvelle bibliothèque par défaut se trouve à ~/R/x86_64_pc-linux_gnu-library/3.2?

1
areyoujokingme

Ces deux répertoires [/usr/local/R/lib/site-library Et /usr/lib/R/library] Ne sont pas accessibles en écriture par défaut. Alors pourquoi une installation R par défaut s’y installe-t-elle?

J'ai rencontré de nombreux problèmes lors de l'installation des packages R dans le répertoire "par défaut" (qui est, je suppose, /usr/lib/R/library?), J'ai donc dû les installer dans un répertoire local à ~/R/x86_64_pc-linux_gnu-library/3.2.

Les packages R par défaut ( par exemple , base) sont installés dans ces bibliothèques système car ils sont disponibles pour tous les utilisateurs de cette machine.

Bien qu'ils ne soient pas accessibles en écriture par un utilisateur non root, cela est de par leur conception. Un utilisateur installerait à la place ses packages supplémentaires dans une bibliothèque personnelle.

Vous pouvez voir l'emplacement par défaut de cette bibliothèque personnelle en exécutant Sys.getenv('R_LIBS_USER') dans votre console R.

La commande .libPaths() vous permet d'afficher l'ensemble actuel de chemins de recherche de bibliothèque, ainsi que d'ajouter des chemins supplémentaires.

Ma question est: comment puis-je me débarrasser de TOUTES les bibliothèques "par défaut" et utiliser UNIQUEMENT mon répertoire de bibliothèques local? Non seulement pour supprimer les anciennes bibliothèques par défaut, mais pour informer R que ma nouvelle bibliothèque par défaut est à ~/R/x86_64_pc-linux_gnu-library/3.2?

Vous ne voulez pas "vous débarrasser" de ces bibliothèques par défaut car elles contiennent l'ensemble par défaut des packages R. Celles-ci sont nécessaires pour que R fonctionne correctement.

R connaît déjà l'emplacement par défaut de la bibliothèque personnelle (voir .libPaths()).

Cependant, vous pouvez spécifier où vous souhaitez installer le package et les charger en spécifiant un emplacement de bibliothèque:

install.packages('packageName', lib = Sys.getenv('R_LIBS_USER'))
library('packageName', lib.loc = Sys.getenv('R_LIBS_USER'))

Pour contrôler plus facilement les versions du package R (ce qui est particulièrement important pour la recherche reproductible), je recommande le package Packrat . Il peut être utilisé pour configurer une bibliothèque personnelle pour chacun de vos projets, permettant à chaque projet d'utiliser son propre ensemble de packages ( c'est-à-dire , différentes versions). Lorsque vous utilisez Packrat, cela fonctionne automatiquement, vous n'avez donc pas besoin de spécifier les arguments lib ni lib.loc Lors de l'installation ou du chargement des packages.

1
amc

Si vous ne souhaitez pas utiliser la version packagée de R, vous devez installer votre propre version dans un répertoire privé d'où vous l'utiliserez.

Il est également possible de créer des packages Ubuntu de bibliothèques R supplémentaires, afin qu'elles soient installées sur le système, si c'est ce que vous voulez.

2
dobey