The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
courieR syncs installed R packages between R versions on the same machine — migrate from old to new, keep multiple versions in parity, or selectively copy packages in either direction. No manual reinstalling, no lost libraries.
Install from GitHub (CRAN submission pending):
# install.packages("remotes")
remotes::install_github("lennon-li/courieR")library(courieR)
open_hub() # launches the Shiny dashboardThe dashboard detects all R installations on your machine, displays them in a header bar, and lets you compare and sync packages between any two.
courieR detects every R installation on your system, scans their package libraries, and lets you push packages between them — one-way or bidirectionally — using pak under the hood.
R 4.4.1 ──▶ compare() ──▶ missing / outdated packages found
──▶ ship() installs or upgrades into target R
find_routes() searches multiple sources per platform so
it finds installs regardless of whether admin rights were used:
| Platform | Sources searched |
|---|---|
| Windows | HKLM registry (admin installs), HKCU registry (non-admin installs),
%ProgramFiles%\R, %LOCALAPPDATA%\Programs\R,
%USERPROFILE%\Documents\R, rig-managed versions |
| macOS | System R framework (/Library/Frameworks), user
framework (~/Library/Frameworks), Homebrew
(/opt/homebrew, /usr/local), rig-managed
versions |
| Linux | /opt/R (rig system), ~/.local/share/rig/R
(rig user), conda environments, custom paths |
| Function | What it does |
|---|---|
open_hub() |
Launch the Shiny dashboard |
find_routes() |
Detect all R installations on the system |
manifest() |
List packages installed in an R version |
inventory() |
Compare two package libraries |
ship() |
Copy packages from one R to another (CLI) |
The Sync tab is the main workflow:
Prefer scripting? Use ship() directly:
library(courieR)
routes <- find_routes()
print(routes[, c("version", "rscript_path")])
# dry run first
result <- ship(
source_path = routes$rscript_path[1],
target_path = routes$rscript_path[2],
dry_run = TRUE
)
print(result$plan)
# for real (upgrade = TRUE ensures outdated packages are also updated)
result <- ship(
source_path = routes$rscript_path[1],
target_path = routes$rscript_path[2],
upgrade = TRUE
)These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.