Skip to content

pak (development version)

  • pak now supports the configure_args and configure_vars configuration options. They default to the configure.args and configure.vars options, for compatibility with install.packages() (#788).

  • GitHub remotes now auto-detect an R package in a well-known subdirectory (pkg-r/, r/, or R/) when no subdir is given and there is no DESCRIPTION at the repository root. This lets multi-language repositories be installed without specifying subdir (#459).

  • pak now handles the case when a repository (typically Posit Package Manager) serves a source package instead of the requested binary (#891).

  • Better error messages for several dependency solver situations:

    • when requesting a package that is installed locally, but was removed from its repository (#895),
    • when requesting an older version (e.g. pkg@1.0.0) of a package that is no longer in the repository (#896),
    • when resolving downloads for a different platform (https://github.com/r-lib/pkgdepends/issues/462).
  • The dependency solver no longer silently keeps an installed package as the solution for a direct package reference that failed to resolve, e.g. a CRAN package that is not on CRAN but happens to be installed locally from another source. pak now reports the failure instead.

  • install_args is no longer overwritten when building packages. The --no-multiarch flag needed on some Windows configurations is now added to the existing install_args (https://github.com/r-lib/pkgdepends/issues/472).

  • Duplicate system requirement commands are now deduplicated (#888).

  • pak now behaves better when the package cache database is corrupt: it gives a better error message, and cleaning the cache no longer fails in this case (#884).

  • pak now handles PACKAGES files with Path and/or File fields correctly, and drops HTTP query parameters from these fields when constructing the target file name (https://github.com/r-lib/pkgcache/issues/141, @jeroen).

  • All HTTP requests now honor the pkgcache_http_version option and the PKGCACHE_HTTP_VERSION environment variable (https://github.com/r-lib/pkgcache/issues/140).

  • pak now retries failed HTTP requests by default, using an exponential backoff (and honoring the Retry-After header). Set the PKG_HTTP_RETRY environment variable or the pkg_http_retry option to FALSE to disable retries.

pak 0.10.0

CRAN release: 2026-06-07

  • pak now supports Posit Package Manager’s Sigle Sign-On authentication.

pak 0.9.5

CRAN release: 2026-04-27

  • Vector valued library path now works correctly in lockfile_create() (#864, #868).

  • pak now handles better PPM binaries on private PPM instances (#863).

pak 0.9.4

CRAN release: 2026-04-17

  • pak now works again with custom HTTPS certificates (#647, @tl-hbk).

pak 0.9.3

CRAN release: 2026-04-09

  • Setting use_bioconductor = FALSE (i.e. the PKG_USE_BIOCONDUCTOR env var, or the pkg.use_bioconductor option) now truly prevents any network contact with Bioconductor.

  • pak now supports macOS binaries on R 4.6.x and later.

  • pak can now consider installed packages in mutliple libraries, when installing packages. Pass a character vector of library path as the lib argument of pkg_install().

pak 0.9.2

CRAN release: 2025-12-22

  • No user visible changes.

pak 0.9.1

CRAN release: 2025-12-01

  • pak is now more tolerant with extraneous whitespace in PACKAGES* metadata files (https://github.com/r-lib/pak/issues/785).

  • pak now builds again on FreeBSD (#790).

  • Installing dependencies of a package file with deps::<filename> works again (#784).

  • pak now always uses the correct working directory in the subprocess; this was a common source of errors.

  • New (nightly) binary builds for aarch64 Windows.

  • We do not build binary builds for the release candidate of pak any more, only for stable and devel pak. rc is an alias to stable now.

pak 0.9.0

CRAN release: 2025-05-27

  • pak now supports HTTP basic authentication for CRAN-like repositories. See ‘Authenticated repositories’ in the reference manual.

  • New function scan_deps() to auto-detect package dependencies from R code. deps::. automatically uses detected dependencies now if no DESCRIPTION file is found.

  • The dependency solver now uses better heuristics, that works better (=faster) with multiple repositories with large overlaps (https://github.com/r-lib/pkgdepends/pull/392).

  • pak is now much better at detecting the correct Linux distribution when deciding about PPM and system requirements support.

  • pak now uses the use_bioconductor configuration option in meta_*() and repo_*() functions (#295, #726, @meztez).

pak 0.8.0.2

CRAN release: 2025-04-08

No changes.

pak 0.8.0.1

CRAN release: 2025-01-16

No changes.

pak 0.8.0

CRAN release: 2024-08-26

  • pkg_deps() now accepts a vector of package names.

  • The metadata cache now does not use source URLs for packages in Archive on Posit Package Manager repositories. This URLs may serve a different package, even a source package when the main URL for the same package serves a binary package. The alternative URLs are not needed on PPM, anyway, because PPM is in a consistent state w.r.t. metadata and package files (#623).

  • pak now supports gitlab:: package sources better, by adding explicit syntax to specify subdirectories (https://github.com/r-lib/pkgdepends/issues/353, @dgkf).

  • gitlab:: and git:: package sources now support git submodules if the git-submodules configuration option is set to TRUE. See ?"pak-config" (https://github.com/r-lib/pkgdepends/issues/354).

  • The new ?ignore-unavailable parameter makes it easy to ignore soft dependencies that are unavailable (#606).

  • pak now automatically ignores soft dependencies that have an incompatible OS type (OS_type entry in DESCRIPTION) when installing packages.

  • repo_add() and the ppm_*() functions, e.g. ppm_snapshots(), now work again after the PPM API changes (https://github.com/r-lib/pkgcache/issues/110, https://github.com/r-lib/pkgcache/issues/115).

pak 0.7.2

CRAN release: 2024-03-17

  • pak now supports using parameters for all packages with the *=?<param> form. E.g. *=?source installs all packages from source.

  • pak now supports R 4.4.0 again, and also Rtools44.

pak 0.7.1

CRAN release: 2023-12-10

  • pak can now handle the case when Config/Needs/* dependencies are requested for package from a repository.

  • pak uses safer *printf() format strings now.

pak 0.7.0

CRAN release: 2023-11-17

pak 0.6.0

CRAN release: 2023-08-29

pak 0.5.1

CRAN release: 2023-04-27

  • No user visible changes.

pak 0.5.0

CRAN release: 2023-04-20

  • The meta_*() functions now consider the platforms, cran_mirror and r_versions config entries, see ?"pak-config".

  • Better Posit Package Manager (PPM) support. New +ppm_has_binaries(), ppm_r_versions(), ppm_repo_url(), ppm_snapshots() and ppm_platforms() functions to help interacting with PPM. See the new ‘pkgcache and Posit Package Manager on Linux’ article at https://r-lib.github.io/pkgcache. (r-lib/pkgcache#47 and r-lib/pkgdepends#186).

  • New system_r_platform() and system_r_platform_data() functions to query the current platform.

  • pak now support git repositories as package references. E.g. git::https://github.com/r-lib/pak.git.

  • pak now supports versioned CRAN packages, e.g. dplyr@1.1.1 will always install dplyr 1.1.1. Note that only CRAN packages are supported, Bioconductor packages are not (yet).

  • pak now has an alternative system requirements lookup implementation. It supports Fedora and Debian systems as well, in addition to Debian, Ubuntu, SUSE and RedHat derivatives. You can switch to this implementation by setting the R_PKG_SYSREQS2 environment variable to true.

  • pak now does a better job looking up dependencies for hand-selected dependency types. E.g. dependencies = "LinkingTo".

  • pak now removes ?ignore-d packages from dependencies, and uses the correct version comparison for ?ignore-before.r (https://github.com/r-lib/actions/issues/708).

  • pak now does not fail for circular soft dependencies (#306).

  • pak now reports dependency solver failures better in some cases (#305, https://github.com/r-lib/pak/issues/474).

  • pak now uses locally built CRAN binaries from the cache. Use the ?nocache parameter to opt out from this, or cache_delete(package = ...) to remove a package from the cache.

pak 0.4.0

CRAN release: 2023-01-15

pak 0.3.1

CRAN release: 2022-09-08

  • The ?ignore parameter works correctly now.

  • Dependency resolution now does not fail if a package is not found.

  • pak can now install url:: remotes from GitHub.

  • pak now does not fail when the package of a .tar.gz GitHub snapshot is in a subdirectory, or in a subdirectory of a subdirectory.

  • pak now errors early if it cannot deduce the name of the package from a Remotes or Config/Needs/* entry.

  • Solver failures now include details in some cases where previously they did not.

  • pak can now update packages in Docker containers where the old version was installed in the different Docker later (#251)

  • pak errors are now user friendlier and better formatted.

  • pak now does not load tibble and its dependencies in the pak subprocess, so their dlls are not locked by the pak subprocess on Windows.

  • pak now does not fail when installing a package that uses a non-UTF-8 encoding on R 4.3.x and later (#404).

pak 0.3.0

CRAN release: 2022-04-11

  • pak functions that used to return tibbles return data frames now. While data frames and tibbles are very similar, they are not completely compatible. To convert the outputs of pak functions to tibbles call the tibble::as_tibble() function on them. If the pillar package is loaded, it improves the printing of the returned data frames.

    Relatedly, pak::pak_install_extra() installs pillar now, instead of tibble.

  • pak now supports file:// repositories.

  • pak now uses HTTP 1.1 to download packages on Linux, in addition to macOS. This fixes HTTP issues with some servers (#358).

  • New ?ignore-before-r parameter to ignore optional dependencies that need a newer R version (https://github.com/r-lib/pkgdepends/issues/243).

  • New ?ignore parameter to ignore an optional dependency.

  • Allow specifying downstream package parameters with the package=?param syntax.

  • lockfile_install() now works better for any:: refs, and pak always install the version it has planned for.

  • System requirement installation is now more robust and works for Unix shell expressions (#347).

  • CRAN-like resolution is more robust now if a repository is missing the usual metadata.

  • The lock file is pretty JSON now.

  • pak now handles all version requirement types properly: ‘<’, ‘<=’, ==, >=, >.

  • The dependency solver now uses better heuristics and does not (effectively) freeze if multiple repositories have multiple versions of the same packages (e.g. RSPM and CRAN) (https://github.com/r-lib/pkgdepends/pull/277)

pak 0.2.1

CRAN release: 2021-12-20

No user visible changes.

pak 0.2.0

CRAN release: 2021-12-01

Lots of news, too much to list. This is a completely new package now.

pak 0.1.2

CRAN release: 2019-02-19

First version on CRAN.