---
title: "Ubuntu Packages For R - Full Instructions"
output:
  minidown::mini_document:
    framework: water
    toc: yes
    toc_float: true
---

# Installing R 

Package for the *current R 4.4.* release* are available for most stable Desktop releases of Ubuntu until their official end of life date. However, only the latest Long Term Support (LTS) release is fully supported. As of May 1, 2024 the supported releases are 

- Noble Numbat (24.04, amd64 only),
- Jammy Jellyfish (22.04, amd64 only),
- Focal Fossa (20.04; LTS and amd64 only),
- Bionic Beaver (18.04; LTS), and 
- Xenial Xerus (16.04; LTS). 

Note that in order to install R 4.4 packages, a _new and different_ `sources.list` entry is needed.  See below for details.

For older R releases, see the [corresponding README](olderreleasesREADME.html).

## Get 24,000+ CRAN Packages 

For almost all packages in CRAN and BioConductor, please utilize the r2u project.  Details on how to setup and install packages can be found at the [project website](https://github.com/eddelbuettel/r2u).

The c2d4u project is currently on hiatus and no longer updating packages.  Please use r2u for current updates.

# Installation

To obtain the latest R 4.4 packages, add an entry like

    deb https://cloud.r-project.org/bin/linux/ubuntu noble-cran40/
    
or

    deb https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/
    
or

    deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/
    
or

    deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran40/
    
or

    deb https://cloud.r-project.org/bin/linux/ubuntu xenial-cran40/

in your /etc/apt/sources.list file.  By using https://cloud.r-project.org, you will be automatically be redirected to a nearby CRAN mirror.  See https://cran.r-project.org/mirrors.html for the current list of CRAN mirrors. 

To install the complete R system, use

    sudo apt-get update
    sudo apt-get install r-base

Users who need to compile R packages from source [e.g. package maintainers, or anyone installing packages with install.packages()] should also install the r-base-dev package:

    sudo apt-get install r-base-dev

The R packages for Ubuntu otherwise behave like the Debian ones. One may find additional information in the Debian README file located at https://cran.R-project.org/bin/linux/debian/.

Installation and compilation of R or some of its packages may require Ubuntu packages from the "backports" repositories. Therefore, it is suggested to activate the backports repositories with an entry like 

    deb https://<my.favorite.ubuntu.mirror>/ focal-backports main restricted universe

in your /etc/apt/sources.list file. See https://launchpad.net/ubuntu/+archivemirrors for the list of Ubuntu mirrors.

## Users of Mint and other derivatives of Ubuntu

When creating an entry for apt, you must use the Ubuntu release name your distribution is based on.  For example, do not use "uma", instead use "focal."

# Supported Packages

A number of R packages are available from the Ubuntu repositories with names starting with r-cran-. The following ones are kept up-to-date on CRAN: all packages part of the r-recommended bundle, namely

- 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

as well as

- r-cran-rodbc

The other r-cran-* packages are updated with Ubuntu releases only. Users who need to update one of these R packages (say r-cran-foo) should first make sure to obtain all the required build
dependencies with

    sudo apt-get build-dep r-cran-foo

Because they rely on the installed version of R, we also provide, on an experimental basis, versions of the following packages as up-to-date as the Ubuntu release allows:

- littler
- python-rpy2
- jags

Please notice that the maintainers are not necessarily themselves users of these packages, so positive or negative feedback through the usual channels (see below) would be appreciated.

Finally, as an added convenience to Ubuntu users who interact with R through Emacs, we also provide an up-to-date version of the package

- ess


# Secure APT

With the deprecation of apt-key, the recommended method for adding the key is:

    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
    
To verify the key:

    gpg --show-keys /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc

The fingerprint should be E298A3A825C0D65DFD57CBB651716619E084DAB9.

## Using apt-key

NOTE: There was an issue with a second key found on the Ubuntu keyserver.  Details and how to remove can be found at http://rubuntu.netlify.com/post/changes-to-cran-ubuntu-webpage-regarding-apt-secure-key/.

The Ubuntu archives on CRAN are signed with the key of "Michael Rutter <marutter@gmail.com>" with key ID 0x51716619e084dab9.  To add the key to your system with one command use (thanks to Brett Presnell for the tip):

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9

An alternate method can be used by retrieving the key with

    gpg --keyserver keyserver.ubuntu.com --recv-key E298A3A825C0D65DFD57CBB651716619E084DAB9

and then feed it to apt-key with

    gpg -a --export E298A3A825C0D65DFD57CBB651716619E084DAB9 | sudo apt-key add -

Some people have reported difficulties using this approach. The issue is usually related to a firewall blocking port 11371. If the first gpg command fails, you may want to try (thanks to Mischan Toosarani for the tip):

    gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9

and then feed it to apt-key with

    gpg -a --export E298A3A825C0D65DFD57CBB651716619E084DAB9 | sudo apt-key add -

Another alternative approach is to search for the key at http://keyserver.ubuntu.com:11371/ and copy the key to a plain text file, say key.txt. Then, feed the key to apt-key with

    sudo apt-key add key.txt


# Maintenance of R Packages

The R packages part of the Ubuntu r-base and r-recommended packages are installed into the directory /usr/lib/R/library. These can be updated using apt-get with

    sudo apt-get update
    sudo apt-get upgrade

The other r-cran-* packages shipped with Ubuntu are installed into the directory /usr/lib/R/site-library.

Installing R packages not provided with Ubuntu first requires tools to compile the packages from source. These tools are installed via the R development package with

    sudo apt-get install r-base-dev

This pulls in the basic requirements for compiling R packages. R packages may then be installed by the local user/admin from the CRAN source packages, typically from inside R using the

    > install.packages()

function or using

    R CMD INSTALL

from a shell. If you have proper write permissions in /usr/local/lib/R/site-library/, and you have not set R_LIBS_USER manually, they will be installed there. Otherwise, you will be asked if a directory in your home directory should be created for these packages. A routine update of such locally compiled packages can be done using

    > update.packages(.libPaths()[1])
    
which will update the packages in the first part of your library path. You can have a look at the components of this path by

    > .libPaths()
    
If you would like to update R packages that have been installed via the Ubuntu package management system which are installed somewhere under /usr/lib/, I would recommend to do this the Ubuntu way using the source packages from the latest version of Ubuntu or use my PPA cran2deb4ubuntu - https://launchpad.net/~c2d4u.team/+archive/ubuntu/c2d4u4.0+.

# Pathways to R Packages

In order to find packages, R looks at the variables R_LIBS_USER and R_LIBS_SITE. On Debian and Ubuntu, R_LIBS_USER is set in /etc/R/Renviron to 

    R_LIBS_USER=${R_LIBS_USER-'~/R/$platform-library/4.4'}
    
where $platform is something like 'x86_64-pc-linux-gnu' and depending on the version of R installed. You can override this in your ~/.Renviron. R_LIBS_SITE is set in /etc/R/Renviron to

    R_LIBS_SITE=${R_LIBS_SITE-'/usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library'}
    
This means that packages installed from within R take precedence over the ones installed via the Ubuntu package management system if you happen to have two versions installed at the same time.

# Reporting Problems

The best place to report problems with these packages or ask R questions specific to Ubuntu is the R-SIG-Debian mailing list. See

  https://stat.ethz.ch/mailman/listinfo/r-sig-debian

for more information.


# Acknowledgements

The Debian R packages are maintained by Dirk Eddelbuettel. The Ubuntu packages are compiled for i386 and amd64 by Michael Rutter (<marutter@gmail.com>) using scripts developed by Vincent Goulet.
