web-dev-qa-db-fra.com

Avertissement dans install.packages: impossible de déplacer une installation temporaire

J'ai trouvé un certain nombre de questions liées à cet avertissement lors de l'installation ou de la mise à jour de paquetages dans R/RStudio, mais aucune ne semble parfaitement correspondre à ma situation:

  • Système d'entreprise Windows 7, donc pas d'accès aux privilèges d'administrateur
  • Aucun moyen de modifier les listes d'exceptions de McAfee Anti-Virus
  • R est entièrement installé dans l'espace utilisateur C:\Users\[myname]\R
  • RStudio entièrement installé dans l'espace utilisateur C\Users\[myname]\RStudio
  • pas de problèmes de permission dans l'un ou l'autre des répertoires ... j'ai un contrôle d'accès total sur eux
  • Le problème n'a démarré qu'après l'installation de R 3.4, mais RStudio a échoué de manière aléatoire au démarrage ou est suspendu pendant quelques mois maintenant.
  • R_LIBS_USER ajouté en tant que variable d'environnement utilisateur, pointant vers le bon répertoire
  • .libPaths() affiche les répertoires corrects, système et utilisateur
  • R version 3.4.2, RStudio version 1.0.153
  • Désinstallez R et Rstudio et réinstallez proprement les deux
  • J'ai essayé trace(utils:::unpackPkgZip,edit = T) et modifié la ligne 140 Sys.sleep(0.5) en Sys.sleep(2), qui fonctionne parfois temporairement, mais la modification ne reste pas en place ... réinitialise à Sys.sleep(0.5) à chaque redémarrage de session
  • Se passe à la fois dans RStudio et RGui
  • Tout paquet de plus de quelques Kb donne le message:

    package ‘packagename’ successfully unpacked and MD5 sums checked
    Warning in install.packages :
      unable to move temporary installation ‘C:\Users\[myname]\R\win-library\3.4\file2b884fc37c13\packagename’ to ‘C:\Users\[myname]\R\win-library\3.4\packagename’
    

Les packages ne parviennent pas à installer ou mettre à jour. Donc, mes questions sont:

  1. existe-t-il un moyen d'éviter le problème sans nécessiter des privilèges d'administrateur ou des modifications des stratégies antivirus?
  2. existe-t-il un moyen de modifier la variable unpackPkgZip afin de la sauvegarder définitivement?

À ce stade, je suis perplexe. Je suppose que cela a quelque chose à voir avec l'antivirus qui verrouille temporairement le fichier/répertoire après le téléchargement, mais je ne peux rien y faire à partir de là. Sys.sleep(2) semble faire l'affaire, mais je ne peux pas continuer à le faire avant chaque installation ou mise à jour de paquet, et je ne peux pas obtenir l'édition pour rester en place.

21
Scard

C’est la seule chose qui a fonctionné pour moi sur cette question (la désinstallation du logiciel antivirus ne m’a malheureusement pas conduit nulle part), alors espérons que cela fonctionne pour vous. 

Sur les systèmes Windows, l'installation des bibliothèques peut parfois s'exécuter trop rapidement, ce qui crée l'erreur "Impossible de déplacer l'installation temporaire". Ensuite, le paquet n'est pas trouvé dans la bibliothèque utilisateur, car il n'a pas été déplacé ...

Pour résoudre ce problème, essayez: trace(utils:::unpackPkgZip, edit=TRUE)

Ensuite, allez à la ligne 140 dans le code et remplacez Sys.sleep(0.5) par Sys.sleep(2.5)

Il s’agit d’une solution agréable à long terme qui ne nécessite pas de déplacement manuel des packages, de désinstallation de logiciels, de remplacement des responsabilités de l’administrateur, ni d’acheminement individuel des packages vers certains emplacements.

26
kslayerr

Ma réponse initiale est ci-dessous, mais j'ai par la suite trouvé une meilleure solution.

Exécutez la ligne suivante: 

Trace(utils:::unpackPkgZip, edit=TRUE)

Notez qu'il y a trois colons, pas deux.

Ensuite, éditez la ligne 142, de "Sys.sleep (0.5)" à: "Sys.sleep (2.0)", et cliquez pour enregistrer la modification (le numéro de ligne peut varier légèrement). Malheureusement, cela ne dure pas entre les sessions R, mais cela ne prend que 10 secondes et vous pouvez ensuite installer les packages de la session en cours au contenu de votre coeur.

Réponse originale:

J'ai rencontré le même problème au travail. J'ai pu utiliser l'approche suggérée par Sheldon, mais comme noté, cela peut devenir fastidieux rapidement. En guise d'alternative, j'ai découvert que je pouvais accéder à l'emplacement du ou des fichiers Zip téléchargés dans mon répertoire temporaire (comme indiqué par install.packages), décompresser le ou les fichiers (il y aura plusieurs fichiers Zip s'il y a des packages dépendants). ), puis déplacez ou copiez tous les répertoires décompressés directement dans mon répertoire R\win-library\3.4. Ce n’est pas très amusant non plus, mais j’ai trouvé que c’était moins pénible que de parcourir le débogueur, selon la méthode de Sheldon, en particulier lorsque plusieurs dépendances sont impliquées et doivent également être installées.

9
JeffR

Si vous ne pouvez pas désactiver votre antivirus, voici une solution de contournement qui n’implique pas la modification du fichier unpackPkgZip. Le débogage de la fonction de décompression du package, puis son exécution, donnent à l'antivirus suffisamment de temps pour s'acquitter de sa tâche sans interférer. Utilisez cette commande:

debug(utils:::unpackPkgZip) install.packages("packageName") 

puis parcourez le code (en appuyant plusieurs fois sur entrée) lorsque R lance le débogage pendant l’installation.

J'ai trouvé cette solution ici .

Si vous voulez rendre cette modification plus permanente, vous pouvez ajouter le code de débogage dans votre fichier Rprofile, voir ici , mais vous devrez toujours utiliser la fonction de décompression chaque fois qu'un paquet est installé.

5
Sheldon

Nous avons eu le même problème sur mon lieu de travail et un de mes collègues a découvert une excellente solution de contournement. Malheureusement, c'est une chose temporaire que vous devrez faire chaque fois que vous installez des packages, plutôt qu'un correctif permanent. Nous utilisons Windows 8 d'entreprise (pas de privilèges d'administrateur) avec McAfee, ce que j'ai déjà testé dans la version 3.4.0-3.4.3.

Désactiver temporairement la fonctionnalité «Analyse sur accès» de McAfee (dans Threat Prevention) a résolu ce problème: les packages R s'installent désormais du premier coup, comme ils sont censés l'être. Voici les étapes détaillées pour désactiver cela:

  1. Cliquez avec le bouton droit de la souris sur l'icône McAfee dans la zone de notification à droite de la barre des tâches .__, puis sélectionnez McAfee Endpoint Security. 
  2. Cliquez sur Prévention des menaces. Ceci ouvre un écran dans lequel vous devriez voir des catégories telles que "Protection contre l'accès", "Prévention contre les exploits" et "Analyse à l'accès".
  3. Décochez la case "Activer l'analyse à l'accès", puis cliquez sur Appliquer. (NB: il est facile d'oublier de cliquer sur Appliquer, mais c'est essentiel)

Une fois vos packages installés, il est préférable de répéter le processus pour réactiver le contrôle sur accès.

4
dnidz

A obtenu la même erreur - semble être un problème de sécurité gp/accès de l'entreprise.

Il peut également être intéressant de vérifier si le dossier dans lequel il échoue à écrire a une structure en lecture seule (clic droit - Propriétés). L'adresse de ce dossier peut être trouvée en exécutant: .libPaths () [1] in R.

Une solution ad hoc à ce problème consiste à décompresser et à stocker les packages téléchargés (mais non déplacés) à l'aide d'un morceau de code R ci-dessous. Vous obtiendrez une erreur indiquant l'emplacement des packages binaires (quelque chose comme: C:/Users/.... AppData/...)

Maintenant, vous pouvez simplement décompresser les fichiers d’ici à votre emplacement .libPaths ()

zipF <- list.files("C:/Users/<YOURNAMEHERE>/AppData/Local/Temp/Rtmp4Apz6Z/downloaded_packages", full.names = TRUE)
outDir <- .libPaths()[1]

for(i in 1: length(zipF)) {
unzip(zipF[i],exdir=outDir)
}

Une solution plus générale sera toujours extrêmement utile, car il s’agit malheureusement d’un problème courant lors de la mise à jour de R sous Windows.

4
Nick

J'ai corrigé l'instance de ce problème (Windows 7) en supprimant l'attribut "Lecture seule" du dossier que R essayait de déplacer.

Je suis allé à la commande Exécuter du menu Démarrer de Windows (7) et tapé Attrib -r + s lecteur: \\

Notez que cliquer avec le bouton droit de la souris sur le dossier et essayer de modifier les propriétés n'a pas pris, comme l'indique ce lien de Microsoft: https://support.Microsoft.com/en-us/help/326549/you-cannot-view- ou-changer-la-lecture-seule-ou-le-système-attributs-de-fo

J'espère que ça aide quelqu'un.

J'espère que ce changement ne me dérange pas autrement.

1
DavidE

J'ai eu du mal avec le même problème. Pour moi (sous Windows 10), le problème était d'utiliser MalwareBytes (version d'évaluation). Je l'ai désinstallé et je suis retourné à l'aide de Windows Defender, et le problème a été résolu. Peut-être que si plus de temps je peux trouver comment créer une exception et/ou un délai de vérification de fichier pour MalwareBytes (c'est-à-dire un très bon programme), mais le guide de l'utilisateur ( https://www.malwarebytes.com /pdf/guides/Malwarebytes-User-Guide.pdf ) n’est pas clair à ce sujet. 

0
jrdunson

J'ai également trouvé une solution si les solutions ci-dessus ne fonctionnaient pas dans l'antivirus d'entreprise . Commencez par modifier le chemin d'installation du package. Utilisez cette commande et exécutez-la dans R: 

install.packages('caTools','D:\\ML\\Tools\\Installed\\RPackages')

Maintenant, une erreur de la console ne pouvant pas être déplacée sera affichée et le paquet est placé à un endroit donné. Rappelez-vous simplement de cet emplacement, nous avons besoin de ce fichier Zip pour de futures opérations.

Maintenant, utilisez cette commande:

install.packages("D:/ML/Tools/Installed/RPackages/caTools_1.17.1.Zip", repos = NULL, type = "win.binary", lib="D:/ML/Tools/Installed/R-3.4.3/library") 
0
Vikalp Jain

C'était le message d'erreur qui a été craché pour moi:

package ‘mlogit’ successfully unpacked and MD5 sums checked
Warning in install.packages :
unable to move temporary installation ‘C:\Users\E\Documents\R\win-
library\3.4\file9ec6cfb5e40\mlogit’ to ‘C:\Users\E\Documents\R\win-
library\3.4\mlogit’

The downloaded binary packages are in
C:\Users\E\AppData\Local\Temp\RtmpS0uNDm\downloaded_packages

Ce que j’ai fait est allé à l’endroit où le paquet a été téléchargé (C:\Utilisateurs\E\AppData\Local\Temp\RtmpS0uNDm\downloads_packages) puis copié ce fichier compressé sur le bureau, puis utilisé Winzip pour décompresser dans mon répertoire les packages pour R sont stockés (C:\Utilisateurs\E\Documents\R\win-library\3.4). Il va maintenant charger dans R.

library("mlogit")
Loading required package: Formula
Loading required package: maxLik
Loading required package: miscTools
....

Cela a bien fonctionné pour moi car c’était le seul paquet qui ne téléchargeait pas pour une raison quelconque. Cela ne serait peut-être pas utile si vous deviez le faire pour chaque paquet.

0
EDennnis