如何从源代码安装R软件包?


Answers:


486

如果您在本地拥有文件,则使用install.packages()并设置repos=NULL

install.packages(path_to_file, repos = NULL, type="source")

其中path_to_file代表完整路径和文件名:

  • 在Windows上,它将类似于:"C:\\RJSONIO_0.2-3.tar.gz"
  • 在UNIX上,它将如下所示:"/home/blah/RJSONIO_0.2-3.tar.gz"

2
如果file_name_and_path是R程序包的本地源存储库,则这也适用。
Faheem Mitha

1
请注意,该INSTALL_opts选项可用于将选项传递给R CMD INSTALL。例如,“
Andy Barbour,2013年

2
install.packages(“ / tmp / shiny_0.13.1.tar.gz”,repos = NULL,type =“ source”)我收到此错误:-ksh:语法错误:`('意外
iaav

3
正如@Cerin指出的那样,您必须照顾好扩展名。使用.zip归档文件时,R出现错误“(未指定'lib')”。将扩展名更改为.tar后,一切正常。
Mohamed Hasan'3

2
值得注意的是,因为repos = NULL这种方法不会安装例如CRAN的依赖项。这个答案devtools::install_local(path_to_file)对我来说建议哪个更简单(要提供的参数更少)和更好(也要安装依赖项)。
mac

97

下载源包,打开Terminal.app,导航到您当前拥有文件的目录,然后执行:

R CMD INSTALL RJSONIO_0.2-3.tar.gz

请注意,只有在以下情况之一时,此操作才会成功:a)软件包不需要编译,或者b)存在用于编译的所需系统工具。参见:https : //cran.r-project.org/bin/macosx/tools/


3
我尝试了此错误,但出现了一个错误:Madjoro-MacBook-Pro:〜Madjoro $ R CMD安装RJSONIO_0.2-3.tar.gz警告:无效的软件包'RJSONIO_0.2-3.tar.gz'错误:错误:无软件包指定

1
您必须指定.tar.gz文件的正确路径,并且需要XCode工具(developer.apple.com/TOOLS/Xcode)。
RCS

1
有没有一种方法可以从源代码构建二进制.zip文件?
haridsv 2010年

5
找到解决方案后,您需要使用--binary选项。
haridsv 2010年

您键入输入install而不是INSTALL来了多少次?
布兰登·贝特尔森

50

您可以直接从存储库安装(请注意type="source"):

install.packages("RJSONIO", repos = "http://www.omegahat.org/R", type="source")

3
我尝试了此操作,并收到一个错误:*安装源程序包'RJSONIO'... ** libs ** arch-i386 sh:make:找不到命令错误:程序包'RJSONIO'RM的编译失败在第3行停止*删除' /Library/Frameworks/R.framework/Versions/2.9/Resources/library/RJSONIO'下载的软件包位于'/ private / var / folders / Ey / EyzhYjoKESmsmsZ6K87PeU +++ TI / -Tmp- / Rtmpe3C96p / downloaded_pa​​ckages'正在更新HTML “ .Library”中软件包的索引警告消息:在install.packages(“ RJSONIO”,repos =“ omegahat.org/R ”,::软件包'RJSONIO'的安装具有非零退出状态

6
您是否安装了开发人员工具?它们来自Mac OS X安装DVD。由于此软件包包含C代码,因此您将需要编译器以从源代码进行安装。
Eduardo Leoni

1
我怀疑我没有安装开发人员工具。Atleast,我不记得安装它们了。谢谢!

4
如果您是在Windows上执行此操作,则可以从murdoch-sutherland.com/Rtools获取开发人员工具 ...确保在安装时选中显示更新路径的复选框(可能有点难以理解... 。刚刚选中了出现的未选中框)
Dan Goldstein,2009年

27

补充方便(但不重要)的技巧,可从源代码安装较旧版本的软件包。

首先,如果您调用“ install.packages”,它将始终从回购中安装最新的软件包。如果要安装较旧版本的软件包,例如出于兼容性考虑,可以调用install.packages(“ url_to_source”,repo = NULL,type =“ source”)。例如:

install.packages("http://cran.r-project.org/src/contrib/Archive/RNetLogo/RNetLogo_0.9-6.tar.gz", repo=NULL, type="source")

我发现,无需手动将软件包下载到本地磁盘并切换到命令行或从本地磁盘安装,我发现它非常方便并且简化了调用(单步执行)。

另外:您可以将这个技巧与devtools库的dev_mode一起使用,以管理不同版本的软件包:

参考:doc devtools


9

从cran,您可以直接从github存储库地址安装。因此,如果您想将包装放在https://github.com/twitter/AnomalyDetection

library(devtools)
install_github("twitter/AnomalyDetection")

绝招。


8

另外,您可以使用--binary选项构建二进制包。

R CMD build --binary RJSONIO_0.2-3.tar.gz

21
R CMD build --binary不推荐使用;使用R CMD INSTALL --build代替
f3lix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.