Favicon Logo

📣️ New: CRAN R package binaries for arm64 and Alpine Linux

CRAN R Packages for Linux - 2.0

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/.

Save costs

arm64 instances are 20% - 50% cheaper than their amd64 counterparts.

Increase Performance

Many arm64 CPUs (Ampera Altra, AWS Graviton) outperform comparable amd64 CPUs in popular benchmarks.

For your OS & Version

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

For the community - and your business

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.

Performance

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.)

FAQ

Why is there a bandwidth cap?

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.

What do you mean by 'getting an individual mirror'?

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.

How quickly are new package versions on CRAN being made available?

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.

Do the repositories work with remotes::install_version() and pak::pak(package@version)?

Yes, support for both of these custom package installation functions is available.

What are possible use cases?

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.

Do compatible container images exist?

Yes. devXY provides container images making use of these repos by default, for both architectures amd64 and arm64 as well as Alpine ones. r-alpine and r-ubuntu.

Where can I find more information?

All repositories behind this service are available at devxy/r-package-binaries and provide detailed technical information.