安装 R
适用于当前 R 4.2 版本的*包*可用于大多数稳定的 Ubuntu 桌面版本,直到其官方生命周期结束日期。但是,只有最新的长期支持 (LTS) 版本得到完全支持。截至 2022 年 5 月 2 日,支持的版本为
- Jammy Jellyfish (22.04,仅 amd64)
- Impish Indri (21.10,仅 amd64),
- Focal Fossa (20.04;LTS 和仅 amd64),
- Bionic Beaver (18.04;LTS),以及
- Xenial Xerus (16.04;LTS)。
请注意,为了安装 R 4.1 包,需要一个新的且不同的sources.list
条目。有关详细信息,请参见下文。
对于旧版本的 R,请参见相应的自述文件。
其他 CRAN 包
对于 R 的其他二进制包(目前超过 4,000 个),请查看不同的 CRAN2deb4ubuntu PPA。对于 R 4.1.*,这是https://launchpad.net/~c2d4u.team/+archive/ubuntu/c2d4u4.0+
“c2d4u”存储库仅适用于 LTS 版本。如果您希望尝试将存储库与非 LTS 版本一起使用,您可以手动编辑“c2d4u_team-ubuntu-c2d4u4_0_-*.list”以使用 focal 而不是预期的版本。这种“c2d4u”存储库的使用不受支持。强烈建议使用 LTS 版本来利用“c2d4u”存储库。
安装
要获取最新的 R 4.1 包,请添加类似以下内容的条目
deb https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/
或
deb https://cloud.r-project.org/bin/linux/ubuntu impish-cran40/
或
deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/
或
deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran40/
或
deb https://cloud.r-project.org/bin/linux/ubuntu xenial-cran40/
在您的 /etc/apt/sources.list 文件中。通过使用https://cloud.r-project.org,您将自动被重定向到附近的 CRAN 镜像。有关当前 CRAN 镜像列表,请参见https://cran.r-project.org.cn/mirrors.html。
要安装完整的 R 系统,请使用
sudo apt-get update
sudo apt-get install r-base
需要从源代码编译 R 包的用户(例如,包维护者或任何使用 install.packages() 安装包的用户)还应安装 r-base-dev 包
sudo apt-get install r-base-dev
Ubuntu 的 R 包的行为与 Debian 的 R 包类似。您可以在位于https://cran.R-project.org/bin/linux/debian/的 Debian 自述文件中找到更多信息。
安装和编译 R 或其某些包可能需要来自“backports”存储库的 Ubuntu 包。因此,建议使用类似以下内容的条目激活 backports 存储库
deb https://<my.favorite.ubuntu.mirror>/ focal-backports main restricted universe
在您的 /etc/apt/sources.list 文件中。有关 Ubuntu 镜像列表,请参见 https://launchpad.net/ubuntu/+archivemirrors。
Mint 和其他 Ubuntu 派生版用户
创建 apt 条目时,您必须使用您的发行版所基于的 Ubuntu 版本名称。例如,不要使用“uma”,而应使用“focal”。
支持的包
Ubuntu 存储库中提供了一些 R 包,其名称以 r-cran- 开头。以下这些包在 CRAN 上保持最新:r-recommended 包捆绑包中的所有包,即
- r-cran-boot
- r-cran-class
- r-cran-cluster
- r-cran-codetools
- r-cran-foreign
- r-cran-kernsmooth
- r-cran-lattice
- r-cran-mass
- r-cran-matrix
- r-cran-mgcv
- r-cran-nlme
- r-cran-nnet
- r-cran-rpart
- r-cran-spatial
- r-cran-survival
以及
- r-cran-rodbc
其他 r-cran-* 包仅随 Ubuntu 版本更新。需要更新这些 R 包之一(例如 r-cran-foo)的用户应首先确保使用以下命令获取所有必需的构建依赖项:
sudo apt-get build-dep r-cran-foo
由于它们依赖于已安装的 R 版本,因此我们还以实验方式提供以下包的版本,这些版本与 Ubuntu 版本一样最新
- littler
- python-rpy2
- jags
请注意,维护者不一定是这些包的用户,因此通过常用渠道(见下文)提供正面或负面反馈将不胜感激。
最后,为了方便通过 Emacs 与 R 交互的 Ubuntu 用户,我们还提供最新版本的包
- ess
安全 APT
随着 apt-key 的弃用,添加密钥的推荐方法是
wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
要验证密钥
gpg --show-keys /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
指纹应为 E298A3A825C0D65DFD57CBB651716619E084DAB9。
使用 apt-key
注意:Ubuntu 密钥服务器上存在第二个密钥的问题。有关详细信息以及如何删除,请参见 http://rubuntu.netlify.com/post/changes-to-cran-ubuntu-webpage-regarding-apt-secure-key/。
CRAN 上的 Ubuntu 存档使用“Michael Rutter marutter@gmail.com”的密钥进行签名,密钥 ID 为 0x51716619e084dab9。要使用一个命令将密钥添加到您的系统,请使用(感谢 Brett Presnell 提供的提示)
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
可以使用另一种方法,通过以下命令检索密钥:
gpg --keyserver keyserver.ubuntu.com --recv-key E298A3A825C0D65DFD57CBB651716619E084DAB9
然后将其提供给 apt-key:
gpg -a --export E298A3A825C0D65DFD57CBB651716619E084DAB9 | sudo apt-key add -
有些人报告使用这种方法时遇到困难。问题通常与防火墙阻止端口 11371 相关。如果第一个 gpg 命令失败,您可能需要尝试(感谢 Mischan Toosarani 提供的提示)
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
然后将其提供给 apt-key:
gpg -a --export E298A3A825C0D65DFD57CBB651716619E084DAB9 | sudo apt-key add -
另一种替代方法是在 http://keyserver.ubuntu.com:11371/ 上搜索密钥,并将密钥复制到纯文本文件(例如 key.txt)中。然后,将密钥提供给 apt-key:
sudo apt-key add key.txt
R 包的维护
Ubuntu r-base 和 r-recommended 包中的 R 包安装到 /usr/lib/R/library 目录中。可以使用 apt-get 更新这些包:
sudo apt-get update
sudo apt-get upgrade
与 Ubuntu 一起提供的其他 r-cran-* 包安装到 /usr/lib/R/site-library 目录中。
在 Ubuntu 中安装未提供的 R 包,首先需要使用工具从源代码编译这些包。这些工具可以通过 R 开发包安装,使用以下命令:
sudo apt-get install r-base-dev
这将拉取编译 R 包的基本要求。然后,本地用户/管理员可以从 CRAN 源包安装 R 包,通常从 R 内部使用以下命令:
> install.packages()
函数或使用
R CMD INSTALL
从 shell 中安装。如果您在 /usr/local/lib/R/site-library/ 中拥有适当的写入权限,并且您没有手动设置 R_LIBS_USER,它们将被安装在那里。否则,系统会询问您是否应该在您的主目录中创建一个目录来存放这些包。可以使用以下命令对这些本地编译的包进行例行更新:
> update.packages(.libPaths()[1])
这将更新库路径第一部分中的包。您可以通过以下命令查看此路径的组成部分:
> .libPaths()
如果您想更新通过 Ubuntu 包管理系统安装的 R 包,这些包安装在 /usr/lib/ 下的某个位置,我建议您使用 Ubuntu 的方式,使用来自最新版本的 Ubuntu 的源包,或者使用我的 PPA cran2deb4ubuntu - https://launchpad.net/~c2d4u.team/+archive/ubuntu/c2d4u4.0+。
R 包的路径
为了找到包,R 会查看变量 R_LIBS_USER 和 R_LIBS_SITE。在 Debian 和 Ubuntu 上,R_LIBS_USER 在 /etc/R/Renviron 中被设置为
R_LIBS_USER=${R_LIBS_USER-'~/R/$platform-library/3.5'}
其中 $platform 是类似于 ‘x86_64-pc-linux-gnu’ 的东西,具体取决于安装的 R 版本。您可以在 ~/.Renviron 中覆盖此设置。R_LIBS_SITE 在 /etc/R/Renviron 中被设置为
R_LIBS_SITE=${R_LIBS_SITE-'/usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library'}
这意味着,如果您同时安装了两个版本的 R 包,从 R 内部安装的包将优先于通过 Ubuntu 包管理系统安装的包。
报告问题
报告这些包问题或询问与 Ubuntu 相关的 R 问题的最佳位置是 R-SIG-Debian 邮件列表。请查看
https://stat.ethz.ch/mailman/listinfo/r-sig-debian
了解更多信息。
致谢
Debian R 包由 Dirk Eddelbuettel 维护。Ubuntu 包由 Michael Rutter (marutter@gmail.com) 使用 Vincent Goulet 开发的脚本为 i386 和 amd64 编译。