Skip to content

pak::pkg_install() does not download manylinux binaries from P3M #883

Description

@AdaemmerP

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions