install-dev.sh: support ostree-based distros (Silverblue, Universal Blue)
Nobody has claimed this yet.
- 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
-
Detect ostree in
linux_package_method()— e.g. check for/run/ostree-bootedorrpm-ostreeavailability. -
Two possible strategies:
-
Layer via
rpm-ostree install: Install the RPMs into a new deployment, warn the user that a reboot is required, and deferstart_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(adjustingExecStart), 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.shfrommain(post PR #1221)OPENSHELL_VERSION=dev
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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