By using a CRAN-like repository containing R package binaries for Linux (including the arm64 architecture and Alpine Linux). devXY repositories provide the most comprehensive coverage for R package binaries on Linux and are the only ones providing binaries for Alpine Linux.
Build metadata statistics can be found on the R package binary dashboard, where you can check the availability of binaries for your OS, package, and architecture.
A comprehensive documentation can be found at https://docs.r-package-binaries.devxy.io/.
arm64 instances are 20% - 50% cheaper than their amd64 counterparts.
Many arm64 CPUs (Ampera Altra, AWS Graviton) outperform comparable amd64 CPUs in popular benchmarks.
Support for Ubuntu (22.04 & 24.04), RHEL (8 & 9) and OpenSuse.
Try it out!
# replace the OS identifier 'noble' (Ubuntu 24.04) if your OS is different
options(repos = structure(c(CRAN = "https://cran.devxy.io/arm64/noble/latest")))
install.packages("<package>")
# or try with docker
docker run --rm -it devxygmbh/r-alpine R -q -e 'install.packages(<package>)'
docker run --rm -it devxygmbh/r-ubuntu R -q -e 'install.packages(<package>)'
Posit Package Manager provides R package binaries for the amd64 architecture (excluding Alpine
Linux). CRAN is publishing R package binaries for macOS to support the arm-based
M* chipset hardware.
R package binaries for the arm64 architecture and
Alpine Linux (including amd64) have been missing so far - until now!
Package binaries for Alpine enable enhanced CI/CD workflows for R projects. These images are substantially smaller in size and runtime efficiency (due to recent toolchain libraries), allowing for improved software checks.
Available R package binaries from devXY
Linux Distribution | amd64 | arm64 | Identifier |
---|---|---|---|
Alpine 3.21 | ✅️️ | ✅️️ | alpine321 |
Alpine 3.20 | ✅️️ | ✅️️ | alpine320 |
RHEL 8 | ️️✅️ | ✅️️ | rhel8 |
RHEL 9 | ✅️ | ✅️️ | rhel9 |
Ubuntu 22.04 | ✅️ | ✅️️ | jammy |
Ubuntu 24.04 | ✅️ | ✅️️ | noble |
Binaries are provided free of charge to individuals and non-profit organizations with a monthly bandwidth limit of 50 TB.
The project is developed in the open on GitLab - contributions are welcome!
For-profit organizations can obtain their own individual mirror for usage - please reach out if you are interested.
All packages are distributed through a global Content Delivery Network
(CDN), ensuring minimal latency and optimal performance during downloads.
In addition to the worldwide CDN edge locations, dedicated static caches
are available in Europe (Germany), the US (Los Angeles), and Asia
(Singapore).
curl
benchmark comparing Posit Package Manager and devXY CRAN
# define `curl` format settings
echo -e "
time_namelookup: %{time_namelookup}s\n
time_connect: %{time_connect}s\n
time_appconnect: %{time_appconnect}s\n
time_pretransfer: %{time_pretransfer}s\n
time_redirect: %{time_redirect}s\n
time_starttransfer: %{time_starttransfer}s\n
----------\n
time_total: %{time_total}s\n
" > curl-format.txt
# tested on a server in Switzerland
curl -w "@curl-format.txt" -o /dev/null \
-s "https://packagemanager.posit.co/cran/__linux__/rhel9/latest/brew_1.0-10.tar.gz"
curl -w "@curl-format.txt" -o /dev/null \
-s -O "https://cran.devxy.io/arm64/rhel9/latest/src/contrib/brew_1.0-10.tar.gz"
# Posit Package Manager
time_namelookup: 0.009141s
time_connect: 0.130860s
time_appconnect: 0.382310s
time_pretransfer: 0.382722s
time_redirect: 0.000000s
time_starttransfer: 0.505626s
----------
time_total: 0.505885s
# devXY CRAN
time_namelookup: 0.003021s
time_connect: 0.009213s
time_appconnect: 0.018338s
time_pretransfer: 0.018439s
time_redirect: 0.000000s
time_starttransfer: 0.025136s
----------
time_total: 0.025260s
Downloading packages from devXY is
~ 5- 20 times* faster than from other public repositories. While the absolute
differences in speed do not have a substantial effect when downloading
a few packages in interactive sessions, it adds up when downloading multiple
packages repetitively, e.g. in CI/CD environments.
(*Results might differ depending on the location of the request,
although the overall speedup should roughly be the same worldwide.)
Offering package downloads at a professional level comes with substantial costs. To prevent misuse and help the product gain a foothold in the R community, the free version has to be limited, at least for the start.
A personal mirror is a unique URL that is not publicly advertised and/or explicitly requires authentication. It has no bandwidth limits and can optionally be restricted to specific IPs, ensuring safe and secure usage within corporate environments.
Package processing is delayed by three days compared to the latest CRAN activities. This delay is necessary to allow time for the information about recently updated packages on CRAN to become publicly available.
remotes::install_version()
and pak::pak(package@version)
? Yes, support for both of these custom package installation functions is available.
Package binaries for arm64 enable the use of R workloads and Posit environments on servers with this architecture. These servers are often significantly cheaper than amd64 ones, leading to cost savings. Additionally, Alpine-based container images can be used for optimized CI/CD tests, saving bandwidth and developer time, regardless of the architecture.
All repositories behind this service are available at devxy/r-package-binaries and provide detailed technical information.