Windows 7, update.packages Problem: "Temporäre Installation kann nicht verschoben werden"?

75

Ich verwende R 2.13.0 mit Windows 7, nachdem ich meinem Benutzer die vollständigen Berechtigungen für den R-Ordner erteilt habe (wie hier beschrieben ). Dadurch kann ich problemlos neue Pakete installieren.

Wenn ich jedoch update.packages () verwende, um vorhandene Pakete zu aktualisieren, wird immer wieder der folgende Fehler angezeigt (z. B. beim Aktualisieren des MASS-Pakets):

Paket 'MASS' erfolgreich entpackt und MD5-Summen überprüft

Warnung: Die temporäre Installation 'C: \ Programme \ R \ R-2.13.0 \ library \ file6cae3bcf \ MASS' kann nicht nach 'C: \ Programme \ R \ R-2.13.0 \ library \ MASS' verschoben werden.

Irgendwelche Vorschläge, wie man das behebt?

ps: R als Administrator auszuführen oder den Bibliotheksverzeichnis aus den Programmdateien zu verschieben, ist keine Lösung (es ist ein Hack - aber ich suche nach einer Lösung)

Tal Galili
quelle
1
Verwandte Frage: stackoverflow.com/questions/5059692/…
Andrie
Es ist nur eine Warnung. Was ist das Ergebnis von sessionInfo(package="MASS")?
Andrie
2
Du bist unter Windows. Die einzige solide Lösung besteht darin, R außerhalb der Programmdateien zu installieren. Sind Sie sicher, dass das MASS-Paket nicht geladen wird, wenn Sie versuchen, ein Update durchzuführen? Dh erhalten Sie die gleiche Warnung, wenn Sie nach dem Update aktualisieren detach(package:MASS)?
Joris Meys
@Andrie: Stimmt, ich war ein bisschen schnell. Es ist jedoch eine Warnung, die deutlich macht, dass das MASS-Paket nicht aktualisiert wird.
Joris Meys
4
Ich komme sechs Jahre später hierher, versuche Pakete für R 3.4.2 zu installieren und bekomme dieses Problem. Stelle dir das vor. Interessanterweise handelt es sich um ein zeitweise auftretendes Problem - manchmal funktioniert die Installation, manchmal nicht. Kann davon abhängen, welche Signaturen der Antivirenscanner kürzlich heruntergeladen hat. Sheldons Antwort funktionierte besser als der Besuch der Unternehmens-IT.
Stephan Kolassa

Antworten:

106

Ich fand, dass das Problem in der Tat der Antivirus "Echtzeit-Dateisystemschutz" ist. Ich mache Folgendes, um das Problem zu beheben:

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

Ich bearbeite Zeile 140 (Zeile 142 in R 3.4.4):

Sys.sleep(0.5)

zu:

Sys.sleep(2)

Ich scheine, dass das Antivirus die Erstellung des Pakets tmp dir blockiert. Nach dem Ändern auf 2 Sekunden ist der Fehler behoben.

BEARBEITEN: Dazu programmgesteuert ausführen

trace(utils:::unpackPkgZip, quote(Sys.sleep(2)), at = which(grepl("Sys.sleep", body(utils:::unpackPkgZip), fixed = TRUE)))

(Credits @DavidArenburg)

Mads Sønderkær
quelle
7
Ich habe das jetzt wiederholt gemacht (was vorübergehend funktioniert ), aber aus irgendeinem Grund bleibt die Bearbeitung nicht hängen ... nach einer Weile oder bei jedem Neustart der Sitzung geht es zurück zu Sys.sleep(0.5). Wie kann ich die Bearbeitung dauerhaft machen?
Scard
2
Es wurde auch festgestellt, dass dies eine vorübergehende Lösung ist und dass nach einem Neustart die Sys.sleep auf 0,5 s zurückkehrt - in der Hoffnung, dass das nächste Update von R dieses Problem beheben wird
Markm0705
3
Ich habe gestern R 3.5 installiert und das Problem ist verschwunden, auch die Sys.sleep(0.5)Leitung wurde entfernt, also wird es wohl nicht mehr benötigt!
Gerhard Burger
4
Sie können dies auch problematisch tun, zBtrace(utils:::unpackPkgZip, quote(Sys.sleep(2)), at = which(grepl("Sys.sleep", body(utils:::unpackPkgZip), fixed = TRUE)))
David Arenburg
1
@ DavidArenburg, schön! (Ich denke, Sie meinten programmatisch: P)
Gerhard Burger
64

Um alle zu aktualisieren, habe ich (glaube ich) die Ursache des Problems herausgefunden: Antivirus .

Der "Echtzeit-Dateisystemschutz" hat R daran gehindert, die Dateien nach dem Herunterladen zwischen Ordnern zu kopieren. Beim Hinzufügen des R-Verzeichnisses zur Ausnahmeliste (verbunden mit dem Hinzufügen der Benutzerberechtigung und der Installation von R auf D: \ R) ist das Problem behoben. Bei all dieser Arbeit könnte ich genauso gut zu Linux wechseln (ich sollte wirklich ...)

(Ich habe meinen Beitrag mit den oben genannten Informationen aktualisiert: http://www.r-statistics.com/2011/04/how-to-upgrade-r-on-windows-7/ )

Ich hoffe, es wird in Zukunft jemandem helfen, Tal

Tal Galili
quelle
10
Leider ist die Anitvirus-Einstellung gesperrt, da wir uns in einer Unternehmensumgebung befinden
Xiaodai
2
Für Benutzer, die auf dieses Problem mit Kaspersky stoßen, zeigt diese Website, wie eine Ausschlussregel
hinzugefügt wird
Vielen Dank! Das war mein Problem. Ich habe mcaffee ausgeschaltet, meine Pakete neu installiert, geladen und dann wieder eingeschaltet, und es hat funktioniert!
Paul
@ Xiaodai Schauen Sie sich meine Antwort an, um eine Problemumgehung für die Antiviren-Unternehmensrichtlinie zu finden.
Sheldon
1
Hallo Tal, ich habe ein etwas anderes Problem, bei dem ich Ihre Unterstützung sehr schätze. Mein Problem ist, dass ich KEIN RPaket mit library("packageName")oder laden kann require("packageName"). Ich erhalte die folgende Fehlermeldung:Error: package or namespace load failed for ‘packageName’ in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]): namespace ‘tibble’ 1.3.0 is already loaded, but >= 1.3.1 is required
rnorouzian
41

Wenn Sie Ihr Antivirenprogramm beispielsweise aufgrund von Unternehmensrichtlinien nicht deaktivieren können, habe ich eine Problemumgehung gefunden. Durch das Debuggen der Entpackungspaketfunktion und das anschließende Durchlaufen dieser Funktion erhält das Antivirenprogramm genügend Zeit, um seine Arbeit ohne Störung auszuführen. Verwenden Sie diesen Befehl:

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

und gehen Sie dann den Code durch (indem Sie mehrmals die Eingabetaste drücken), wenn R während der Installation mit dem Debuggen beginnt.

Ich habe diese Lösung hier gefunden .

Sheldon
quelle
14

Wenn Sie die Binärdatei einfach direkt von CRAN herunterladen können. Unter Windows wird es beim Herunterladen eine Zip-Datei sein. Entpacken Sie dies nun manuell in den Ordner ..library / Ihres R ( .libPaths()). Bei einigen Paketen hat es bei mir funktioniert.

Xiaodai
quelle
1
Gibt es dabei etwas zu befürchten?
rrs
@rrs Abhängigkeiten werden nicht installiert, daher müssen Sie sich selbst darum kümmern.
Dason
7

Ich hatte dieses Problem bei der Installation von swirl und dplyr. Ich arbeite an Windows 64-Bit.

Warnung: Temporäre Installation kann nicht verschoben werden

Ich habe auf meine temporären Dateien auf dem Laufwerk C: zugegriffen, mein Dateiextraktionsprogramm geöffnet und die Dateien aus der temporären Datei im Laufwerk C: in meine R-Programmdateien im Laufwerk C: extrahiert, indem ich sie manuell kopiert habe . Dies funktionierte sowohl für Dpylr als auch für Strudel. Begeistert!

Prost,

Pfirsich

Hanna Peach
quelle
+1 Dies ist die einzige Lösung, die bei der Installation swirlauf meinem Windows 10-PC funktioniert hat . Alle anderen Lösungen haben bei mir nicht funktioniert.
GISKid
2

Können Sie den Parameter lib.loc nicht verwenden, um nur Pakete in Ihrer persönlichen Bibliothek (im Benutzer) zu aktualisieren? Es sollte keine Möglichkeit geben, einem normalen, nicht erweiterten Benutzer das Ändern von Dateien im Ordner "Programmdateien" zu ermöglichen. Sie können also nur (wenn Sie den Benutzer nicht erweitern möchten) festlegen, dass R dort keine Pakete aktualisiert .

Eine Problemumgehung besteht darin, die Installation von R im Ordner "Programmdateien" zu vermeiden (was je nach Ihrer Ansicht mehr oder weniger ein Hack sein kann, als nur den Speicherort der Bibliothek zu verschieben).

Wenn lib.loc es nicht schneidet, können Sie den Quellcode für update.packages durchsuchen und Ihre eigene angepasste Version erstellen, die immer den gemeinsamen Speicherort der Bibliothek in Programmdateien vermeidet.

Nick Sabbe
quelle
Danke Nick, aber ich hatte gehofft, dies zu klären, während ich R unter den Programmdateien hielt ...
Tal Galili
2

Ich habe gerade die gleiche Frage beantwortet und die Lösung, die ich herausgefunden habe, war, dass Sie Pakete mit der ursprünglichen R-Software installieren sollten (außerdem sollten Sie die richtige Spiegelseite auswählen, einige davon sind blockiert). Zuerst habe ich Rstudio verwendet, um Pakete zu installieren, und ich habe das gleiche Problem wie Sie. Hoffe das ist hilfreich.

Yang
quelle
1

Ich bin mehrmals auf diesen Fehler gestoßen. In meinem Fall liegt es daran, dass unsere Administratoren möchten, dass wir virtuelle Remote-Festplatten (unter Windows 7) für unsere Dateien verwenden und alles fest wie eine Trommel verschlossen ist. Ich kann R-Pakete nur in einem lib-Verzeichnis auf dieser virtuellen Remote-Festplatte verwenden. Dies wäre kein Problem, außer dass das Netzwerk nicht immer reibungslos und schnell ist. Wenn ich also ein Paket benötige, insbesondere eines mit mehreren anderen Paketen im Schlepptau (z. B. MBESS), muss ich entweder den Prozess get.packages () mehrmals durchlaufen, bis er endgültig abgeschlossen ist, oder es macht der IT Kopfschmerzen, schnell zu arbeiten der Hase für mich. Ich kann nicht immer auf IT warten.

Bryan
quelle
1

Ich bin gerade in den Bibliotheksordner (Windows XP) gegangen und habe alle fileXXXX-Ordner gelöscht. Wiederholen Sie die Installation und es funktioniert.

Raketenwissenschaftler
quelle
Dies funktionierte bei mir mit einem ähnlichen Problem mit rJava. Ich habe manuell einen Ordner in R / library namens erstellt R/library/rJavaund es hat perfekt funktioniert.
JohnL_10
0

Ich hatte das gleiche Problem. Da das Problem anscheinend darin besteht, dass das Virenschutzprogramm die Übertragung einer heruntergeladenen Datei blockiert, habe ich in den install.packages eine andere Downloadmethode ausprobiert und es hat funktioniert.

Zum Beispiel:

install.packages("stringr", method = "curl")
Eduardo Leoni
quelle
0

Sie müssen in die Eigenschaften des Ordners R gehen und die Sicherheitsparameter ändern. Sie können die Option zum Schreiben und Ändern für alle Benutzer aktivieren.

Stefano Cacciatore
quelle
0

Der Fehler "Temporäre Installation kann nicht verschoben werden" tritt im Wesentlichen aufgrund eines auf Ihrem System ausgeführten Antivirenprogramms auf. Versuchen Sie, die heruntergeladene Datei aus dem Temp-Ordner in den Standardbibliothekspfad zu entpacken (Sie können sie erhalten, indem Sie .libPaths () in der R-Sitzung ausführen).

AnksG
quelle
0

Ich verwende ein MRAN und hatte so viele Versionsprobleme. Beim Versuch, mit tidyverse und ggplot2 zu arbeiten und durch das Upgrade auf die neueste Version von Microsoft wurden alle meine R-Studio-Versionsprobleme gelöst.

Versions Information:

Microsoft R Open 3.5.1
The enhanced R distribution from Microsoft
Default CRAN mirror snapshot taken on 2018-08-01.

Laden Sie Microsoft R Open 3.5.1 herunter

Paul Hegel
quelle