2010-05-25 41 views
35

我想創建一個本地R包存儲庫,以便我公司的用戶可以從中安裝軟件包,系統管理員可以定期更新本地存儲庫。訪問CRAN鏡像目前被拒絕。創建一個本地R包存儲庫

有沒有簡單的方法來做到這一點?

謝謝你的時間。

編輯:我爲疏忽表示歉意。該指南是我應該先看的地方。謝謝。

回答

36

是的,CRAN的副本或本地軟件包的回購很容易設置。想必你想這對於Windows,以便做到這一點:

  1. 您的網絡服務器創建一個頂級目錄,說R/
  2. 在那裏創建平常層次:R/bin/windows/contrib/2.11。如果您需要支持其他(較早的)版本,只需在2.11目錄旁邊創建目錄2.102.9,...。
  3. 將您需要的目錄(比方說,2.11)的包,然後更改到該目錄,並運行以下命令生成PACKAGESPACKAGES.gz文件庫:

    tools::write_PACKAGES(".", type="win.binary")

這就是它的全部功能 - 現在您可以通過指向給定地址的命令來訪問存儲庫,例如

update.packages(repos="http://my.local.server/R", ask=FALSE) 

我甚至在R/zzz.R中爲本地軟件包做了更新。

編輯約五+年後:和drat包現在自動化了很多這方面,特別閃耀,如果您還使用GitHub的服務通過HTTP/HTTPS的庫(但對於其他的或本地託管太有用) 。

+0

自動更新聽起來很方便,但我不明白在哪裏放置更新命令。我一直在玩'zzz.R'和'.onLoad',但無法通過'R CMD檢查...'。在某種程度上,更新您目前正在加載的內容似乎有點奇怪。 – Backlin 2013-01-07 08:19:28

+0

可以通過任何可以訪問存儲庫的人將update命令輸入到R中。 – 2013-03-15 01:36:29

+4

除了Dirk的評論,如果你讓軟件包用戶編輯他們的'Rprofile.site'文件(它可以在每次R會話啓動時運行),以包含'options(repos = c(getOption(「repos」)) MyCompanyRepo =「http://my.local.server/R」))',那麼你的用戶可以執行諸如'install.packages(「mypackage」)'而不需要指向路徑。 – 2013-03-18 01:19:19

2

miniCRAN也爲此提供了很好的功能。關鍵優勢在於您不需要完整的鏡像,但可以僅使用您需要的軟件包分發包括它們的依賴關係來設置CRAN的「迷你」鏡像。

相關問題