当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R update_PACKAGES 更新现有的 PACKAGES 文件


R语言 update_PACKAGES 位于 tools 包(package)。

说明

通过读取 PACKAGES 文件、保留仍然有效的条目、删除不再有效的条目以及仅处理与现有条目不匹配的构建包 tarball 来更新现有存储库。

对于大型存储库索引的 small-moderate 更改,update_PACKAGES 可能比 write_PACKAGES 快得多,特别是在非严格模式下(请参阅详细信息)。

用法

update_PACKAGES(dir = ".", fields = NULL, type = c("source",
  "mac.binary", "win.binary"), verbose.level = as.integer(dryrun),
  latestOnly = TRUE, addFiles = FALSE, rds_compress = "xz",
  strict = TRUE, dryrun = FALSE)

参数

dir

请参阅write_PACKAGES

fields

请参阅write_PACKAGES

type

请参阅write_PACKAGES

verbose.level

(0, 1, 2) 在整个过程中应显示什么级别的信息消息。如果 dryrunFALSE(默认值),则默认为 0,否则为 1。请参阅详细信息以获取更多信息。

latestOnly

请参阅write_PACKAGES

addFiles

请参阅write_PACKAGES

rds_compress

请参阅write_PACKAGES

strict

合乎逻辑的。检查现有PACKAGES 条目时是否应使用'strict mode'。查看具体信息。默认为 TRUE

dryrun

合乎逻辑的。是否应该计算但不应用对现有 PACKAGES 文件的更新。默认为 FALSE

细节

在本节中,包 tarball 被定义为 dir 中的任何存档文件,其名称可以解释为 <package>_<version>.<ext> - 其中 <ext>type 类型的构建包的适当扩展名 - (或者由现有 PACKAGES 条目的 File 字段)。新颖的包 tarball 是那些与现有 PACKAGES 文件条目不匹配的包。

如果满足以下任一条件,update_PACKAGES 直接调用 write_PACKAGES 并发出警告(因此将处理所有包 tarball):

  • typewin.binarystrictTRUE(win.binary PACKAGES 文件中不包含 MD5 校验和)

  • dir 下不存在 PACKAGES 文件

  • dir 下存在 PACKAGES 文件,但为空

  • fields 不是 NULL,并且现有 PACKAGES 文件中不存在一个或多个指定字段

update_PACKAGESPACKAGES 文件条目已存在且似乎仍然有效的情况下避免(重新)处理包 tarball。检测still-valid条目的逻辑如下:

任何比现有 PACKAGES 文件最近修改的软件包 tarball 都被认为是新颖的;与此类 tarball 相对应的现有 PACKAGES 条目始终被认为是过时的,并被新生成的条目替换。同样,与 dir 中找到的任何包 tarball 不对应的所有 PACKAGES 条目都被视为无效,并从生成的更新的 PACKAGES 文件中排除。

strictTRUE 时,通过 MD5 校验和确认与包 tarball 匹配的 PACKAGES 条目(按包名称和版本);只有那些通过的才保留为有效。所有新颖的包 tarball 均由 write_PACKAGES 底层的标准机器完全处理,并添加生成的条目。最后,如果 latestOnlyTRUE ,则跨条目执行包版本修剪。

strictFALSE 时,假定包 tarball 在其文件名中编码正确的元数据。与包 tarball 匹配的 PACKAGES 条目将保留为有效(不进行 MD5 校验和测试)。如果 latestOnlyTRUE ,则在处理新颖的 tarball 之前对保留条目和新颖的软件包 tarball 的完整集合执行包版本修剪,在某些情况下可以显著节省计算量和时间。在可选的修剪之后,任何相关的新颖包 tarball 都通过标准机器进行处理并添加到保留条目集中。

在这两种情况下,上述过程结束后,条目均按 PackageVersion 的字符串串联按字母顺序排序。这应该与输入顺序 write_PACKAGES 输出匹配。

条目中的字段按如下顺序排列:规范字段 - 即在 CRAN 镜像上调用 available.packages 时显示为列的字段 - 首先按规范顺序出现,然后是任何非规范字段。

条目和字段重新排序后,PACKAGES 条目的最终数据库将写入所有三个 PACKAGES 文件,覆盖现有版本。

verbose.level0 时,不会向用户显示任何额外消息。当它是 1 时,有关正在发生的情况的详细信息是通过消息传达的,但来自 write_PACKAGES 的底层机制是通过 verbose = FALSE 调用的。 verbose.level2 时的行为与 verbose.level 1 相同,但 write_PACKAGE 的底层机制是用 verbose = TRUE 调用的,它将单独列出每个已处理的 tarball。

注意

虽然严格模式和非严格模式都可以在更新一小部分大型存储库时提供加速,但非严格模式要快得多,并且在假设 tarball 的文件名编码准确信息是安全的情况下建议使用。

注意

用户预计至少在某些操作系统上,type == "win.binary" 情况下的加速速度会比 write_PACKAGES 小得多。这是因为 write_PACKAGES 在此上下文中明显更快,而不是 update_PACKAGES 更慢。

例子

## Not run: 
write_PACKAGES("c:/myFolder/myRepository") # on Windows
update_PACKAGES("c:/myFolder/myRepository") # on Windows
write_PACKAGES("/pub/RWin/bin/windows/contrib/2.9",
type = "win.binary") # on Linux
update_PACKAGES("/pub/RWin/bin/windows/contrib/2.9",
type = "win.binary") # on Linux

## End(Not run)

作者

Gabriel Becker (adapted from previous, related work by him in the switchr package which is copyright Genentech, Inc.)

也可以看看

tools write_PACKAGES

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Update Existing PACKAGES Files。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。