2016-08-20 80 views
0

對於沒有Internet的離線linux機器,安裝具有大量依賴的R包是一場噩夢。我在SE上發現了幾篇文章,討論如何創建本地文件夾,複製所需的軟件包zip文件並使用'install.packages'進行安裝。如何下載整個CRAN存儲庫?

但是,查找,下載和上傳大量軟件包到脫機服務器是一項非常耗時的工作。所以,我想知道如何下載所有CRAN軟件包的整個zip文件,以便我可以將它們放在本地離線機器的http web服務器目錄中,並且像真正的存儲庫一樣。規模可能會在200 GB左右非常大,但對於企業環境,我認爲這應該是有道理的。

我找到了一個指導here討論如何成爲官方CRAN鏡像,但我不打算成爲官方的公共鏡像。

請指教。 在此先感謝

+5

您仍然可以遵循CRAN鏡像howto的建議,而不是使鏡像正式運行,但只需在內部機器上運行即可。 –

+0

訪問此鏈接,查看問題是否已解決。 http://stackoverflow.com/questions/10807804/offline-install-of-r-package-and-dependencies –

+4

做@AchimZeileis建議和鏡像CRAN。它最終減輕了服務器的負擔,並且可以在目錄結構中探索和發現一些隱藏的寶石(例如具有優秀元數據的rds文件)。我今年早些時候設置了一個本地/家庭的CRAN鏡像,並且它的安裝過程非常棒,只需幾毫秒。您還可以有選擇地對其進行鏡像(即,如果您沒有這些系統,可以排除Windows或MacOS目錄結構)。 – hrbrmstr

回答

2

您可以使用函數available.packages來查找可用包。

pkgnames <- available.packages()[,1] 

如果你喜歡網頁抓取,你可以練習如下。

library(rvest) 
pkgs <- read_html("https://cran.r-project.org/web/packages/available_packages_by_name.html") 
tab <- html_nodes(pkgs, "table") %>% html_table(fill = TRUE) 

pkgnames <- tab[[1]][1]$X1 
pkgnames <- pkgnames[nchar(pkgnames)>0] 

不要運行這些,除非你想安裝(或下載)包了很多!

#sapply(pkgnames, install.packages) 
#sapply(pkgnames, install.packages) 

您可以運行此行來顯示它的工作原理。

sapply(pkgnames[1:2], install.packages) 

您可以用destdir參數將其保存到您的企業目錄一起更換install.packagesdownload.packages

+0

只需使用'available.packages()'就可以獲得有關CRAN上所有可用軟件包的信息。你不需要爲此解析HTML頁面。 –

+0

我喜歡網絡報廢Shayaa ..謝謝 – Espanta

+0

您的解決方案不會下載包,而是安裝它們。我沒有在服務器上訪問互聯網。如果您將install.packages更改爲download.packages() – Espanta

相關問題