Posit Package Manager Offline Downloader Release Notes

Published

September 9, 2026

Please submit the Posit support form with questions about the described changes.

2026.09.0

September 09, 2026

New

  • #20184 Added ZIP and tar.gz downloads of the Windows and macOS offline downloader, for networks that block .exe files. Archives are also published for releases back to 2026.04.0. See Install the Offline Downloader.

Fixed

  • #20190 Widening a version constraint in a get pypi --file-in requirements file now downloads the versions it admits. A previous run’s narrower package index was reused, so the change had no effect.

  • #20190 Moving a get cran or get bioconductor --since date earlier now downloads the extra version history it admits. A previous run’s narrower package index was reused, so the change had no effect.

  • #20190 Adding a package to a get cran or get bioconductor --file-in requirements file now downloads it when the run repeats the same day. A previous run’s package index was reused, so the package was neither listed nor downloaded.

  • #20190 get pypi no longer advertises a Python file that has no SHA-256 digest upstream and so cannot be downloaded. Installing such a file failed.

  • #20190 validate pypi --packages now reads the package index and reports every Python file it advertises that the destination does not hold, and reports a failure rather than a warning. It previously checked only that each project had files, and always succeeded. See Downloading Data.

  • #20190 get pypi now rejects --starting-snapshot, as get cran and get bioconductor already do with --file-in. It built a package index listing snapshots the download did not contain. See Downloading Data.

  • #20036 Fixed an issue where get pypi --file-in ignored version constraints and downloaded every release of packages whose PyPI name is not lowercase and hyphenated, such as Flask.

  • #19426 The Air-Gapped Package Manager guide now states that a download made with --starting-snapshot or --skip-source is not a repository on its own. Verify it after copying it into the offline data directory. Open VSX’s extensions.txt must also list every extension you want served.

  • #19257 get pypi now verifies and retries its checkpoint download, so a truncated download no longer yields an incomplete repository.

2026.08.0

August 10, 2026

New

  • #19421 get cran and get bioconductor now accept a --since=YYYY-MM-DD flag that limits how much version history is downloaded, which is the largest factor in the size of a mirror. It applies to a full mirror and, with --file-in, to a chosen set of packages. The date is the mirror’s retention start: choose it once when you first build the mirror and pass the same date on every run, so each run keeps everything the previous run kept plus whatever is new. The window keeps the versions that were current on or after that date; versions already archived before it are not downloaded, which is where most of the size reduction comes from. No package is dropped entirely: a package with no release on or after the date still gets its most recent earlier version, so it remains installable. --since can also be set in the requirements file, and a flag on the command line overrides the file. It is separate from --starting-snapshot and --ending-snapshot, which limit what a single run downloads rather than how much history the mirror keeps, and the two work together: use the same --since date on every run and add --starting-snapshot to download only the files added since your last transfer. Without --since, the complete version history is downloaded as before.

  • #19421 --starting-snapshot can no longer be combined with --file-in. --starting-snapshot downloads only the files dated on or after the date you give, on the assumption that the machine you copy the data to already holds everything older. That assumption does not hold when you select packages by name, because the set of packages you want can grow: you add a package whose versions all predate the date, or an updated package gains a new dependency whose versions predate the date, which happens without any change to your requirements file. In both cases the package index listed the package but the download did not contain it, so installing it failed. Run --file-in downloads without --starting-snapshot; a --file-in download is much smaller than a full mirror, so a complete run is inexpensive.

  • #18526 #19337 get cran and get bioconductor now accept a --file-in requirements file and download the listed packages together with all of their dependencies, so you can mirror a specific set of R packages instead of an entire repository. The subset includes each package’s full version history. Each requirements-file entry’s dependency types are honored for that package: pkg[none] downloads only that package, and pkg[depends] follows only its Depends, while the packages they pull in are always followed through their required dependencies so that everything downloaded can be installed. If a requested package is no longer available in the repository, it is still downloaded, but a warning reports that its dependencies could not be determined and may need to be listed in the requirements file.

  • #18373 get bioconductor now accepts --include-binaries, --distributions, --architectures, and --r-versions to mirror Bioconductor binary packages, and validate bioconductor reports how many of each platform’s binaries are present. Each Bioconductor version pins a single R version, so those R versions are derived automatically; --r-versions narrows which of them are downloaded, and any Bioconductor version pinning a different R version is reported and skipped. Binaries are available for the main Bioconductor software repository. Mirror Bioconductor and CRAN binaries into the same destination directory, because Package Manager serves both from one location.

Fixed

  • #19426 The Air-Gapped Installations guide now states that a --file-in requirements file is the complete list of what the repository serves, not a list of packages to add. Every download rebuilds the package index to match the file, so downloading with a file that lists only a newly added package produces an index that lists only that package, and copying it into the destination directory replaces the index that listed the others. The files of the omitted packages are not deleted, so restoring the full requirements file and downloading again recovers the index without re-transferring them. This applies to CRAN, Bioconductor, Python, and Open VSX.

  • #19463 The Air-Gapped Installations guide now states that a download made with --starting-snapshot is not a working repository on its own and must not be served or tested by itself. Such a download contains only the files added since the date given, but its package index still lists every package in the repository, so the repository looks complete while most installs fail. Verify an incremental download only after copying it into the destination directory that already holds the older files.

  • #19356 The --skip-source flag on get cran now works. It was accepted but had no effect, so a download that specified it still retrieved every source package. Source packages are now skipped as documented, while the manifest, its metadata, and the binaries are still downloaded.

  • #19355 get cran --include-binaries now saves the binary index in the format Package Manager reads. Previously it saved an older format, so an air-gapped server found no index for the downloaded binaries and served every package from source instead. Re-run get cran --include-binaries to add the correct index to an existing dataset. Downloads that used --file-in were not affected.

  • #19137 get pypi now preserves each package’s release date and license information from the source manifest, so air-gapped servers show the same values as connected ones.

  • #19364 get pypi now preserves each package’s per-version dependency information from the source manifest, so an air-gapped server shows the dependencies for every release of a Python package, matching a connected one. Re-run get pypi to add this information to an existing dataset.

2026.06.0

June 30, 2026

This release includes no changes to the Offline Downloader.

2026.05.0

May 29, 2026

This release includes no changes to the Offline Downloader.

2026.04.2

May 07, 2026

This release includes no changes to the Offline Downloader.

2026.04.1

April 17, 2026

This release includes no changes to the Offline Downloader.

2026.04.0

April 09, 2026

New

  • #17363 Open VSX extensions can now be downloaded using the new get openvsx command. Download all extensions or specify a curated subset using an extensions.txt file, and optionally filter by target platform. The downloader resolves dependencies automatically. See the Air-Gapped Package Manager documentation for instructions on how to set up an offline Open VSX repository.

2025.12.0

December 23, 2025

New

  • #16390 The offline downloader can now be installed for the ARM64 architecture on Linux.

2025.09.2

November 3, 2025

This release includes no changes to the Offline Downloader.

2025.09.0

September 10, 2025

New

  • #15652 Adds support for ARM64 Linux binary packages. ARM64 Linux binaries will be downloaded by default unless the --architectures flag is specified, so set --architectures=x86_64 to limit downloads to only the x86_64 architecture if you are not using ARM64.

2025.04.4

July 07, 2025

This release includes no changes to the Offline Downloader.

2025.04.2

May 30, 2025

This release includes no changes to the Offline Downloader.

2025.04.0

April 10, 2025

This release includes no changes to the Offline Downloader.

2024.11.0

December 4, 2024

New

  • #14528 Adds support for filtering Python package versions specified in the requirements.txt file.

2024.08.2

September 20, 2024

This release includes no changes to the Offline Downloader.

2024.08.0

August 9, 2024

Breaking

  • Air-gapped customers are required to redownload the Bioconductor data after upgrading before syncing the Bioconductor source. See the Admin Guide for more information.

2024.04.4

June 26, 2024

This release includes no changes to the Offline Downloader.

2024.04.2

June 14, 2024

Breaking

  • Air-gapped customers are required to redownload the CRAN data after upgrading before syncing the CRAN source. See the Admin Guide for more information.

  • The offline downloader version must now correspond with the Package Manager version.

New

  • #12841 PyPI packages can now be downloaded using the new get pypi command. See the Air-Gapped Package Manager documentation for instructions on how to set up an offline PyPI repository.

  • #11105 Concurrent downloaders up to the --concurrency setting will automatically be spawned based on network and hardware factors. The default is now 500.

  • #11105 Allow higher concurrent downloads on rspm-offline-downloader get bioconductor.

2023.12.0

December 18, 2023

New

  • The Offline Downloader now supports downloading vulnerabilities.

2023.08.4

October 30, 2023

This release includes no changes to the Offline Downloader.

2023.08.2

October 19, 2023

This release includes no changes to the Offline Downloader.

2023.08.0

September 12, 2023

Breaking

  • The --linux-distros and --windows flags are deprecated in favor of --distributions. Use get cran --distributions=macos --architectures=x86_64 to only download x86_64 binaries for macOS, and exclude arm64. Use get cran --distributions=windows to download binaries for Windows.

New

  • Adds the ability to specify architecture to download binaries for.

2023.04.0

April 28, 2023

This release includes no changes to the Offline Downloader.

2022.11.4

December 05, 2022

This release includes no changes to the Offline Downloader.

2022.11.2

November 18, 2022

This release includes no changes to the Offline Downloader.

2022.11.0

November 14, 2022

Fixed

  • #8088 The Offline Downloader now supports downloading binary packages for R versions that have reached end of support.

  • #9197 The Offline Downloader no longer fails when downloading binary packages for deprecated R versions and distributions without binary packages.

2022.07.2

August 2, 2022

New

  • Introduce new standalone NEWS page to capture changes to the RSPM Offline Downloader.

Fixed

  • #6454 The Offline Downloader now supports downloading binary packages for newly released R versions and operating systems without requiring an upgrade of the tool.

  • #5271 The general performance of the Offline Downloader’s get cran command has been improved.

Back to top