SystemRequirements for R packages
This project is replaced by a new database rstudio/r-system-requirements, which is used by pak and rhub2.
Many R packages require system libraries or other external software to build
or run. The SystemRequirements field in the package DESCRIPTION file should
declare these dependencies, as free form text. This makes it difficult to
automate building and checking of R packages, since we need to guess which
software should be installed on the build machine.
The sysreqs project formalizes these requirements, and provides a database
with API to quickly find out which Homebrew, Debian, Ubuntu, RHEL/Centos, etc
packages or other software needs to be available to build and use R packages.
In this README:
sysreqs project is usedDistributions using deb package format:
Distributions using rpm package format:
Distributions using the PKGBUILD package format:
Non-native package formats:
The sysreqs database is a JSON document store. Each document contains
mappings for a single canonical system requirement. It contains both
the mappings to SystemRequirements fields, and platform dependent packages
or URLs.
Below an example to make this clear. Several R packages require the libxml2
library. For building these packages from source, the libxml2 development
headers are needed as well. The R packages refer to libxml2 in different
ways. E.g. igraph has simply libxml2 and XML has libxml2 (>= 2.6.3)
in their SystemRequirements fields.
{
"libxml2": {
"sysreqs": "libxml2",
"platforms": {
"DEB": "libxml2-dev",
"OSX/brew": null,
"RPM": "libxml2-devel"
}
}
}
Some notes:
sysreqs field can be a string or array, and its entries can be fixed
strings or regular expressions (when starting and ending with a forward slash, only JavaScript RegExp are supported. Example of a list sysreqs field, example of a sysreqs field with a regular expression.DEB based Linux
flavours (Debian, Ubuntu, etc.) packages that can be installed via the
host package manager are listed: DEB line example. For Windows, typically URLs that have
to be downloaded and installed: Windows lines example.null for OSX/brew means that nothing is needed, the system includes
the requirement(s) by default. Example.See API docs at https://sysreqs.r-hub.io/
Your contributions are welcome! More details below.
Please read about the data format first. Entries should be added or improved via pull requests.
If a package (of yours or not) has a dependency that's not listed here yet, open a pull request to add it. You don't need to have it mapped to all platforms yet. Example of such a PR.
You can also make a pull request to add a mapping to a platform. Example of such a PR.
If you maintain a public platform/tool using sysreqsdb, make a PR to this repo updating the section below. Please put your tool at the very end of the list.
The codemetar package, R package for the CodeMeta project, uses the sysreqs API to parse the SystemRequirements field.
The containerit package uses the sysreqs API to derive system requirements of packages for automatically creating a Dockerfile based on a collection of packages.
MIT © The R Consortium
Shell
80.6%
JavaScript
19.4%
SystemRequirements for R packages
This project is replaced by a new database rstudio/r-system-requirements, which is used by pak and rhub2.
Many R packages require system libraries or other external software to build
or run. The SystemRequirements field in the package DESCRIPTION file should
declare these dependencies, as free form text. This makes it difficult to
automate building and checking of R packages, since we need to guess which
software should be installed on the build machine.
The sysreqs project formalizes these requirements, and provides a database
with API to quickly find out which Homebrew, Debian, Ubuntu, RHEL/Centos, etc
packages or other software needs to be available to build and use R packages.
In this README:
sysreqs project is usedDistributions using deb package format:
Distributions using rpm package format:
Distributions using the PKGBUILD package format:
Non-native package formats:
The sysreqs database is a JSON document store. Each document contains
mappings for a single canonical system requirement. It contains both
the mappings to SystemRequirements fields, and platform dependent packages
or URLs.
Below an example to make this clear. Several R packages require the libxml2
library. For building these packages from source, the libxml2 development
headers are needed as well. The R packages refer to libxml2 in different
ways. E.g. igraph has simply libxml2 and XML has libxml2 (>= 2.6.3)
in their SystemRequirements fields.
{
"libxml2": {
"sysreqs": "libxml2",
"platforms": {
"DEB": "libxml2-dev",
"OSX/brew": null,
"RPM": "libxml2-devel"
}
}
}
Some notes:
sysreqs field can be a string or array, and its entries can be fixed
strings or regular expressions (when starting and ending with a forward slash, only JavaScript RegExp are supported. Example of a list sysreqs field, example of a sysreqs field with a regular expression.DEB based Linux
flavours (Debian, Ubuntu, etc.) packages that can be installed via the
host package manager are listed: DEB line example. For Windows, typically URLs that have
to be downloaded and installed: Windows lines example.null for OSX/brew means that nothing is needed, the system includes
the requirement(s) by default. Example.See API docs at https://sysreqs.r-hub.io/
Your contributions are welcome! More details below.
Please read about the data format first. Entries should be added or improved via pull requests.
If a package (of yours or not) has a dependency that's not listed here yet, open a pull request to add it. You don't need to have it mapped to all platforms yet. Example of such a PR.
You can also make a pull request to add a mapping to a platform. Example of such a PR.
If you maintain a public platform/tool using sysreqsdb, make a PR to this repo updating the section below. Please put your tool at the very end of the list.
The codemetar package, R package for the CodeMeta project, uses the sysreqs API to parse the SystemRequirements field.
The containerit package uses the sysreqs API to derive system requirements of packages for automatically creating a Dockerfile based on a collection of packages.
MIT © The R Consortium
Shell
80.6%
JavaScript
19.4%