當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。