簡體   English   中英

強制 R 包版本依賴的上限

[英]Enforce upper bound for R Package version dependency

在開發 R 包時,我們使用描述文件來列出包依賴項(例如在“導入”部分),我們可以通過添加后綴“(>= xxx)”來指定每個包依賴項所需的最低版本。 但是,指定最大版本的類似功能是什么?

一些上下文

有時,我們依賴的外部包發布時會發生重大更改,這些更改可能不再與正在開發的包兼容。 每次外部包隨着重大更改而更新時更新我們的包是不可持續的。

例子

假設我正在開發一個名為“MarksPackage”的 R 包,它依賴於“dplyr”。 到目前為止,我構建的所有內容都適用於 dplyr v1 的當前狀態。 但是,明天 dplyr v2 發布,其中包含影響我的包的重大更改 對於正在安裝我的軟件包的新用戶,可能已經安裝了最新的 dplyr v2,因此 MarksPackage 對他們不起作用。 每次 dplyr 因重大更改而更新時,我不一定想要或能夠更新我的包。 我寧願指定一個最大版本,甚至是一個版本范圍,我知道 MarksPackage 將適用於該范圍。

如何在說明文件中完成此操作? 是否有類似的語法:

Package: MarksPackage
Imports: 
    dplyr (>= 0.8.5 & <=1.2.0),
    dbplyr,
    tidyr (<= 1.0.2)

每當您有關於 R 擴展包如何工作的問題時,您應該查閱編寫 R 擴展手冊。 這里特別需要第 1.1.3 節,包依賴關系,它在相關部分進行了解釋

'Depends' 字段給出了這個包所依賴的包名的逗號分隔列表。 當 library 或 require 被調用時,這些包將附加在當前包之前。 每個包名稱后面可以有選擇地跟在括號中的注釋指定版本要求。 注釋應包含比較運算符、空格和有效版本號,例如“MASS (>= 3.1-20)”。

...

一個包或“R”可以在“依賴”字段中出現多次,例如給出可接受版本的上限和下限。

所以,對於你的例子,你會做

Package: MarksPackage
Imports: 
    dplyr (>= 0.8.5),
    dplyr (<= 1.2.0),
    dbplyr,
    tidyr (<= 1.0.2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM