sysreqr 0.1.0
First public release.
Preflight checks
-
check_packages()resolves the system packages an R package needs on a given Linux platform. Four backends are available:"auto"(default),"bundled","ppm", and"pak". -
check_library()audits installed packages in an R library path. -
check_project()anddetect_project_packages()scan a project directory, preferringrenv.lock, thenDESCRIPTION, then source files.
Platform handling
-
detect_platform()reads/etc/os-releaseon Linux,sw_verson macOS, and parses fixture files for tests. -
detect_package_manager()returns the package manager for a platform (apt,dnf,yum,zypper,apk,brew). -
resolve_platform()acceptsNULL, an existing platform object,<distro>-<version>shorthand, or a codename alias (jammy,noble,resolute,bookworm,trixie).
Commands and outputs
-
install_command()generates platform-appropriate install commands. -
dockerfile()andwrite_dockerfile_snippet()produce Dockerfile snippets. -
github_actions()(aliasgha()) produces a GitHub Actions YAML step. -
admin_request()drafts a plain-text request for system administrators. -
write_install_script()writes a POSIX shell script. -
write_report()andwrite_json()persist a plan to disk. -
as_install_plan()returns a structured list suitable for downstream tooling.
Diagnostics
-
diagnose_log()(aliasdiagnose_install_log()) matches common compiler and linker error patterns and resolves failed package names back to system requirements. -
check_error()is a convenience wrapper that readsgeterrmessage(). -
diagnose_failed_packages()resolves a known list of failed R packages.
Posit Package Manager
-
ppm_platforms(),check_ppm(),ppm_repo(),ppm_sysreqs(), anduse_ppm()integrate with the Posit Package Manager API and binary repository URLs.
Setup guidance
-
setup_advice()produces a practical, beginner-friendly Linux setup checklist with optional shell-script output. -
explain()prints a friendly per-package explanation.
Documentation
- Five HTML vignettes: preflight setup, diagnosing failures, GNU/Linux fundamentals (for newcomers to Linux), Docker and CI workflows, and an FAQ.
- Every exported function has a runnable example.
- Reference index grouped by topic on the pkgdown site.
Correctness and portability
- Bundled system-package names are now portable across Debian and Ubuntu:
default-libmysqlclient-dev(waslibmysqlclient-dev, which does not exist on Debian),libgsl-dev(waslibgsl0-dev), andlibfreetype-dev(waslibfreetype6-dev). -
detect_project_packages()now detectsrequireNamespace()calls and ignores package names that appear only in line comments. -
setup_advice()generates Debian repository setup using the modern deb822Signed-Bykeyring format (matching CRAN’s current Debian instructions), drops a no-op Fedorarepoqueryline, and presents the Fedora COPR step as optional. - Added AlmaLinux 9 and 10 as known platforms so
ppm_repo()andcheck_ppm()work for them. - The internal JSON parser now rejects unescaped control characters, per the JSON specification.
Design notes
-
sysreqrhas zero required dependencies: noImports, noDependsbeyond base R. TheSuggestsfield liststestthat,knitr,rmarkdown, andwithr, used only for tests and vignette building; none of them are loaded at run time. - Optional live backends can use Posit Package Manager (over HTTPS) and
pak::pkg_sysreqs(), both of which are detected at run time and never required. - The package ships a static bundled database of system requirements for common CRAN packages. The database is refreshed with each release. Use
backend = "ppm"orbackend = "pak"when newer live metadata is needed.
