我正在使用RStudio,我正在尝试将packrat用于我当前的项目。 我单击“使用此项目的包装”复选框,然后按确定,我从控制台获得以下输出:
> packrat::init()
Initializing packrat project in directory:
- "/Users/Ash/Dropbox/Uni/2014/Thesis/Code/R"
Adding these packages to packrat:
_
packrat 0.4.0.12
Fetching sources for packrat (0.4.0.12) ... Error in snapshotSources(project, activeRepos(project), allRecordsFlat) :
Errors occurred when fetching source files:
Error in untar2(tarfile, files, list, exdir, restore_times) :
incomplete block on file
我找不到这个错误,但基于this代码(搜索错误字符串,文件上的不完整块),似乎这与意外的文件长度/大小有关。
我认为下载可能已损坏?但我已多次尝试过。
或许我没有正确的权限?但是项目文件应该没有问题。
还有其他人有这个问题吗?
答案 0 :(得分:3)
我认为下载可能已损坏?但我已多次尝试过。
是。下载可能已损坏,或者根据 R help 邮件列表中的this thread,该问题可能是由服务器本身的损坏程序包引起的。在后一种情况下,可以通过选择不同的镜像来下载包来解决。
注意我将描述一个使用R控制台而不是Rstudio GUI的解决方案,因为我过去常常以这种方式安装软件包。所描述的方法也可以与GUI的包安装一起使用。
执行以下命令从R控制台安装软件包时:
> install.packages("<package_name>")
您将看到可供选择的镜像列表:
1: 0-Cloud [https] 2: Austria [https]
3: Chile [https] 4: China (Beijing 4) [https]
...
只需选择另一个(最好选择一个靠近您所在位置的地方,以便更快下载)。
如果您没有这样的选择,但是立即开始下载,则您配置了默认镜像(例如,Rstudio会自动将https://cran.rstudio.com/
设置为默认值)。您可以通过发出以下命令检查所选镜像:
> getOption("repos")["CRAN"]
CRAN
"https://cran.rstudio.com/"
要重置默认镜像,您可以使用以下命令:
> r <- getOption("repos")
> r["CRAN"] <- "@CRAN@"
> options(repos=r)
现在,当您尝试安装新软件包时,您可以选择另一个镜像,如上所述。
答案 1 :(得分:0)
一百万年后正在回答...但是,如果有人像我在寻找Error in untar2(tarfile, files, list, exdir, restore_times) : incomplete block on file
时那样来到这里,那么您的问题可能与代码中存在私有软件包有关。
遵循此thread。 最后的评论挽救了我的生命。
您需要构建自定义私有软件包的tar.gz并将其保存到一个唯一的文件夹。 从那里开始运行此代码:
packrat::set_opts(local.repos = "path/to/the/folder/with/your/tar.gz/files")
packrat::install_local('yourpackage')
此后,再次运行packarat::init()
,那将再次成为快乐的一天。