web-dev-qa-db-fra.com

chemin d'installation non accessible en écriture R, impossible de mettre à jour les packages

J'essaye d'installer Bioconductor dans R, en utilisant le code sur leur site web. Lorsque je tape le code (voir ci-dessous), un message d'erreur m'indique que certains packages ne peuvent pas être mis à jour, le chemin d'installation est non écris.

> ## try http:// if https:// URLs are not supported
> source("https://bioconductor.org/biocLite.R")
Bioconductor version 3.4 (BiocInstaller 1.24.0), ?biocLite for help
> biocLite()
BioC_mirror: https://bioconductor.org
Using Bioconductor 3.4 (BiocInstaller 1.24.0), R 3.3.2 (2016-10-31).
installation path not writeable, unable to update packages: Matrix, mgcv,

survie

Je peux installer ces paquets en allant dans packages/install packages.

> utils:::menuInstallPkgs()
trying URL    'https://www.stats.bris.ac.uk/R/bin/windows/contrib/3.3/Matrix_1.2-8.Zip'
Content type 'application/Zip' length 2775038 bytes (2.6 MB)
downloaded 2.6 MB

trying URL 'https://www.stats.bris.ac.uk/R/bin/windows/contrib/3.3/mgcv_1.8-  16.Zip'
Content type 'application/Zip' length 2346257 bytes (2.2 MB)
downloaded 2.2 MB

trying URL     'https://www.stats.bris.ac.uk/R/bin/windows/contrib/3.3/survival_2.40-1.Zip'
Content type 'application/Zip' length 5109948 bytes (4.9 MB)
downloaded 4.9 MB

package ‘Matrix’ successfully unpacked and MD5 sums checked
package ‘mgcv’ successfully unpacked and MD5 sums checked
package ‘survival’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
    C:\Users\stxeb8\AppData\Local\Temp\Rtmp2tQZ4v\downloaded_packages

Je peux ensuite aller dans paquets/charger des paquets et les charger avec succès, puis rechercher et voir que les paquets sont là.

> local({pkg <- select.list(sort(.packages(all.available =   TRUE)),graphics=TRUE)
+ if(nchar(pkg)) library(pkg, character.only=TRUE)})
Loading required package: nlme
This is mgcv 1.8-16. For overview type 'help("mgcv-package")'.
> local({pkg <- select.list(sort(.packages(all.available = TRUE)),graphics=TRUE)
+ if(nchar(pkg)) library(pkg, character.only=TRUE)})
> local({pkg <- select.list(sort(.packages(all.available = TRUE)),graphics=TRUE)
+ if(nchar(pkg)) library(pkg, character.only=TRUE)})
> local({pkg <- select.list(sort(.packages(all.available =     TRUE)),graphics=TRUE)
+ if(nchar(pkg)) library(pkg, character.only=TRUE)})
> search()
[1] ".GlobalEnv"            "package:survival"      "package:mgcv"         
[4] "package:nlme"          "package:Matrix"        "package:BiocInstaller"
[7] "package:stats"         "package:graphics"      "package:grDevices"    
[10] "package:utils"         "package:datasets"      "package:methods"      
[13] "Autoloads"             "package:base"         

Mais ensuite, lorsque je vais installer un bioconducteur, le même message d'erreur me dit que Matrix, mgcv et la survie ne peuvent pas être mis à jour.

> ## try http:// if https:// URLs are not supported
> source("https://bioconductor.org/biocLite.R")
Bioconductor version 3.4 (BiocInstaller 1.24.0), ?biocLite for help
> biocLite()
BioC_mirror: https://bioconductor.org
Using Bioconductor 3.4 (BiocInstaller 1.24.0), R 3.3.2 (2016-10-31).
installation path not writeable, unable to update packages: Matrix, mgcv,
  survival

Que puis-je faire pour pouvoir mettre à jour ces paquets afin que je puisse installer un bioconducteur?

15
Eleanor Bellows

C'était une question de permission pour moi. Tout d'abord, j'ai identifié l'emplacement d'installation des packages à l'aide de installed.packages()[, c("Package", "LibPath")]. Ceci produit une longue matrice de 2 colonnes avec les noms et les emplacements des packages. Ensuite, vous verrez où se trouvent les colis en cause. Dans mon cas, ils étaient à /usr/lib/R/site-library et /usr/lib/R/library. Ensuite, j’ai modifié l’autorisation de ces dossiers par chmod (j’ai utilisé chmod -R 777 dans le dossier principal R, c’est mon ordinateur personnel; la sécurité n’est donc pas un gros problème ici, je pense).

12
Deleet

Comme Martin Morgan a répondu, les packages Bioconductor auraient dû être installés malgré les messages d'erreur. Cependant, cela continue à se produire lors des mises à jour ultérieures des packages.

En général, je vous déconseille de modifier l'autorisation des dossiers système, car des programmes tels que R devraient fonctionner sans droit administratif. 

Si vous évitez de modifier les autorisations des dossiers système, je vous déconseillerais également d'installer des packages en utilisant des droits d'administration, comme vous le feriez dans le futur, chaque fois que vous devrez mettre à jour ces packages!

Le meilleur moyen de résoudre ce problème consiste à réinstaller les packages précédemment installés avec les droits d’administrateur. Les paquets peuvent être identifiés à partir du code d'erreur produit par Bioconductor. Dans votre cas, ces packages sont Matrix, mgcv, survival - notez que le message d'erreur ne fait pas la distinction entre les packages CRAN et Bioconductor, il inclut tous les packages précédemment installés avec des droits d'administrateur!

Pour supprimer les packages signalés, ouvrez R avec les droits d'administration (pour la dernière fois, espérons-le) et utilisez remove.packages() pour supprimer tous les packages signalés, y compris les packages Bioconductor. Pour votre cas:

remove.packages(c("Matrix", "mgcv", "survival"))

Avant de réinstaller ces packages, quittez et redémarrez R sans droits d'administrateur. Vous pouvez maintenant réinstaller les packages CRAN.

install.packages(c("Matrix", "mgcv", "survival"))

On vous demandera si vous souhaitez installer les packages dans un répertoire local, tapez yes pour cela. 

Si l'installation échoue, localisez votre répertoire R local (dans votre dossier home/user) et ajoutez-le en tant que lib =. Sur linux, la commande pourrait ressembler à ceci: 

install.packages(c("Matrix", "mgcv", "survival"), lib = "~/R/x86_64-pc-linux-gnu-library/3.5")

Si des packages Bioconductor ont déjà été installés avec des droits d’administrateur:

library(BiocInstaller)
biocLite(c("PACKAGE1", "PACKAGE2"))

Ajoutez à nouveau l'argument lib = à la commande biocLite(), sinon, impossible à installer dans le répertoire local.

Il semble que plusieurs packages "recommandés" soient installés à deux endroits différents - peut-être par un compte administrateur dans un répertoire auquel vous n'avez pas accès en écriture, puis par RStudio dans un répertoire où vous avez un accès en écriture. biocLite() se plaint de l'ancien.

Sauf si biocLite() se plaint d'un package de bioconducteur qui ne peut pas être installé (différent de ne peut pas être mis à jour), il n'y a pas de problème et les packages de base de bioconducteurs ont été installés avec succès. Consultez https://support.bioconductor.org pour un soutien futur lié aux bioconducteurs.

2
Martin Morgan

Une solution consiste à ouvrir un terminal et à charger R à l'aide des droits d'administrateur

Sudo R
update.packages()
source("https://bioconductor.org/biocLite.R")
biocLite()

Ensuite, vous pouvez mettre à jour. Mais attention Cela peut créer des packages par l'administrateur dans un répertoire supposé appartenir à un utilisateur.

Dans ce cas, au lieu de charger R en tant que root (ce qui résout le problème jusqu'à la prochaine mise à jour), vérifiez le fichier .libPaths (). Vous aurez une liste de répertoires. 

.libPaths()
"/home/it_s_me/R/x86_64-pc-linux-gnu-library/3.4" "/usr/lib/R/library"

Dans mon cas, tous les paquets dans "/ usr/lib/R/bibliothèque" appartiennent à root et tous sauf un appartiennent à un utilisateur normal (et non root) de "/ home/itsame/R/x86_64-pc-linux -gnu-library/3.4 ".

Si vous avez les droits d’administrateur, une solution simple consiste peut-être à exécuter chown dans tous les emplacements: par exemple, j’ai eu du mal à mettre à jour le paquet curl. J'ai utilisé:

Sudo chown -R it_s_me /home/it_s_me/R/x86_64-pc-linux-gnu-library/3.4/curl/
0
Gildas