Description
In our multi-stage Docker builds, we require a binary-only installation where packages are exclusively pulled from a manylinux URL.
Standard install.packages() works perfectly and downloads the pre-compiled binaries. However, pak::pkg_install() treats the repository strictly as a source repository, forcing full local compilations.
pak::meta_list()[["sources"]] reveals that pak appends /src/contrib/ to the manylinux path instead of parsing it as a binary layout:
[[1]]
[1] "https://packagemanager.posit.co/cran/__linux__/manylinux_2_28/2026-06-01/src/contrib/data.table_1.15.4.tar.gz"
This classification failure could be a regression/side effect of the broader regular expression changes introduced in v0.9.5 (#863). The internal URL classification patterns (such as pkgcache:::is_ppm_linux_repo_url()) do not recognize the manylinux_2_28 distribution string as a valid PPM binary architecture tag, causing pak to fall back to a source mapping strategy.
Steps to Reproduce
options(
repos = c(
P3M_MANYLINUX = "https://packagemanager.posit.co/cran/__linux__/manylinux_2_28/2026-06-01"
)
)
# Under the hood, this resolves to /src/contrib/ and triggers a source build:
pak::meta_list("data.table")[["sources"]]
# Fails to pull pre-compiled binary:
pak::pkg_install("data.table")
Description
In our multi-stage Docker builds, we require a binary-only installation where packages are exclusively pulled from a
manylinuxURL.Standard
install.packages()works perfectly and downloads the pre-compiled binaries. However,pak::pkg_install()treats the repository strictly as a source repository, forcing full local compilations.pak::meta_list()[["sources"]]reveals thatpakappends/src/contrib/to themanylinuxpath instead of parsing it as a binary layout:This classification failure could be a regression/side effect of the broader regular expression changes introduced in v0.9.5 (#863). The internal URL classification patterns (such as
pkgcache:::is_ppm_linux_repo_url()) do not recognize themanylinux_2_28distribution string as a valid PPM binary architecture tag, causingpakto fall back to a source mapping strategy.Steps to Reproduce