This vignette collects answers to
common questions that come up when using sysreqr or, more
generally, when installing R packages from source on GNU/Linux.
sysreqr reports nothing
missingNot every install failure is caused by a missing system library. Other causes:
R.version.string.df -h and .libPaths().00LOCK-<name>
directory in your library path from a previous failed install. Remove
it.When in doubt, run setup_advice() to confirm the broader
checklist, then ask for help with the specific log.
sudo. What now?Use admin_request() to draft a message you can send to
your administrator:
The message lists the missing system packages, which R packages need them, and the exact install command. Many administrators appreciate having all of that in one place.
sysreqr differ from pak,
remotes, and renv?| Tool | Strengths | Limitations |
|---|---|---|
pak::pkg_sysreqs() |
Authoritative live resolver | Requires pak; no log diagnosis |
remotes::system_requirements() |
Light; widely available | No log diagnosis, no project scanner |
renv::sysreqs() |
Project-oriented; integrates with renv workflow |
Requires renv |
sysreqr |
Zero runtime deps; log diagnosis; beginner UX | Bundled DB is small; biased to apt |
sysreqr can use pak as one of its backends
(backend = "pak") when it is installed. The two tools are
complementary, not competitors.
When you run detect_platform() outside a
container, R sees the host operating system. When you run it
inside a container, R sees the container operating system. If
you are generating a Dockerfile from your laptop for a different base
image, always specify the platform argument explicitly:
See the Docker vignette for more detail.
The bundled database is refreshed with each package release. There is no runtime “update” function, because CRAN policy forbids packages from writing to their installed location.
If you need newer data than the latest release, use
backend = "ppm" for live Posit Package Manager data, or
backend = "pak" for live pak resolution.
sysreqr suggesting r-base-dev?r-base-dev is the Debian/Ubuntu package that contains
the development headers and Makefile fragments needed to compile R
packages from source. You only need it if you build R packages from
source (which is the default on Linux). setup_advice()
includes it in the build-tools step.
On Fedora/RHEL, the equivalent comes with the R package
itself. On openSUSE, the equivalent is R-base.
Alpine uses apk and is detected as alpine.
Install commands use apk add --no-cache. The bundled
fallback database currently uses Debian/Ubuntu names, so prefer the
ppm or pak backend on Alpine. Many common
system libraries on Alpine are in the community
repository.
Posit Package Manager queries use
utils::download.file(). Set the standard
http_proxy and https_proxy environment
variables before starting R, or configure them in your
.Renviron.
If outbound HTTP is blocked entirely, use
backend = "bundled" or backend = "pak" (pak
has its own download tooling and may already be configured for your
network).
high: direct evidence: a
missing-header or linker error pattern was matched in the log, or live
upstream metadata reported the requirement.medium: indirect evidence: a tool
failure (such as pkg-config not found) or a failed-package
lookup against the bundled fallback database.low: reserved for future, broader
heuristics.A medium-confidence result is still useful, but it is not proof. R version mismatches, locked libraries, and permission problems can all cause failed installs unrelated to system requirements.
sysreqr says the platform is unsupported but I want to
try anywayUse the platform argument with an explicit platform
string. If you supply backend = "ppm", the package will ask
Posit Package Manager which is authoritative.
If you are experimenting with an unknown platform, please open an
issue at https://github.com/choxos/sysreqR/issues with the
contents of /etc/os-release so support can be added
properly.
A small custom parser keeps the package free of runtime dependencies,
in line with its design goal. jsonlite would also work, but
it would add a dependency that the rest of the package does not need.
The parser is exercised by the test suite and handles unicode escapes,
nested arrays, and the JSON dialect used by Posit Package Manager and
renv.lock.
vignette("preflight-setup") for the preventive
workflow.vignette("diagnosing-failures") for log diagnosis.vignette("linux-fundamentals") for GNU/Linux
background.vignette("docker-and-ci") for container and CI
workflows.sysreqr reports nothing missingsudo. What now?sysreqr differ from pak, remotes,
and renv?sysreqr suggesting r-base-dev?sysreqr
says the platform is unsupported but I want to try anyway