How do I install an R package from source?
一位朋友发给我这个伟大的教程,用R对网络分析NYtimes。我真的很想尝试一下。 但是,第一步是从源代码安装名为RJSONIO的软件包。
我知道R相当不错,但我不知道如何从源代码安装包。
我正在运行Mac OSX。
-
这是非常密切相关的:stackoverflow.com/questions/11105131/
如果您在本地拥有该文件,则使用install.packages()并设置repos=NULL:
1
| install.packages(path_to_file, repos = NULL, type="source") |
其中path_to_file表示完整路径和文件名:
-
在Windows上,它看起来像这样:"C:\
JSONIO_0.2-3.tar.gz"。
-
在UNIX上,它将如下所示:"/home/blah/RJSONIO_0.2-3.tar.gz"。
-
如果file_name_and_path是R包的本地源存储库,这也适用。
-
请注意,INSTALL_opts选项可用于将选项传递给R CMD INSTALL。例如"--no-multiarch"
-
这似乎不适用于zip存档。
-
install.packages("/ tmp / shiny_0.13.1.tar.gz",repos = NULL,type ="source")我收到此错误:-ksh:语法错误:`('意外
-
正如@Cerin指出的那样,你必须要处理扩展。我有一个错误"(因为'lib'未指定)"来自R与.zip档案。将扩展名更改为.tar后,一切正常。
-
我意识到这很老,但总是需要:)关于zip档案:对我有用的是通过基础R安装:包 - 从本地源安装包,...
-
这应该不是公认的答案吗?
-
值得注意的是,因为repos = NULL这种方法不会安装依赖项,例如来自CRAN。这个答案暗示devtools::install_local(path_to_file)对我来说更简单(供应的参数更少)和更好(安装依赖性)。
下载源包,打开Terminal.app,导航到当前拥有该文件的目录,然后执行:
1
| R CMD INSTALL RJSONIO_0.2-3.tar.gz |
请注意,只有在以下情况之一时才会成功:a)程序包不需要编译或b)存在编译所需的系统工具。请参阅:https://cran.r-project.org/bin/macosx/tools/
-
我试过这个并得到一个错误:Madjoro-MacBook-Pro:~Madjoro $ R CMD INSTALL RJSONIO_0.2-3.tar.gz警告:无效的包'RJSONIO_0.2-3.tar.gz'错误:错误:没有包规定
-
您必须指定.tar.gz文件的正确路径,并且需要XCode工具(developer.apple.com/TOOLS/Xcode)。
-
有没有办法从源代码构建二进制.zip?
-
找到解决方案,需要使用--binary选项。
您可以直接从存储库安装(请注意type="source"):
1
| install.packages("RJSONIO", repos ="http://www.omegahat.org/R", type="source") |
-
我试过这个并得到一个错误:*安装源包'RJSONIO'... ** libs ** arch - i386 sh:make:command not found错误:包'RJSONIO'的编译失败RMate在第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'的安装具有非零退出状态
-
您是否安装了开发人员工具?它们来自Mac OS X安装DVD。由于这个包有C代码,你需要一个编译器来从源代码安装它。
-
我怀疑我没有安装开发人员工具。至少,我不记得安装它们了。谢谢!
-
如果您在Windows上执行此操作,则可以从murdoch-sutherland.com/Rtools获取开发人员工具...确保在安装时选中要更新路径的框(可能有点难以阅读...刚刚检查了未经检查的框出现了)
从源代码安装旧版软件包的补充方便(但微不足道)的提示。
首先,如果你调用"install.packages",它总是从repo安装最新的软件包。如果要安装旧版本的软件包,比如说兼容性,可以调用install.packages("url_to_source",repo = NULL,type ="source")。例如:
1
| 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
从cran,您可以直接从github存储库地址安装。所以,如果你想要https://github.com/twitter/AnomalyDetection的包:
1 2
| library(devtools)
install_github("twitter/AnomalyDetection") |
诀窍。
此外,您可以使用--binary选项构建二进制包。
1
| R CMD build --binary RJSONIO_0.2-3.tar.gz |
-
R CMD build --binary已弃用;请改用R CMD INSTALL --build
我更喜欢从R cran项目安装一个包。我将搜索包名称,如果可用,我将从我的R shell执行命令,直接从R cran项目安装它。您的包在R目录中可用。所以这就是我要做的
1
| install.packages("RJSONIO") |
奖金 - 将包加载到R的当前会话中
-
我认为它确实回答了,任何软件包都可以使用软件包名称下载。由于问题的OP明确提到了包名,因此运行install.packages("RJSONIO")将导致R在cran.r-project.org/web/packages/RJSONIO/index.html中解析包名称,从而下载它。
-
这是严格不正确的,因为私有包不在公共存储库中,您可能必须直接从源安装它们。此外,如果必须调试或修改程序包,则无法从存储库安装版本。