Windows 7,update.packages问题:“无法移动临时安装”?


75

我,使用R 2.13.0与Windows 7,给我的用户完全权限到R后的文件夹(如描述在这里)。这使我可以很好地安装新软件包。

但是,使用update.packages()更新现有软件包时,我不断收到以下错误消息(例如,更新MASS软件包时):

软件包“ MASS”成功拆包并检查了MD5的总和

警告:无法将临时安装 'C:\ Program Files \ R \ R-2.13.0 \ library \ file6cae3bcf \ MASS'移至'C:\ Program Files \ R \ R-2.13.0 \ library \ MASS'

对于如何解决这个问题,有任何的建议吗?

ps:以管理员身份运行R或将库位置移出“程序文件”不是解决方案(这是hack,但我正在寻找解决方案)



这只是警告。是什么结果sessionInfo(package="MASS")
Andrie

2
您在Windows上。因此,唯一可靠的解决方案是在程序文件之外安装R。您确定在尝试更新时未加载MASS软件包吗?也就是说,更新后您收到相同的警告detach(package:MASS)吗?
Joris Meys 2011年

@Andrie:是的,我有点快。但是,这是一个警告,表明MASS软件包未更新。
Joris Meys 2011年

4
六年后,我来到这里,尝试安装R 3.4.2的软件包并遇到此问题。去搞清楚。有趣的是,这是一个间歇性的问题-有时安装工程,有时却没有。可能取决于防病毒扫描程序最近下载的签名。Sheldon的答案比去公司IT更好。
Stephan Kolassa,

Answers:


106

我发现问题确实是杀毒软件的“实时文件系统保护”。我执行以下操作来解决此问题:

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

我编辑第140行(R 3.4.4中的第142行):

Sys.sleep(0.5)

至:

Sys.sleep(2)

我好像杀毒软件停止了软件包tmp dir的创建。将其更改为2秒后,错误消失了。

编辑:以编程方式执行此操作

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

(@DavidArenburg提供)


7
我现在已经反复进行过此操作(暂时可以正常工作),但是由于某种原因,编辑将不起作用...一段时间或任何会话重新启动后,它都会返回Sys.sleep(0.5)。如何获得永久性的修改?

2
还发现这是一个临时解决方案,重新启动后Sys.sleep返回0.5s-希望R的下一次更新将解决此问题
Markm0705

3
我昨天安装了R 3.5,问题消失了,Sys.sleep(0.5)线也被删除了,所以我想它不再需要了!
Gerhard Burger '18

4
您也可以有问题地执行此操作,例如trace(utils:::unpackPkgZip, quote(Sys.sleep(2)), at = which(grepl("Sys.sleep", body(utils:::unpackPkgZip), fixed = TRUE)))
David Arenburg

1
@DavidArenburg,太好了!(我认为您虽然以编程方式表示:P)
Gerhard Burger,

64

只是为了更新每个人,我(认为我)才发现问题的根源:杀毒软件

下载文件后,“实时文件系统保护”阻止R在文件夹之间复制文件。将R目录添加到例外列表(加上添加用户权限并在D:\ R上安装R)后,问题就消失了。完成所有这些工作后,我不妨切换到Linux(我应该,真的……)

(我用以上信息更新了我的帖子:http : //www.r-statistics.com/2011/04/how-to-upgrade-r-on-windows-7/

我希望这对以后的人有帮助


10
不幸的是,由于我们在公司环境中
抗病毒软件

2
对于使用卡巴斯基遇到此问题的用户,此站点显示了如何添加排除规则:support.kaspersky.com/11146
ahfoss 2016年

谢谢!这是我的问题。我关闭了mcaffee,重新安装了程序包,加载了它,然后再将其重新打开,就可以了!
保罗

@xiaodai看看我的反病毒公司策略解决方法的答案。
谢尔顿

1
嗨,塔尔,我有一个不同的问题,非常感谢您的协助。我的问题是我无法R使用library("packageName")或加载任何软件包require("packageName")。我收到以下错误: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

如果由于公司政策等原因您无法关闭防病毒软件,这是我找到的解决方法。调试解压缩程序包功能,然后逐步执行它,可使防病毒软件有足够的时间来完成其工作而不会受到干扰。使用此命令:

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

然后在R在安装过程中开始调试时逐步浏览代码(多次按Enter)。

我在这里找到了这个解决方案。


14

如果您可以直接从CRAN下载二进制文件。在Windows上,下载后将是一个zip文件。现在,将其手动解压缩到R(.libPaths())的..library /文件夹中。它在某些软件包上对我有用。


1
这样做时有什么需要担心的吗?
2014年

@rrs它不会安装依赖项,因此您必须确保自己照顾好它。
戴森

7

安装漩涡和dplyr时遇到了这个问题。我正在使用Windows 64位。

警告:无法移动临时安装

我要做的是访问C:驱动器上的临时文件,并打开文件提取程序,并通过手动复制将文件从C:驱动器中的临时文件提取到C:驱动器中的R程序文件中。 。这适用于dpylr和旋涡。糊涂了!

干杯,

桃子


+1这是唯一适用于我swirl在Windows 10个人计算机上安装的解决方案。所有其他解决方案均不适用于我。
GISKid

2

您不能使用lib.loc参数仅更新个人库中(用户)的软件包吗?应该没有办法使普通的非增强用户能够更改程序文件文件夹中的文件,因此,您唯一可以做的(如果您不想扩充用户的话)是让R不在那里更新软件包。

一种解决方法是避免在程序文件文件夹中安装R(根据您的观点,将R移出库位置可能更多或更少)。

最后,如果lib.loc没有剪切,您可以查看update.packages的源代码并创建自己的自定义版本,该版本将始终避免程序文件中的公共库位置。


谢谢尼克,但是我希望能够在将R保留在程序文件下的同时进行整理……
Tal Galili

2

我只是遇到了同样的问题,发现的解决方案是您应该使用原始的R软件安装软件包(此外,您应该选择正确的镜像站点,其中一些被阻止了)。最初,我使用Rstudio安装软件包,但遇到的问题与您遇到的问题相同。希望这会有所帮助。


1

我已经多次遇到此错误。就我自己而言,这是因为我们的管理员希望我们对文件使用远程虚拟磁盘(在Windows 7上),并且所有内容都像鼓一样紧密地锁着。我可以使用R软件包的唯一方法是在该远程虚拟磁盘上的lib目录中。除了网络并不总是平滑且快速之外,这将不是问题。因此,当我需要一个程序包,尤其是一个拖着几个其他程序包的程序包(例如MBESS)时,我要么不得不多次经历get.packages()过程,直到最终完成,要么让IT头疼的是要迅速地完成工作,例如我的兔子 我不能总是等待IT。


1

我只是转到了库文件夹(Windows XP),并删除了所有fileXXXX文件夹。重新运行安装程序。


这对我有用,rJava也有类似问题。我在R / library中手动创建了一个名为的文件夹R/library/rJava,它运行良好。
JohnL_10

0

我有同样的问题。由于问题似乎是杀毒软件阻止了下载文件的传输,因此我在install.packages中尝试了另一种下载方法,该方法可以正常工作。

例如:

install.packages("stringr", method = "curl")


0

错误:“无法移动临时安装”基本上是由于系统上运行的任何防病毒软件引起的。尝试将下载文件从Temp文件夹解压缩到默认库路径(您可以通过在R会话中运行.libPaths()来获取它)。


0

我正在使用MRAN,却遇到了很多版本控制问题。尝试与tidyverse和ggplot2一起使用,并通过从Microsoft升级到最新版本,它解决了我所有的R-Studio版本控制问题。

版本信息:

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

下载Microsoft R Open 3.5.1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.