Skip to content

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

@AdaemmerP

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions