NVIDIA / NVIDIA/OpenShell

install-dev.sh: support ostree-based distros (Silverblue, Universal Blue)

Open
#1,266 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area:build os:linux state:pr-opened state:stale topic:compatibility
Dominant language
Rust
Stars
8.7k
Forks
1.3k
Avg merge
2d 11h
Merged PRs (30d)
253

Description

Problem

The install-dev.sh installer does not work on ostree-based Linux distributions such as Fedora Silverblue, Universal Blue (Bazzite, Aurora, Bluefin), and Fedora CoreOS.

On these systems /usr is an immutable ostree deployment. The install_rpm_packages() function calls dnf install -y (or yum/zypper/rpm -Uvh), which fails because it cannot write to the read-only filesystem. The correct tool is rpm-ostree install, which layers the package into a new deployment that takes effect after reboot.

This also means the script's assumption that the gateway systemd unit is immediately available after package installation does not hold — start_user_gateway() runs before the new deployment is booted.

Reproduction

# On Fedora Silverblue 42 / Universal Blue
curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh \
  | OPENSHELL_VERSION=dev sh

The openshell CLI binary gets installed (possibly via the shell profile installer path), but the gateway sub-package and its systemd user unit are not installed. Running openshell gateway start returns error: unrecognized subcommand 'start' — which is expected after PR #1221 removed gateway start, but the replacement systemd-based flow also doesn't work because the unit was never installed.

Suggested approach

  1. Detect ostree in linux_package_method() — e.g. check for /run/ostree-booted or rpm-ostree availability.

  2. Two possible strategies:

    • Layer via rpm-ostree install: Install the RPMs into a new deployment, warn the user that a reboot is required, and defer start_user_gateway() to a post-reboot step (perhaps a first-boot systemd unit or a message telling the user to run a registration command after reboot).

    • User-local install (no layering): Extract binaries to ~/.local/bin/, place the systemd unit in ~/.config/systemd/user/openshell-gateway.service (adjusting ExecStart), and enable it immediately. This avoids the reboot but diverges from the package-managed layout.

    The user-local approach is probably the better UX for a dev install since it doesn't require a reboot and doesn't touch the base image.

Environment

  • Fedora Silverblue / Universal Blue
  • install-dev.sh from main (post PR #1221)
  • OPENSHELL_VERSION=dev

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in install-dev.sh with linux_package_method(), install_rpm_packages(), and start_user_gateway(). Reproduce the installer behavior on an ostree-based distribution, then determine whether layering with rpm-ostree or a user-local install fits the dev flow. Done means package or user-local installation succeeds and the gateway systemd user unit has a documented, working post-install start path.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux, shell
Domain
cli, devops, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.