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

问题描述 投票:74回答:13

在给予我的用户对R文件夹的完全权限(如here所述)之后,我正在使用R 2.13.0和Windows 7。这允许我很好地安装新包。

但是,当使用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'

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

p.s:以管理员身份运行R或将库位置移出Program Files不是一个解决方案(这是一个黑客 - 但我正在寻找解决方案)

r windows-7 permissions packages file-permissions
13个回答
103
投票

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

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

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

Sys.sleep(0.5)

至:

Sys.sleep(2)

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

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

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

(来自@DavidArenburg)


0
投票

我有同样的问题。由于问题似乎是阻止下载文件的transf的防病毒软件,我在install.packages中尝试了不同的下载方法,并且它有效。

例如:

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

0
投票

您必须进入R文件夹的属性并更改安全性参数。您可以启用为所有用户编写和修改的选项。


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.

Download Microsoft R Open 3.5.1


64
投票

只是为了更新每个人,我(我想我)找到了问题的根源:防病毒软件。

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

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

塔尔,我希望将来能帮到某个人


41
投票

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

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

当R在安装期间开始调试时,逐步执行代码(通过多次输入)。

我找到了这个解决方案here


14
投票

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


7
投票

我有这个问题安装漩涡和dplyr。我正在使用Windows 64位。

警告:无法移动临时安装

我做的是我在C:驱动器上访问了我的临时文件,并打开了我的文件提取程序,我将文件从C:驱动器中的临时文件解压缩到C:驱动器中的R程序文件,手动复制它们。这适用于dpylr和漩涡。火上浇油!

干杯,

桃子


2
投票

您是否可以使用lib.loc参数仅更新个人库中的包(在用户中)?应该没有办法让普通的非扩充用户更改程序文件文件夹中的文件,所以你唯一可以做的事情(如果你不想增加用户)就是让R不在那里更新包。

解决方法是避免在程序文件文件夹中安装R(这可能或多或少是一个黑客,而不仅仅是将库位置移出它,具体取决于您的观点)。

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


2
投票

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


1
投票

我已多次遇到此错误。在我自己的情况下,这是因为我们的管理员希望我们使用远程虚拟磁盘(在Windows 7上)作为我们的文件,所有内容都被锁定为鼓。我可以使用R包的唯一方法是在该远程虚拟磁盘上的lib目录中。除了网络并不总是平滑和快速之外,这不会是一个问题。因此,当我需要一个包,特别是包含其他几个包的包(例如,MBESS)时,我要么多次经历get.packages()过程,直到它最终完成或让它很快就像IT一样头疼兔子对我来说。我不能总是等待IT。


1
投票

我刚进入库文件夹(Windows XP)并删除了所有fileXXXX文件夹。重新安装它是有效的。

© www.soinside.com 2019 - 2024. All rights reserved.