R - "文件中的不完整块"意思?

时间:2014-08-25 07:02:08

标签: r package

我正在使用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代码(搜索错误字符串,文件上的不完整块),似乎这与意外的文件长度/大小有关。

我认为下载可能已损坏?但我已多次尝试过。

或许我没有正确的权限?但是项目文件应该没有问题。

还有其他人有这个问题吗?

2 个答案:

答案 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(),那将再次成为快乐的一天。