2014年8月29日 星期五

R CRAN 的 Package 上傳規範 (The R CRAN Repository Policy)

在完成 R package 後(請參考「利用 R-Studio 建立 R Package」與「利用 R-Studio 配合 Rcpp Package 建立包含 C/C++ Code 的 R Package」),接下來便是將此 package 上傳到 R CRAN 上,給大家使用您所想出來的絕妙方法。

當然,將東西放在網路上,自然也是要服從管理者所制訂的規範。那麼,就讓我們簡單的來看一下吧!

首先,讓我們來看看「 CRAN Repository Policy 」。這裡面詳細說明了當 R package maintainer 上傳 package 時,所需要注意的事情。以下簡述幾條各位在上傳時可能會發生的錯誤,因 Policy 的內容其實也沒那麼多,所以還是建議各位至少在上傳前細讀一次。

Preamble Section
00.文章一開始便說明當您上傳 package 時,便已同意 CRAN Repository Policy 所說明的每一件事情。所以各位還是耐著性子看一下。當然,若您在上傳 package 時,發生了任何問題,那些回信給您的自願者也會詢問與建議您看一下這份文件,所以…耐著性子,加油吧!

Source packages Section
01.對智財權的保障:
任何在 package 內所有引述或複製的部分,皆須清楚的註明來源與作者。當然,若您的程式碼是親手撰寫的,那麼這部分就沒有問題。

02.The package’s DESCRIPTION file 必須寫上 maintainer 的姓名與可聯絡的電子郵件。當然,如果您的 package 一旦有問題,自然會循此電子郵件去找您。所以,請還是留下正確的電子郵件吧!

03.對使用者電腦安全性的保障:
所遞交的 Source packages ,裡面不可包含任何形式的 binary executable code 。

04.跨平台的通用性:
Package authors 應該盡可能的將 package 內的程式碼,努力提供跨平台(例: Windows 與 Unix-like )上的使用。這部分還蠻有趣的,過去經常有 package 僅能在某些平台上使用。增加這部分的規範,自然是要增加 R 的泛用性。

05.Package 的獨立性:
Packages 的名稱不能與過去在 CRAN 既有的 package 或是在 Bioconductor 上的 packages 名稱相同。所以,請您在為您的 package 取名之前,先到上述的兩個網站上搜尋一下是否有重複的名稱?!

06.Package 的容量限制:
Packages 內含的資料或是文件,不可超過 5 MB 。

07.Package 的檢查時間與硬體控制限制:
檢查 package 時,應盡可能的快,最好是能在幾秒內完成。別忘了, CRAN 現在可是有數千個 package 在上面,且隨時都有人更新或增加。如果您的例子會讓您的 package 跑很久的話,不妨將這些例子標記為註解就好。另外,若 package 有用到多核心處理時,目前的限制為同一時間僅能使用2個核心。

08.Package 的安全性:
Package 內含的程式碼與範例,不應對使用者的電腦與 R 主體有任何惡意的修改或破壞。以下的範例說明很多,請各位簡單看一下。

Submission Section
01.請將 package 在 http://CRAN.R-project.org/submit.html 內上傳,上傳完成後,系統會寄一封確認信件給您。收到信件後,按下信件內的確認連結,即完成上傳動作。若此方法無效,請參考「如何將 R package 上傳到 R CRAN」一文,使用舊方法。

02.上傳的 package 檔案,必須為 source tarballs 檔案,也就是 .tar.gz 檔案。

03.在上傳 package 檔案之前,必須先用 R CMD check --as-cran 過,且在整個檢查的過程中,不能出現任何的 warnings 或 errors 。若您有無法消除的 warnings 或認為所出現的 warnings 是可接受的,請在提交 package 時一併註明。

04.若您是對您過去的 package 做更新,在您上傳您的 package 之後,請在專屬於您的套件網站做進度查詢。例:您的套件名稱為「 cgAUC 」,那麼,請將 http://CRAN.R-project.org/web/checks/check_results_NAME.html 網址內的 NAME 改為 cgAUC ,變成 http://CRAN.R-project.org/web/checks/check_results_cgAUC.html ,便可查詢。然而,在結果尚未公布之前,請勿再進行任何新版本的上傳。直到所有結果測試完畢,方可繼續上傳新的版本。


基本上,簡單的原則是,只要在 R 檢查 package 的操作上沒出現任何 warnings 或 errors ,套件名稱也沒有重複,跨平台可執行,那麼 package 都會符合 CRAN 所制訂的規範。好了,解釋了這麼多,不妨參考下一篇文章:「R CRAN 的 Package 上傳流程」,讓我們一起來遞交一份熱騰騰的 package 吧!

All works were done in Ivan's Statistics Science Laboratory.

沒有留言:

張貼留言