Install one or more R packages from a variety of remote sources.

  packages = NULL,
  library = NULL,
  type = NULL,
  rebuild = FALSE,
  prompt = interactive(),
  project = NULL



A character vector of R packages to install. Required package dependencies (Depends, Imports, LinkingTo) will be installed as required.


Unused arguments, reserved for future expansion. If any arguments are matched to ..., renv will signal an error.


The R library to be used. When NULL, the active project library will be used instead.


The type of package to install ("source" or "binary"). Defaults to the value of getOption("pkgType").


Force packages to be rebuilt, thereby bypassing any installed versions of the package available in the cache? This can either be a boolean (indicating that all installed packages should be rebuilt), or a vector of package names indicating which packages should be rebuilt.


Boolean; prompt the user before taking any action? For backwards compatibility, confirm is accepted as an alias for prompt.


The project directory. If NULL, then the active project will be used. If no project is currently active, then the current working directory is used instead.


A named list of package records which were installed by renv.


install() uses the same machinery as restore() when installing packages. In particular, this means that the local cache of package installations is used when possible. This helps to avoid re-downloading packages that have already been downloaded before, and re-compiling packages from source when a binary copy of that package is already available.

Note that this interface is subject to change -- the goal is to hook into separate package installation backends in the future.


Packages from Bioconductor can be installed by using the bioc:: prefix. For example,


will install the latest-available version of Biobase from Bioconductor.

renv depends on BiocManager (or, for older versions of R, BiocInstaller) for the installation of packages from Bioconductor. If these packages are not available, renv will attempt to automatically install them before fulfilling the installation request.

Remotes Syntax

renv supports a subset of the remotes syntax used for package installation, as described in See the examples below for more details.

Package Configuration

Many R packages have a configure script that needs to be run to prepare the package for installation. Arguments and environment variables can be passed through to those scripts in a manner similar to install.packages. In particular, the R options configure.args and configure.vars can be used to map package names to their appropriate configuration. For example:

# installation of RNetCDF may require us to set include paths for netcdf
configure.args = c(RNetCDF = "--with-netcdf-include=/usr/include/udunits2"))
options(configure.args = configure.args)

Similarly, additional flags that should be passed to R CMD INSTALL can be set via the install.opts R option:

# installation of R packages using the Windows Subsystem for Linux
# may require the `--no-lock` flag to be set during install
options(install.opts = "--no-lock")


if (FALSE) { # install the latest version of 'digest' renv::install("digest") # install an old version of 'digest' (using archives) renv::install("digest@0.6.18") # install 'digest' from GitHub (latest dev. version) renv::install("eddelbuettel/digest") # install a package from GitHub, using specific commit renv::install("eddelbuettel/digest@df55b00bff33e945246eff2586717452e635032f") # install a package from Bioconductor # (note: requires the BiocManager package) renv::install("bioc::Biobase") # install a package, specifying path explicitly renv::install("~/path/to/package") }