Self-contained (manylinux) tool installs for images whose payload gets
copied or mounted apart from the OS that built it.
Background
#577 adds install_manylinux() /
run_install_manylinux() to r.j2, downloading the self-contained R
tarball from cdn.posit.co/r/manylinux_2_34/ instead of the deb/RPM
package. It was originally written as a workaround for the RHEL 10 (UBI)
flexiblas-devel blocker (#575), but that blocker
is already fixed upstream (rstudio/r-builds#329, merged) and doesn't need
this workaround — posit-dev/images-package-manager#104 (the RHEL 10
consumer of these macros) has been closed accordingly.
The macros are still worth having for an unrelated reason: manylinux
tarballs bundle their own non-glibc runtime dependencies and only require
a minimum glibc version, which makes them safe to copy alone into a
scratch image — unlike a deb/RPM install, which dynamically links
against system libraries that live in the builder OS and are lost when
only /opt/<tool> is copied out. This matters concretely for
posit-dev/images-volumes, whose images are built FROM scratch and
mounted as Kubernetes image volumes into arbitrary other containers.
Goals
- Land the
r.j2 manylinux macros on their own merits (not tied to the
RHEL 10 epic)
- Switch
images-volumes' r image to the manylinux tarball install
- Add a runtime-portability check to
images-volumes CI that catches this
class of bug for all images in that repo (not just r), by executing
each image's payload inside an unrelated, minimal container rather than
inside its own builder stage
- Resolve the equivalent gap found in
images-volumes' quarto image:
TinyTeX ships several Perl-script tools (tlmgr, latexmk, etc.) that
require the full perl package, not just perl-base, which most
minimal target containers only provide
Child issues
Related
Self-contained (manylinux) tool installs for images whose payload gets
copied or mounted apart from the OS that built it.
Background
#577 adds
install_manylinux()/run_install_manylinux()tor.j2, downloading the self-contained Rtarball from
cdn.posit.co/r/manylinux_2_34/instead of the deb/RPMpackage. It was originally written as a workaround for the RHEL 10 (UBI)
flexiblas-develblocker (#575), but that blockeris already fixed upstream (rstudio/r-builds#329, merged) and doesn't need
this workaround — posit-dev/images-package-manager#104 (the RHEL 10
consumer of these macros) has been closed accordingly.
The macros are still worth having for an unrelated reason:
manylinuxtarballs bundle their own non-glibc runtime dependencies and only require
a minimum glibc version, which makes them safe to copy alone into a
scratchimage — unlike a deb/RPM install, which dynamically linksagainst system libraries that live in the builder OS and are lost when
only
/opt/<tool>is copied out. This matters concretely forposit-dev/images-volumes, whose images are built
FROM scratchandmounted as Kubernetes image volumes into arbitrary other containers.
Goals
r.j2manylinux macros on their own merits (not tied to theRHEL 10 epic)
images-volumes'rimage to the manylinux tarball installimages-volumesCI that catches thisclass of bug for all images in that repo (not just
r), by executingeach image's payload inside an unrelated, minimal container rather than
inside its own builder stage
images-volumes'quartoimage:TinyTeX ships several Perl-script tools (
tlmgr,latexmk, etc.) thatrequire the full
perlpackage, not justperl-base, which mostminimal target containers only provide
Child issues
Related
https://github.com/posit-dev/images-volumes/pull/5
feat(r.j2): add manylinux R tarball install macros for self-contained R #577
feat: install R via manylinux_2_34 tarball on RHEL 10 images-package-manager#104
2026.10: 🏗️ RHEL 10 (UBI) image support #575