Skip to content

Install Quarto from the Posit Open apt repo in workbench-session#78

Merged
ianpittwood merged 1 commit intomainfrom
quarto-via-apt
May 4, 2026
Merged

Install Quarto from the Posit Open apt repo in workbench-session#78
ianpittwood merged 1 commit intomainfrom
quarto-via-apt

Conversation

@bschwedler
Copy link
Copy Markdown
Contributor

@bschwedler bschwedler commented Apr 22, 2026

Summary

Switch workbench-session to install Quarto via apt-get install quarto={version} from the Posit Open apt repository, using the updated quarto.install() macro from posit-dev/images-shared.

Requires posit-dev/images-shared#479.

Why

  • Avoids ${TARGETARCH} URL construction. Posit publishes quarto as a multi-arch deb (amd64 + arm64) on both jammy and noble.
  • dpkg owns the install, so goss package.quarto.versions assertions work directly without path-based proxies.
  • No tarball extraction.

Changes

The quarto deb installs to a flat /opt/quarto/ directory (binary at /opt/quarto/bin/quarto) and symlinks /usr/local/bin/quarto via its postinst script. Downstream consequences in this repo:

  • Drop the redundant quarto.symlink_binary(...) call in workbench-session/template/Containerfile.ubuntu*.jinja2 — the deb's postinst already creates the /usr/local/bin/quarto symlink.
  • Install xz-utils explicitly in the TinyTeX RUN; it is needed to unpack the TinyTeX .tar.xz archive and was previously pulled in transitively by the tarball install.
  • Update goss path check from /opt/quarto/{version} to /opt/quarto/bin/quarto and add a package.quarto.versions check (now possible because the install is dpkg-tracked).

Not affected

workbench (as distinct from workbench-session) bundles Quarto with rstudio-server and uses quarto.install_tinytex_command(...) against that bundled binary. That flow is unchanged.

Test plan

  • CI builds the workbench-session matrix (Ubuntu 22.04 / 24.04 × R × Python combinations)
  • goss tests pass for all matrix combinations

bschwedler added a commit that referenced this pull request Apr 22, 2026
`quarto install tinytex` installs to \$HOME/.TinyTeX by default; during
a Docker build that is /root/.TinyTeX, which is unreadable for the
runtime user in Workbench and Workbench Session images. Pass
`HOME="/opt"` so the install lands at /opt/.TinyTeX instead, matching
the pattern used in rstudio-docker-products. `--update-path` causes
tlmgr to symlink the TinyTeX binaries into /usr/local/bin so they are
on PATH.

Covers both the `workbench` image (TinyTeX installed against the
bundled rstudio-server Quarto) and `workbench-session` (TinyTeX
installed against the apt-installed Quarto from PR #78).

Tracks:
- posit-dev/images-shared#477
- quarto-dev/quarto-cli#11800
  (upstream; once resolved the HOME override can be dropped)
bschwedler added a commit that referenced this pull request Apr 28, 2026
`quarto install tinytex` installs to \$HOME/.TinyTeX by default; during
a Docker build that is /root/.TinyTeX, which is unreadable for the
runtime user in Workbench and Workbench Session images. Pass
`HOME="/opt"` so the install lands at /opt/.TinyTeX instead, matching
the pattern used in rstudio-docker-products. `--update-path` causes
tlmgr to symlink the TinyTeX binaries into /usr/local/bin so they are
on PATH.

Covers both the `workbench` image (TinyTeX installed against the
bundled rstudio-server Quarto) and `workbench-session` (TinyTeX
installed against the apt-installed Quarto from PR #78).

Tracks:
- posit-dev/images-shared#477
- quarto-dev/quarto-cli#11800
  (upstream; once resolved the HOME override can be dropped)
bschwedler added a commit that referenced this pull request Apr 28, 2026
`quarto install tinytex` installs to \$HOME/.TinyTeX by default; during
a Docker build that is /root/.TinyTeX, which is unreadable for the
runtime user in Workbench and Workbench Session images. Pass
`HOME="/opt"` so the install lands at /opt/.TinyTeX instead, matching
the pattern used in rstudio-docker-products. `--update-path` causes
tlmgr to symlink the TinyTeX binaries into /usr/local/bin so they are
on PATH.

Covers both the `workbench` image (TinyTeX installed against the
bundled rstudio-server Quarto) and `workbench-session` (TinyTeX
installed against the apt-installed Quarto from PR #78).

Tracks:
- posit-dev/images-shared#477
- quarto-dev/quarto-cli#11800
  (upstream; once resolved the HOME override can be dropped)
bschwedler added a commit that referenced this pull request Apr 30, 2026
`quarto install tinytex` installs to \$HOME/.TinyTeX by default; during
a Docker build that is /root/.TinyTeX, which is unreadable for the
runtime user in Workbench and Workbench Session images. Pass
`HOME="/opt"` so the install lands at /opt/.TinyTeX instead, matching
the pattern used in rstudio-docker-products. `--update-path` causes
tlmgr to symlink the TinyTeX binaries into /usr/local/bin so they are
on PATH.

Covers both the `workbench` image (TinyTeX installed against the
bundled rstudio-server Quarto) and `workbench-session` (TinyTeX
installed against the apt-installed Quarto from PR #78).

Tracks:
- posit-dev/images-shared#477
- quarto-dev/quarto-cli#11800
  (upstream; once resolved the HOME override can be dropped)
@bschwedler bschwedler force-pushed the quarto-via-apt branch 4 times, most recently from fdca8c0 to c65e294 Compare April 30, 2026 18:04
Migrate workbench-session Quarto installation from GitHub tarball
to the Posit Open apt repository. TinyTeX is installed under
HOME="/opt" so non-root users can access it, and quarto is pinned
with apt-mark hold. Goss tests updated to verify the package hold,
TinyTeX placement, and use quarto.get_directory() for paths.
@ianpittwood ianpittwood merged commit bc4ad7b into main May 4, 2026
58 checks passed
@ianpittwood ianpittwood deleted the quarto-via-apt branch May 4, 2026 15:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants