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

时间:2017-10-05 15:55:15

标签: r rstudio

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

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

    unpackPkgZip

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

  1. 有没有办法完全避免不需要管理员权限或更改防病毒策略的问题?
  2. 有没有办法让编辑Sys.sleep(2)永久保存?
  3. 此时,我很难过。我怀疑它与下载后临时锁定文件/目录的防病毒软件有关,但是我无法做到这一点。 {{1}}似乎可以解决这个问题,但在每个软件包安装或更新之前我都无法继续这样做,并且似乎无法让编辑保持不变。

10 个答案:

答案 0 :(得分:28)

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

在Windows系统上,有时库的安装可能运行得太快,导致错误"无法移动临时安装"。然后在用户库中找不到包,因为它还没有移过...

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

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

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

答案 1 :(得分:10)

我的原始回复如下,但我后来找到了更好的解决方案。

执行以下行:

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

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

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

原始答案:

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

答案 2 :(得分:6)

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

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

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

我找到了这个解决方案here

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

答案 3 :(得分:4)

得到了同样的错误 - 似乎是公司的gp / access安全问题。

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

此问题的临时解决方案是使用下面的一段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)
}

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

答案 4 :(得分:4)

我们的工作场所遇到了同样的问题,我的一位同事发现了一个很好的解决方法。不幸的是,每次安装软件包时,您都需要做一些临时工作,而不是永久修复。我们正在使用McAfee运行企业Windows 8(无管理员权限),我已在R 3.4.0-3.4.3中对此进行了测试。

暂时关闭迈克菲&#34;按访问扫描&#34;功能(在威胁防御中)为我们解决了这个问题 - 现在所有R套件都是按照他们想要的方式首次安装。以下是解决此问题的详细步骤:

  1. 右键单击右侧通知区域中的McAfee图标 您的任务栏,然后选择McAfee Endpoint Security。
  2. 单击威胁防护。这将打开一个屏幕,您可以在其中看到类别,例如&#34;访问保护&#34;,&#34;利用漏洞预防&#34;和&#34;按访问扫描&#34;。
  3. 取消选中&#34;启用按访问扫描&#34;,然后单击应用。 (注意:它是 容易忘记点击申请,但这是必不可少的)
  4. 安装好套餐后,最好重复此过程以重新启用按访问扫描。

答案 5 :(得分:1)

我修复了这个问题的实例(Windows 7),删除了“只读”&#39;文件夹R的属性试图将内容移动到。

我从Windows(7)的“开始”菜单转到“运行”命令并键入 attrib -r + s驱动器:\\

请注意,根据Microsoft的此链接,只需右键单击文件夹并尝试更改属性即可:https://support.microsoft.com/en-us/help/326549/you-cannot-view-or-change-the-read-only-or-the-system-attributes-of-fo

希望能有所帮助。

我希望这种改变不会以其他方式阻止我。

答案 6 :(得分:0)

这是为我吐出的错误消息:

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

我所做的是去了下载包的地方(C:\ Users \ E \ AppData \ Local \ Temp \ RtmpS0uNDm \ downloaded_pa​​ckages)然后将该压缩文件复制到桌面然后使用Winzip解压缩到我的文件目录其中存储了R的所有包(C:\ Users \ E \ Documents \ R \ win-library \ 3.4)。它现在将加载到R。

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

它对我来说效果很好,因为它是唯一因某种原因无法下载的软件包。如果你必须为每个包裹做这件事,可能没有用。

答案 7 :(得分:0)

如果以上解决方案在公司防病毒软件中不起作用,我也找到了一个解决方案。 首先更改包安装的路径使用此命令并在R:

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

现在它将显示无法移动的控制台错误,并将包放在某个位置。记住这个位置,我们需要这个zip文件进行进一步的操作。

现在使用此命令:

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") 

答案 8 :(得分:0)

我在同样的问题上挣扎。对我来说(在Windows 10上),问题是使用 MalwareBytes (高级试用版)。我卸载了它并重新使用 Windows Defender ,问题得以解决。也许如果有更多时间,我可以找到如何为MalwareBytes创建异常和/或文件检查延迟(即,这是一个非常好的程序),但用户指南(https://www.malwarebytes.com/pdf/guides/Malwarebytes-User-Guide.pdf)对此不清楚。

答案 9 :(得分:0)

通过

手动将unpackPkgZip函数中第142行的Sys.sleep值扩展为3.5。
Trace(utils:::unpackPkgZip, edit=TRUE)

但是,也可以通过在install.packages之前运行以下命令来以编程方式完成此操作:

localUnpackPkgZip <- utils:::unpackPkgZip
body(localUnpackPkgZip)[[14]][[4]][[4]][[4]][[3]][[3]][[2]][[2]] <- substitute(3.5)
assignInNamespace("unpackPkgZip", localUnpackPkgZip, "utils")

此操作必须在每次有新会话时都运行。您可以在同一会话中多次运行它,而不会出现问题。