Access the paths that renv
uses for global state storage.
paths
An object of class list
of length 3.
If your project depends on one or R packages that are not available in any
remote location, you can still provide a locally-available tarball for renv
to use during restore. By default, these packages should be made available in
the folder as specified by the RENV_PATHS_LOCAL
environment variable. The
package sources should be placed in a file at one of these locations:
${RENV_PATHS_LOCAL}/<package>_<version>.<ext>
${RENV_PATHS_LOCAL}/<package>/<package>_<version>.<ext>
<project>/renv/local/<package>_<version>.<ext>
<project>/renv/local/<package>/<package>_<version>.<ext>
where .<ext>
is .tar.gz
for source packages, or .tgz
for binaries on
macOS and .zip
for binaries on Windows. During a restore()
, packages
installed from an unknown source will be searched for in this location.
In order to determine whether a package can safely be removed from the cache,
renv
needs to know which projects are using packages from the cache. Since
packages may be symlinked from the cache, and symlinks are by nature a one-way
link, projects need to also report that they're using the renv
cache.
To accomplish this, whenever renv
is used with a project, it will record
itself as being used within a file located at:
${RENV_PATHS_ROOT}/projects
This file is list of projects currently using the renv
cache. With this,
renv
can crawl projects registered with renv
and use that to determine if
any packages within the cache are no longer in use, and can be removed.
By default, renv
collects state into these folders:
Platform | Location |
Linux | ~/.local/share/renv |
macOS | ~/Library/Application Support/renv |
Windows | %LOCALAPPDATA%/renv |
If desired, this path can be adjusted by setting the RENV_PATHS_ROOT
environment variable. This can be useful if you'd like, for example, multiple
users to be able to share a single global cache.
The various state sub-directories can also be individually adjusted, if so desired (e.g. you'd prefer to keep the cache of package installations on a separate volume). The various environment variables that can be set are enumerated below:
Environment Variable | Description |
RENV_PATHS_ROOT |
The root path used for global state storage. |
RENV_PATHS_LIBRARY |
The path to the project library. |
RENV_PATHS_LIBRARY_ROOT |
The parent path for project libraries. |
RENV_PATHS_LOCAL |
The path containing local package sources. |
RENV_PATHS_SOURCE |
The path containing downloaded package sources. |
RENV_PATHS_BINARY |
The path containing downloaded package binaries. |
RENV_PATHS_CACHE |
The path containing cached package installations. |
RENV_PATHS_PREFIX |
An optional prefix to prepend to the constructed library / cache paths. |
RENV_PATHS_RTOOLS |
(Windows only) The path to Rtools. |
RENV_PATHS_EXTSOFT |
(Windows only) The path containing external software needed for compilation of Windows source packages. |
RENV_PATHS_MRAN |
The path containing MRAN-related metadata. See vignette("mran", package = "renv") for more details. |
Note that renv
will append platform-specific and version-specific entries
to the set paths as appropriate. For example, if you have set:
Sys.setenv(RENV_PATHS_CACHE = "/mnt/shared/renv/cache")
then the directory used for the cache will still depend on the renv
cache
version (e.g. v2
), the R version (e.g. 3.5
) and the platform (e.g.
x86_64-pc-linux-gnu
). For example:
/mnt/shared/renv/cache/v2/R-3.5/x86_64-pc-linux-gnu
This ensures that you can set a single RENV_PATHS_CACHE
environment variable
globally without worry that it may cause collisions or errors if multiple
versions of R needed to interact with the same cache.
If you need to share the same cache with multiple different Linux operating
systems, you may want to set the RENV_PATHS_PREFIX
environment variable
to help disambiguate the paths used on Linux. For example, setting
RENV_PATHS_PREFIX = "ubuntu-bionic"
would instruct renv
to construct a
cache path like:
/mnt/shared/renv/cache/v2/ubuntu-bionic/R-3.5/x86_64-pc-linux-gnu
If this is required, it's strongly recommended that this environment
variable is set in your R installation's Renviron.site
file, typically
located at file.path(R.home("etc"), "Renviron.site")
, so that it can be
active for any R sessions launched on that machine.
If reproducibility of a project is desired on a particular machine, it is
highly recommended that the renv
cache of installed packages + binary
packages is backed up and persisted, so that packages can be easily restored
in the future -- installation of packages from source can often be arduous.
If you want these settings to persist in your project, it is recommended that you add these to an appropriate R startup file. For example, these could be set in:
A project-local .Renviron
;
The user-level .Renviron
;
A file at file.path(R.home("etc"), "Renviron.site")
.
Please see ?Startup for more details.
# NOT RUN {
# get the path to the project library
path <- renv::paths$library()
# }
Run the code above in your browser using DataLab