This function recursively queries dependencies of R packages at a specific snapshot time. The dependency graph can then be used to recreate the computational environment. The data on dependencies are provided by R-hub.
Usage
resolve(
pkgs = ".",
snapshot_date,
no_enhances = TRUE,
no_suggests = TRUE,
query_sysreqs = TRUE,
os = "ubuntu-20.04",
verbose = FALSE
)
Arguments
- pkgs
pkgs
can be 1) a character vector of R packages to resolve, 2) a path to arenv
lockfile, or 3) a data structure thatas_pkgrefs()
can convert to a character vector of package references. For 1)pkgs
can be either in shorthands, e.g. "rtoot", "ropensci/readODS", or in package references, e.g. "cran::rtoot", "github::ropensci/readODS". Please refer to the Package References documentation ofpak
for details. Currently, this package supports only cran and github packages. For 2)as_pkgrefs()
support the output ofsessionInfo()
, a renv lockfile or a single directory. If it is a single directory, all R scripts are scanned for R packages used usingrenv::dependencies()
. Currently, the default is to scan the R scripts in the current working directory. Please also note that this scanning only assumes there are CRAN and Bioconductor packages. We strongly recommend checking whether this is really the case (see example below).- snapshot_date
Snapshot date, if not specified, assume to be a month ago
- no_enhances
logical, whether to ignore packages in the "Enhances" field
- no_suggests
logical, whether to ignore packages in the "Suggests" field
- query_sysreqs
logical, whether to query for System Requirements. Important: Archived CRAN can't be queried for system requirements. Those packages are assumed to have no system requirement.
- os
character, which OS to query for system requirements
- verbose
logical, whether to display messages
Value
a rang
S3 object with the following items
- call
original function call
- ranglets
List of dependency graphs of all packages in
pkgs
- snapshot_date
snapshot_date
- no_enhances
no_enhances
- no_suggests
no_suggests
- unresolved_pkgsrefs
Packages that can't be resolved
- sysreqs
System requirements as Linux commands
- r_version
The latest R version as of
snapshot_date
- os
os
Examples
# \donttest{
if (interactive()) {
graph <- resolve(pkgs = c("openNLP", "LDAvis", "topicmodels", "quanteda"),
snapshot_date = "2020-01-16")
graph
## to resolve github packages
gh_graph <- resolve(pkgs = c("https://github.com/schochastics/rtoot"),
snapshot_date = "2022-11-28")
gh_graph
## scanning
graph <- resolve(snapshot_date = "2022-11-28")
## But we recommend this:
pkgs <- as_pkgrefs(".")
pkgs ## check the accuracy
graph <- resolve(pkgs, snapshot_date = "2022-11-28")
}
# }