2016-08-20 65 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