无法使用install.packages安装R-forge软件包

66

这个 问题 R-sig-finance 邮件列表 上被问到 了很多遍, 但我认为 它没有 在stackoverflow上被问到

这是这样的:
我在R-forge上安装包XYZ时,想获取最新版本。我尝试使用install.packages进行安装,但出现了以下情况:
> install.packages("XYZ",repos="http://r-forge.r-project.org")
Warning message: package ‘XYZ’ is not available (for R version 2.15.0)

在R-forge网站上查找XYZ时,我发现该软件包无法构建。 因此,没有下载源代码的链接。有其他方法可以获取源代码吗? 一旦获得源代码,如何将其转换为可以使用library("XYZ")加载的软件包?

谢谢你,@GSee。在S.O.上搜索要容易得多,我知道这个问题一定被问了无数次。 - isomorphismes
2
Windows用户还应阅读以下内容:http://cran.r-project.org/doc/manuals/R-admin.html#The-Windows-toolset - isomorphismes
4个回答

54
R-Forge构建软件包可能会失败,原因有多种。可能是文档没有更新以反映代码的最新更改。或者,可能是某些依赖项在构建时不可用。

您可以使用svn检出源代码。首先,在R-Forge网站上搜索项目,并转到项目主页--例如http://r-forge.r-project.org/projects/returnanalytics/。单击SCM链接即可转到类似于http://r-forge.r-project.org/scm/?group_id=579的页面。

此页面将告诉您要使用的命令来检出项目。在这种情况下,您会得到以下内容:

通过以下命令可以通过匿名访问检出本项目的SVN存储库。

svn checkout svn://svn.r-forge.r-project.org/svnroot/returnanalytics/

如果您使用的是Windows操作系统,则可能需要下载并安装TortoiseSVN

安装完TortoiseSVN后,您可以在Windows Explorer窗口中右键单击并选择“SVN checkout”。在“存储库的URL:”字段中,输入除您在R-Forge上找到的“svn checkout”的部分以外的所有内容。在本例中,您将输入“svn://svn.r-forge.r-project.org/svnroot/returnanalytics/”。

单击“确定”后,项目将下载到当前目录。如果您使用的是类UNIX系统(或者如果您安装了TortoiseSVN for Windows时的命令行客户端工具,默认情况下不会安装),则可以在终端中(系统终端,而不是R终端)键入R-forge给出的命令。
svn checkout svn://svn.r-forge.r-project.org/svnroot/returnanalytics/

这将在当前工作目录下创建一个新目录,其中包含软件包中的所有文件。在该目录的顶层将有一个名为“pkg”的子目录。此特定项目(returnanalytics)包含多个软件包。

ls returnanalytics/pkg
#FactorAnalytics  MPO  PApages  PerformanceAnalytics  PortfolioAnalytics

但是一些R-forge项目只有一个单独的软件包,例如:

svn checkout svn://svn.r-forge.r-project.org/svnroot/random/
#Checked out revision 14.
ls random/pkg
#DESCRIPTION  inst  man  NAMESPACE  R

现在你已经拥有了所有代码的本地副本,如果你想要能够安装该软件包,你必须先构建它。

警告:由于R-Forge未能构建该软件包,很可能存在问题。因此,如果你只是构建它,可能会发现一些事情不像预期那样工作。特别是,缺少或不完整的文档很可能存在。

如果你正在使用类UNIX系统,则可以相对容易地构建和安装该软件包。对于像returnanalytics这样的多软件包项目,如果你想安装其中的PortfolioAnalytics软件包,可以按照以下步骤操作:

R --vanilla CMD INSTALL --build returnanalytics/pkg/PortfolioAnalytics 

"PortfolioAnalytics" 是包含你要构建/安装的软件包的目录名称。对于单一软件包项目,您可以按如下方式构建和安装:

R --vanilla CMD INSTALL --build random/pkg

如果您想在Windows上构建/安装软件包,请参见此问题并按照@JoshuaUlrich提供的两个链接进行操作。

更多信息请参考R安装和管理R-Forge用户手册SVN手册


INSTALL --build 会构建软件包的二进制版本,但不会安装它。此外,使用 install.packages("XYZ",repos="http://r-forge.r-project.org", type = "source") 更加方便。 - hadley
@hadley, R CMD build是构建一个软件包但不安装它,而R CMD INSTALL --build则会安装它,请自行尝试。至于使用install.packages(..., repos="http://r-forge...", type="source"),也许你应该再读一遍问题。 - GSee
@hadley 关于没有使用 R CMD build 构建二进制文件的选项,R NEWS 从 2.14.0 版本开始有一条记录,指出 "R CMD build --binary 现已正式弃用:R CMD INSTALL --build 一直是首选替代方案。" - GSee
我认为 R CMD install --build 命令会安装软件包并创建一个压缩副本,这可能会导致 devtools 出现 bug(https://github.com/hadley/devtools/issues/335),所以我很高兴在这里发表评论! - hadley
HTTP已经不再是所有GitHub请求的首选方案,现在所有HTTP请求都会被301重定向到HTTPS。一些库可能无法很好地处理这种情况,因此尝试使用HTTPS等效项可能有助于诊断问题,就像我在关于GitHub和R的另一个SO问题中使用curl -i命令一样。 - Matthew McCullough
显示剩余5条评论

3
如果(并且只有)您的操作系统具备适当的工具链,那么这可能会成功:
# First download source file to your working directory
# As an example use browser to download pkg:partykit from: 
#  http://download.r-forge.r-project.org/src/contrib/partykit_1.1-2.tar.gz
# Move to working directory
# Or in the case of returnanalytics (which is a bundle of packages):
# http://r-forge.r-project.org/R/?group_id=579 and download the tar.gz (source)
# Then in R:

install.packages( "partykit_1.1-2.tar.gz", repo=NULL, type="source")
# for the first of the ReturnAnalytics packages:
install.packages( "Dowd_0.11.tar.gz", repo=NULL, type="source")

这些指令应该是“跨平台”的。我不确定被接受的答案中的指令是否适用于Mac( OSX)。(后来我确认它们在Mac上确实“可行”,但发现这个过程比我上面建议的更复杂。它们确实会生成一个目录,其中包含每个软件包的内容,可以通过R --vanilla CMD INSTALL --build pathToEachPackageSeparately成功安装。)


2
有可能你正在尝试安装的软件包需要更新版本的R语言。例如,你可能会看到以下错误信息:“ERROR: this R is version 2.15.0, package 'PerformanceAnalytics' requires R >= 3.0.0”。你可以尝试更新你的R语言版本。
或者,如果你像我一样面临同样的情况,即想使用pqR(目前使用的是R语言版本2.15),你可以在这里找到过时的软件包:http://cran.at.r-project.org/src/contrib/Archive/PerformanceAnalytics/。你可以从R-Forge软件包页面进入“稳定版本:从CRAN获取PerformanceAnalytics 1.4.3541”->旧源代码:PerformanceAnalytics archive。
例如,你会发现软件包PerformanceAnalytics版本1.1.0只需要R语言版本大于等于2.14。
祝好运!

0

或者,如果在GitHub上有存储库,您可以从GitHub安装特定的软件包。

我运行了install.packages('ggfortify'),但是得到以下警告信息:

Warning message: “package ‘ggfortify’ is not available (for R version 3.3.2)”

ggfortify是相同软件包的GitHub存储库。

devtools库使您能够使用install_github('username/repo')直接从GitHub安装软件包。

library(devtools)
install_github('sinhrks/ggfortify')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接