install.packages中的警告:无法移动临时安装

Sca*_*ard 23 r rstudio

在R/RStudio中安装或更新软件包时,我发现了许多与此警告相关的问题,但似乎没有一个问题完全符合我的情况:

  • 企业Windows 7系统,因此无权访问管理员权限
  • 无法更改McAfee Anti-Virus例外列表
  • R完全安装在用户空间中 C:\Users\[myname]\R
  • RStudio完全安装在用户空间中 C\Users\[myname]\RStudio
  • 在任一目录中都没有权限问题......我对它们拥有完全的访问控制权
  • 问题仅在安装R 3.4后开始,但RStudio在启动或挂起几个月后随机失败
  • R_LIBS_USER 添加为用户环境变量,指向正确的目录
  • .libPaths() 显示正确的目录,包括系统和用户
  • R版本3.4.2,RStudio版本1.0.153
  • 卸载了R和Rstudio,并对两者进行了干净的重新安装
  • 尝试trace(utils:::unpackPkgZip,edit = T)并编辑第140 Sys.sleep(0.5)Sys.sleep(2),有时暂时工作,但编辑将不会停留...重置Sys.sleep(0.5)每个会话重启
  • 发生在RStudio和RGui
  • 任何大于几Kb的包都会给出以下信息:

    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’
    
    Run Code Online (Sandbox Code Playgroud)

软件包无法安装或更新.所以,我的问题是:

  1. 有没有办法完全避免不需要管理员权限或更改防病毒策略的问题?
  2. 有没有办法让编辑unpackPkgZip永久保存?

在这一点上,我很难过.我怀疑它与下载后临时锁定文件/目录的防病毒软件有关,但是我无法做到这一点.在Sys.sleep(2)似乎做的伎俩,但我不能继续这样做,每一个包之前安装或更新似乎并不能得到编辑留在原地.

ksl*_*err 32

在这个问题上,这是唯一对我有用的东西(卸载防病毒软件不会让我在任何地方,不幸的是),所以希望它适合你.

在Windows系统上,有时库的安装可能运行得太快,从而产生错误"无法移动临时安装".然后在用户库中找不到包,因为它尚未被移动...

要修复,请尝试: trace(utils:::unpackPkgZip, edit=TRUE)

然后转到代码中的第140行并更改Sys.sleep(0.5)Sys.sleep(2.5)

这是一个不错的长期解决方案,不需要手动移动包,卸载软件,替换管理员职责或单独将包路由到某些位置.

  • 这就是我一直在做的事情,而且(通常)有效.当然,如果因任何原因重新启动R会话,您还必须记住再次执行此操作! (2认同)

小智 10

我原来的答复如下,但后来我找到了更好的解决方案.

执行以下行:

Trace(utils:::unpackPkgZip, edit=TRUE)
Run Code Online (Sandbox Code Playgroud)

请注意,那里有三个冒号,而不是两个冒号.

然后编辑第142行,从"Sys.sleep(0.5)"到:"Sys.sleep(2.0)",然后单击以保存编辑(行号可能略有不同).不幸的是,这并不适用于R会话,但只需10秒即可完成此操作,然后您可以将当前会话的软件包安装到您的内容中.

原始答案:

我在工作中遇到了同样的问题.我能够使用Sheldon建议的方法,但正如所指出的那样,很快就会变得乏味.作为替代方案,我发现我可以转到我的临时目录中下载的zip文件的位置(由install.packages报告),解压缩一个或多个文件(如果有依赖包,将会有多个zip文件) ),然后将所有解压缩的目录直接移动或复制到我的R\win-library\3.4目录中.这也不是很有趣,但根据Sheldon的方法,我发现它比通过调试器更少痛苦,特别是当涉及多个依赖项并且还必须安装时.

  • 是的,它的“trace(utils:::unpackPkgZip, edit=TRUE)”-区分大小写 (2认同)

She*_*don 6

如果你无法关闭你的防病毒,这是一个我发现不涉及编辑unpackPkgZip文件的解决方法.调试解压缩包功能然后逐步执行它可以让防病毒软件有足够的时间完成工作而不会干扰.使用此命令:

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

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

我在这里找到了解决方案.

如果您希望将此更改更加永久化,可以将调试代码添加到Rprofile文件中,请参阅此处,但每次安装软件包时仍需要使用解压缩功能.


Nic*_*ick 5

遇到同样的错误 - 似乎是公司 gp / 访问安全问题。

检查它无法写入的文件夹是否具有只读结构(右键单击 - 属性)也可能是值得的。该文件夹的地址可以通过运行:.libPaths()[1] in R 找到。

此问题的临时解决方案是使用下面的一段 R 代码解压缩并存储下载(但未移动)的包。您将收到一条错误消息,指出二进制包所在的位置(类似于:C:/Users/....AppData/...

现在您可以简单地将文件从这里解压缩到您的 .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)
}
Run Code Online (Sandbox Code Playgroud)

更通用的解决方案仍然非常值得,因为不幸的是,这是在 Windows 上更新 R 时的常见问题。