Reliable package management for R

Create, reproduce, and update R project environments from standard package metadata. rpx manages the environment; rrepo provides complete CRAN history and private package repositories.

curl -LsSf https://rrepo.org/rpx/latest/rpx-installer.sh | sh

More package versions, more compatible combinations.

CRAN exposes a compatible set of packages at each point in time. rrepo brings the versions behind those snapshots into one complete list, so rpx can check which combination fits your project.

Project needs

rlang = 1.0.1
testthat ≥ 3.0.0

rlang versions

rlang 1.1.7

rlang 1.0.1

Selected

rlang 0.9.13

testthat versions

testthat 3.2.2

needs rlang ≥ 1.1.6

testthat 3.1.7

needs rlang ≥ 1.0.1

Compatible solution

testthat 3.0.1

needs rlang ≥ 0.9.13

Illustrative version constraints: rlang 1.0.1 pairs with testthat 3.1.7. A newer candidate needs a different rlang version, so the resolver selects a compatible combination.

Upgrade individual packages, not your whole environment.

Add or update one dependency. rpx changes only packages that are no longer compatible and keeps everything else in place.

  1. 01

    Keep compatible packages in place

    Only packages that block compatibility are changed.

  2. 02

    See exactly what changed

    DESCRIPTION and the lockfile stay in sync.

rpx add rlang@==1.0.12 files changed
DESCRIPTION+1
Added: rlang (== 1.0.1)
rpx.lock+2 −2
Removed: rlang 1.1.7
Added: rlang 1.0.1
Removed: testthat 3.2.2
Added: testthat 3.1.7
··· 5 packages unchangedOnly incompatible packages moved

Share your packages privately.

Bring packages from rrepo, CRAN, Git, and your private registry into one project without changing how R installs packages.

rrepo

Every CRAN version with complete package metadata.

CRAN

Available versions

Private rrepo

Team packages + auth

Git

Remote ref

rpx
Compatible set

Recorded in the lockfile.

rpx combines enabled sources into one compatible environment. It can only choose versions made available by an enabled source.

R-native metadata, from development to publishing.

Declare dependencies in DESCRIPTION, the standard R format. Keep a lockfile for development without replacing publish-ready metadata.

  1. 01

    Publishable by default

    DESCRIPTION remains valid for R CMD build and standard package tooling.

  2. 02

    Exact during development

    rpx.lock records exact installed versions without replacing publish-ready metadata.

DESCRIPTIONR package format
Package: analysis.tools
Version: 0.4.0
 
Imports: 
    rlang (< 2.0.0),
    rlang (>= 1.0.1),
    testthat (< 4.0.0),
    testthat (>= 3.1.7)
Each dependency receives a lower and next-major upper bound. Exact installed versions are recorded in rpx.lock.

Frequently asked questions

Answers to common questions about plans, private repositories, and getting started with rrepo.

Private packages, without changing how your team works in R.

Start self-serve. Upgrade when your team needs more.

  1. Create registry
  2. Add packages
  3. Install with rpx