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

483

一位朋友给我发来一篇关于使用R爬取The New York Times的教程,链接如下: 使用R爬取纽约时报。我非常想尝试一下。但是,第一步是从源代码中安装一个叫做[RJSONIO][2]的包。

我对R有一定的了解,但是我不知道如何从源代码中安装一个包。

我的操作系统是macOS(OS X)。


1
这与以下内容非常相关:https://dev59.com/eGgu5IYBdhLWcg3wv5im - GSee
编辑队列已满,但这是一个有效的斯坦福大学博客文章链接:https://web.stanford.edu/~cengel/cgi-bin/anthrospace/scraping-new-york-times-articles-with-r(请注意波浪号)。 - TheDudeAbides
7个回答

608
如果您拥有本地文件,则使用install.packages()并设置repos=NULL:
install.packages(path_to_file, repos = NULL, type="source")

在Windows上,表示完整路径和文件名的path_to_file将类似于:"C:\\RJSONIO_0.2-3.tar.gz"

  • 在UNIX上,它将类似于:"/home/blah/RJSONIO_0.2-3.tar.gz"

4
如果file_name_and_path是一个R包的本地源代码库,这也适用。 - Faheem Mitha

116

下载源代码包,打开Terminal.app,在当前文件所在的目录中导航,然后执行:

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

请注意,这只有在以下情况下才能成功:a)软件包不需要编译,或者b)编译所需的系统工具已经安装。请参阅:Mac OS X上的 R


3
我尝试了一下,但出现了错误:Madjoro-MacBook-Pro:~ Madjoro$ R CMD INSTALL RJSONIO_0.2-3.tar.gz 警告:无效的软件包‘RJSONIO_0.2-3.tar.gz’ 错误:错误:未指定任何软件包。 - Madjoro
1
你需要指定正确的路径到.tar.gz文件,并且需要安装XCode工具(http://developer.apple.com/TOOLS/Xcode/)。 - rcs
1
有没有一种方法可以从源代码构建二进制.zip文件? - haridsv
6
找到解决方案,你需要使用 --binary 选项。 - haridsv
2
你因为打成install而不是INSTALL来到这里多少次了? - Brandon Bertelsen

56

你可以直接从代码库安装(注意 type="source"):

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

3
我尝试了这个,但出现错误:
  • 安装源包 ‘RJSONIO’ ... ** 库 ** arch - i386 sh: make: 命令未找到 ERROR: 编译失败,无法安装‘RJSONIO’包 RMate 在第3行停止
  • 移除 ‘/Library/Frameworks/R.framework/Versions/2.9/Resources/library/RJSONIO’ 下载的软件包位于 ‘/private/var/folders/Ey/EyzhYjoKESmsmsZ6K87PeU+++TI/-Tmp-/Rtmpe3C96p/downloaded_packages’ 正在更新 '.Library' 中的软件包HTML索引 警告信息: In install.packages("RJSONIO", repos = "http://www.omegahat.org/R", : 安装‘RJSONIO’包时返回非零状态
- Madjoro
6
您是否已安装开发人员工具?它们包含在Mac OS X安装DVD中。由于该软件包包含C代码,因此您需要编译器才能从源代码进行安装。 - Eduardo Leoni
1
我怀疑我没有安装开发者工具。至少,我不记得安装它们了。谢谢! - Madjoro
4
如果您是在Windows上进行此操作,则可以从http://www.murdoch-sutherland.com/Rtools/获取开发人员工具... 确保在安装时选中更新路径的框(可能有点难以阅读...只需勾选出现的未选框即可)。 - Dan Goldstein

36

一个额外方便(但微不足道)的提示,可用于从源代码安装旧版本软件包。

首先,如果您调用“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


12

从CRAN下载,您可以直接从GitHub存储库地址安装。因此,如果您想要https://github.com/twitter/AnomalyDetection的包,请使用:

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

事半功倍。


9
此外,您可以使用--binary选项构建二进制包。
R CMD build --binary RJSONIO_0.2-3.tar.gz

27
R CMD build --binary 已经过时,请使用 R CMD INSTALL --build 代替。 - f3lix

1

如果您拥有自己编写的源代码,从GitHub下载(克隆)的源代码,或者以其他方式从其他来源复制或移动到计算机上,则安装软件包/库的简单方法如下:

R语言

只需执行以下简单操作即可:

# install.packages("devtools")
devtools::install('path/to/package')

从终端

这里,您可以克隆GitHub存储库并使用以下命令进行安装:

git clone https://github.com/user/repo.git
R -e "install.packages('devtools');devtools::install('path/to/package')"

或者如果您已经安装了开发工具,您可以跳过第一步,直接克隆存储库并运行:

R -e "devtools::install('path/to/package')"

请注意,如果您使用的是Ubuntu操作系统,在安装devtools之前,请先安装这些系统库(否则devtools将无法正确安装)。
apt-get update
apt-get install build-essential libcurl4-gnutls-dev libxml2-dev libssl-dev libfontconfig1-dev libharfbuzz-dev libfribidi-dev libfreetype6-dev libpng-dev libtiff5-dev libjpeg-dev -y

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