Skip to content

Commit 205ac08

Browse files
authored
docs(web/guides): correct Linux bleeding-edge install URLs to wheels-be_* (#2777)
* docs(web/guides): correct Linux bleeding-edge install URLs to wheels-be_* PR #2759 (2026-05-18) renamed the snapshot Linux artifacts from `wheels_*` to `wheels-be_*` (debs) and `wheels-be-*.x86_64.rpm` (rpms) so the package name itself differentiates the channel. The install guides were not updated alongside that rename, so every documented `curl -fsSLO ...` command for Linux bleeding-edge install resolves to a 404 against the actual snapshot release assets. Verified against v4.0.2-snapshot.1923 (published 2026-05-20): Guide says: .../wheels_4.0.2.snapshot.1923_amd64.deb → 404 Actual asset: .../wheels-be_4.0.2.snapshot.1923_amd64.deb Fix all six pages where the snippets / prose examples appear (three unique pages mirrored across v4-0-0 and v4-0-1-snapshot doc versions): start-here/installing.mdx — "Want bleeding-edge?" aside start-here/release-channels.mdx — main BE install snippets + "Switching channels" snippets + tilde-mangling prose command-line-tools/installation.mdx — bleeding-edge install snippets The substitutions are scoped to bleeding-edge contexts (snippets using `${SNAP_FILENAME_VER}` and prose `wheels_4.0.0.snapshot.*` filename examples). Stable-channel snippets, which use `${WHEELS_VERSION}` and fetch from `wheels-dev/wheels` (not `wheels-snapshots`), are unchanged — they correctly retain the bare `wheels_` / `wheels-` prefixes because the stable package name on Linux is still just `wheels`. Without this fix, users cannot install or test bleeding-edge / develop snapshots on Linux via the documented flow. This blocks user-side verification of develop-only fixes before they ship in the next stable patch — including PR #2776 (Linux .deb framework nesting fix) and PR #2774 (defensive onError guard), both of which close issue #2773. Signed-off-by: Peter Amiri <peter@alurium.com> * docs(web/guides): fix release-channels.mdx — missed BE Tab URLs + Linux switching semantics Round-1 reviewer findings on PR #2777: A's Nit 1 — primary install Tabs at lines 104-105 (Debian/Ubuntu BE) and 112 (Fedora/RHEL BE) of `release-channels.mdx` still resolved to 404. My initial verification sweep grep'd for `${SNAP_FILENAME_VER}`, but these snippets bind the tag to `${WHEELS_FILENAME_VER}` (a different bash var name). The fix is the same — point at the `wheels-be_` / `wheels-be-` artifacts. A's Nit 2 + B's catch — the "Switching channels" section had three related staleness bugs after #2759 renamed the BE package: 1. Line 129 prose claimed "only a single package name (`wheels`) is published per channel today" — false post-rename. 2. Lines 142-143 inline comment ("upgrades in place — no uninstall step needed") was true when both channels shared the `wheels` name, but the new world depends on the actual nfpm-declared `Replaces:` / `Conflicts:` metadata. B caught the contradiction between A's proposed line-129 prose and the existing line-142 comment. 3. Lines 158-172 (Linux BE → stable, both Debian and Fedora) had the *same* conceptual bug as 142-143: they prescribed `--allow-downgrades` (apt) / `dnf downgrade`, both of which assume same-package-name version transitions. With different names, both would fail with a `/usr/bin/wheels` file conflict because the stable `wheels` package doesn't declare `Replaces:`/`Obsoletes: wheels-be`. Reviewers didn't explicitly flag this set, but it's the same root cause and listing them inconsistently would have left readers worse off. Verified the actual nfpm metadata before rewriting (so the prose matches what the packages really declare): wheels-be deb: Replaces: wheels + Conflicts: wheels wheels-be rpm: Conflicts: wheels (no Obsoletes) wheels deb: no Replaces/Conflicts against wheels-be wheels rpm: no Conflicts/Obsoletes against wheels-be The new prose at line 129 explains the asymmetry up front; each snippet now carries a short comment naming the specific metadata that drives its action (or the lack of metadata that requires the explicit `apt remove` / `dnf remove`). Stable-channel snippets and stable install Tabs are unchanged. Signed-off-by: Peter Amiri <peter@alurium.com> * docs(web/guides): name the actual Conflicts declaration in BE→stable comments Reviewer A round-2 nit on PR #2777: the BE → stable (Debian) snippet's comment said apt "would fail with a /usr/bin/wheels file conflict", framing the failure mode as a dpkg-level file-ownership conflict. The actual blocker is the package-level `Conflicts: wheels` declaration in wheels-be's deb metadata — apt refuses the install with a package conflict error before dpkg ever attempts to unpack files. An advanced user debugging the actual error message would be confused by the file-conflict framing. Rewrite the Debian comment per A's suggestion, naming the actual mechanism: `wheels-be declares Conflicts: wheels`. Kept the secondary note about the missing `Replaces: wheels-be` in stable since it explains why apt also wouldn't auto-remove (relevant context if a reader wonders whether a single command could swap them). Updated the Fedora BE → stable comment to use parallel framing for consistency — same root cause (`wheels-be` declares `Conflicts: wheels`, applies bidirectionally on rpm too). Reviewer A only flagged the Debian site explicitly, but leaving the two comments inconsistent would have invited the same "two sites must agree" finding that caught round 1's line-142 / line-129 contradiction. Signed-off-by: Peter Amiri <peter@alurium.com> --------- Signed-off-by: Peter Amiri <peter@alurium.com>
1 parent 148446b commit 205ac08

6 files changed

Lines changed: 68 additions & 46 deletions

File tree

web/sites/guides/src/content/docs/v4-0-0/command-line-tools/installation.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ sudo dnf install "https://github.com/wheels-dev/wheels/releases/download/v${WHEE
7878

7979
The package lays down `/usr/bin/wheels` (a shell wrapper), `/opt/wheels/wheels` (the LuCLI launcher, renamed at stage time so `basename(argv[0])` is `wheels` and module dispatch routes correctly), `/opt/wheels/module/` (the staged Wheels Module), `/opt/wheels/.version` and `/opt/wheels/.channel` (read by the wrapper for `wheels --version`), and `/opt/wheels/sqlite-jdbc.jar` (auto-staged into Lucee Express on first run). The wrapper mirrors the Homebrew flow: probes `/usr/lib/jvm/` for OpenJDK 21, exports `LUCLI_HOME=$HOME/.wheels`, syncs the staged module into `~/.wheels/modules/wheels/` on first run or version mismatch, then execs LuCLI.
8080

81-
The bleeding-edge channel publishes `.deb`/`.rpm` to [`wheels-dev/wheels-snapshots`](https://github.com/wheels-dev/wheels-snapshots/releases) on every merge to `develop`. Every release there is a GitHub *pre-release*, so `api.github.com/.../releases/latest` returns nothing — use `/releases` and take the first entry. The asset filename also differs: snapshot tags use a SemVer hyphen (`v4.0.0-snapshot.1825`) but the on-disk asset name uses a dot (`wheels_4.0.0.snapshot.1825_amd64.deb`) because GitHub Releases rewrites the package's internal `~snapshot.N` form to `.` at upload time. The substitution converts the tag's hyphen-form to the URL's dot-form:
81+
The bleeding-edge channel publishes `.deb`/`.rpm` to [`wheels-dev/wheels-snapshots`](https://github.com/wheels-dev/wheels-snapshots/releases) on every merge to `develop`. Every release there is a GitHub *pre-release*, so `api.github.com/.../releases/latest` returns nothing — use `/releases` and take the first entry. The asset filename also differs: snapshot tags use a SemVer hyphen (`v4.0.0-snapshot.1825`) but the on-disk asset name uses a dot (`wheels-be_4.0.0.snapshot.1825_amd64.deb`) because GitHub Releases rewrites the package's internal `~snapshot.N` form to `.` at upload time. The substitution converts the tag's hyphen-form to the URL's dot-form:
8282

8383
```bash title="illustrative — Debian / Ubuntu (bleeding-edge)"
8484
SNAP_TAG=$(curl -fsSL https://api.github.com/repos/wheels-dev/wheels-snapshots/releases \
@@ -88,8 +88,8 @@ if [ -z "$SNAP_TAG" ] || [ "$SNAP_TAG" = "null" ]; then
8888
exit 1
8989
fi
9090
SNAP_FILENAME_VER="${SNAP_TAG//-/.}"
91-
curl -fsSLO "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels_${SNAP_FILENAME_VER}_amd64.deb"
92-
sudo apt install "./wheels_${SNAP_FILENAME_VER}_amd64.deb"
91+
curl -fsSLO "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels-be_${SNAP_FILENAME_VER}_amd64.deb"
92+
sudo apt install "./wheels-be_${SNAP_FILENAME_VER}_amd64.deb"
9393
```
9494

9595
```bash title="illustrative — Fedora / RHEL (bleeding-edge)"
@@ -100,7 +100,7 @@ if [ -z "$SNAP_TAG" ] || [ "$SNAP_TAG" = "null" ]; then
100100
exit 1
101101
fi
102102
SNAP_FILENAME_VER="${SNAP_TAG//-/.}"
103-
sudo dnf install "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels-${SNAP_FILENAME_VER}.x86_64.rpm"
103+
sudo dnf install "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels-be-${SNAP_FILENAME_VER}.x86_64.rpm"
104104
```
105105

106106
The version metadata *inside* the `.deb`/`.rpm` preserves the canonical `~snapshot.N` form, so `dpkg --compare-versions` and `rpmvercmp` order pre-releases below the next GA correctly.

web/sites/guides/src/content/docs/v4-0-0/start-here/installing.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,21 +189,21 @@ During Phase 1 (before `apt.wheels.dev` / `yum.wheels.dev` are live), download i
189189
```
190190

191191
<Aside type="note" title="Want bleeding-edge?">
192-
The bleeding-edge channel publishes a fresh `.deb`/`.rpm` on every merge to `develop`, in the [`wheels-dev/wheels-snapshots`](https://github.com/wheels-dev/wheels-snapshots/releases) repo. Because every release there is a GitHub *pre-release*, `api.github.com/.../releases/latest` returns nothing — use `/releases` and pick the first entry. Snapshot tags use a SemVer hyphen (`v4.0.0-snapshot.1825`); the on-disk asset filename uses a dot in the same slot (`wheels_4.0.0.snapshot.1825_amd64.deb`) because GitHub Releases rewrites the package's internal `~snapshot.N` form to `.` at upload time. Self-contained snippets:
192+
The bleeding-edge channel publishes a fresh `.deb`/`.rpm` on every merge to `develop`, in the [`wheels-dev/wheels-snapshots`](https://github.com/wheels-dev/wheels-snapshots/releases) repo. Because every release there is a GitHub *pre-release*, `api.github.com/.../releases/latest` returns nothing — use `/releases` and pick the first entry. Snapshot tags use a SemVer hyphen (`v4.0.0-snapshot.1825`); the on-disk asset filename uses a dot in the same slot (`wheels-be_4.0.0.snapshot.1825_amd64.deb`) because GitHub Releases rewrites the package's internal `~snapshot.N` form to `.` at upload time. Self-contained snippets:
193193

194194
```bash title="Debian / Ubuntu — bleeding-edge"
195195
SNAP_TAG=$(curl -fsSL https://api.github.com/repos/wheels-dev/wheels-snapshots/releases \
196196
| sed -nE 's/.*"tag_name": *"v([^"]+)".*/\1/p' | head -1)
197197
SNAP_FILENAME_VER="${SNAP_TAG//-/.}"
198-
curl -fsSLO "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels_${SNAP_FILENAME_VER}_amd64.deb"
199-
sudo apt install "./wheels_${SNAP_FILENAME_VER}_amd64.deb"
198+
curl -fsSLO "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels-be_${SNAP_FILENAME_VER}_amd64.deb"
199+
sudo apt install "./wheels-be_${SNAP_FILENAME_VER}_amd64.deb"
200200
```
201201

202202
```bash title="Fedora / RHEL — bleeding-edge"
203203
SNAP_TAG=$(curl -fsSL https://api.github.com/repos/wheels-dev/wheels-snapshots/releases \
204204
| sed -nE 's/.*"tag_name": *"v([^"]+)".*/\1/p' | head -1)
205205
SNAP_FILENAME_VER="${SNAP_TAG//-/.}"
206-
sudo dnf install "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels-${SNAP_FILENAME_VER}.x86_64.rpm"
206+
sudo dnf install "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels-be-${SNAP_FILENAME_VER}.x86_64.rpm"
207207
```
208208

209209
The metadata inside the package keeps the canonical `~snapshot.N` form so `apt`/`dnf` order the version correctly relative to GA. See [Release Channels](/v4-0-0/start-here/release-channels/).

web/sites/guides/src/content/docs/v4-0-0/start-here/release-channels.mdx

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -101,15 +101,15 @@ WHEELS_TAG=$(curl -fsSL https://api.github.com/repos/wheels-dev/wheels-snapshots
101101
# in the same slot because GitHub Releases rewrites the package's internal
102102
# ~snapshot.N form to . at upload time. So translate hyphen → dot for the URL.
103103
WHEELS_FILENAME_VER="${WHEELS_TAG//-/.}"
104-
curl -fsSLO "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${WHEELS_TAG}/wheels_${WHEELS_FILENAME_VER}_amd64.deb"
105-
sudo apt install "./wheels_${WHEELS_FILENAME_VER}_amd64.deb"
104+
curl -fsSLO "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${WHEELS_TAG}/wheels-be_${WHEELS_FILENAME_VER}_amd64.deb"
105+
sudo apt install "./wheels-be_${WHEELS_FILENAME_VER}_amd64.deb"
106106
```
107107

108108
```bash title="Fedora / RHEL (bleeding-edge)"
109109
WHEELS_TAG=$(curl -fsSL https://api.github.com/repos/wheels-dev/wheels-snapshots/releases \
110110
| sed -nE 's/.*"tag_name": *"v([^"]+)".*/\1/p' | head -1)
111111
WHEELS_FILENAME_VER="${WHEELS_TAG//-/.}"
112-
sudo dnf install "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${WHEELS_TAG}/wheels-${WHEELS_FILENAME_VER}.x86_64.rpm"
112+
sudo dnf install "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${WHEELS_TAG}/wheels-be-${WHEELS_FILENAME_VER}.x86_64.rpm"
113113
```
114114

115115
Apt and yum repos at `apt.wheels.dev` / `yum.wheels.dev` are coming — they'll let you `apt upgrade wheels` instead of re-downloading.
@@ -119,14 +119,14 @@ Apt and yum repos at `apt.wheels.dev` / `yum.wheels.dev` are coming — they'll
119119
</Tabs>
120120

121121
<Aside type="caution" title="Version string format on .deb / .rpm">
122-
GitHub Releases doesn't allow `~` in asset filenames, so the SemVer pre-release tilde gets normalized to a dot. The on-disk filename for snapshot 1787 is `wheels_4.0.0.snapshot.1787_amd64.deb`, not `wheels_4.0.0~snapshot.1787_amd64.deb`. The package's *internal* version (what `dpkg --info` reports) keeps the tilde for correct precedence.
122+
GitHub Releases doesn't allow `~` in asset filenames, so the SemVer pre-release tilde gets normalized to a dot. The on-disk filename for snapshot 1787 is `wheels-be_4.0.0.snapshot.1787_amd64.deb`, not `wheels-be_4.0.0~snapshot.1787_amd64.deb`. The package's *internal* version (what `dpkg --info` reports) keeps the tilde for correct precedence.
123123
</Aside>
124124

125125
## Switching channels
126126

127127
On **macOS and Windows**, the channels publish two differently-named packages (`wheels` vs `wheels-be`) that both install a binary called `wheels`, so the package managers refuse to install both at once — Homebrew enforces this via `conflicts_with`, Scoop refuses outright.
128128

129-
On **Linux**, only a single package name (`wheels`) is published per channel today; the channel distinction lives in the source repo (`wheels-dev/wheels` vs `wheels-dev/wheels-snapshots`). Switching = installing the package from the other repo. `apt`/`dnf` then treats the install as an upgrade or downgrade depending on the version comparison.
129+
On **Linux**, the two channels likewise publish differently-named packages: `wheels` (stable, from `wheels-dev/wheels`) and `wheels-be` (bleeding-edge, from `wheels-dev/wheels-snapshots`). Switching = installing the package from the other repo. The `wheels-be` `.deb` declares `Replaces: wheels` + `Conflicts: wheels`, so on Debian/Ubuntu `apt` handles the stable → bleeding-edge swap automatically. The `wheels-be` `.rpm` declares only `Conflicts:` (no `Obsoletes:`), and the stable `wheels` package doesn't declare either against `wheels-be`, so the `dnf` direction and the reverse (bleeding-edge → stable) both need an explicit `remove` step. Snippets below cover each case.
130130

131131
```bash title="macOS — stable → bleeding-edge"
132132
brew uninstall wheels
@@ -139,36 +139,47 @@ brew install wheels
139139
```
140140

141141
```bash title="Linux — stable → bleeding-edge (Debian / Ubuntu)"
142-
# apt sees a newer version (e.g. 4.0.1~snapshot.500 sorts above the most
143-
# recent stable 4.0.0) and upgrades in place — no uninstall step needed.
142+
# wheels-be .deb declares Replaces: wheels + Conflicts: wheels, so apt
143+
# removes the stable wheels package and installs wheels-be in its place
144+
# without a separate `apt remove` step.
144145
SNAP_TAG=$(curl -fsSL https://api.github.com/repos/wheels-dev/wheels-snapshots/releases \
145146
| sed -nE 's/.*"tag_name": *"v([^"]+)".*/\1/p' | head -1)
146147
SNAP_FILENAME_VER="${SNAP_TAG//-/.}"
147-
curl -fsSLO "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels_${SNAP_FILENAME_VER}_amd64.deb"
148-
sudo apt install "./wheels_${SNAP_FILENAME_VER}_amd64.deb"
148+
curl -fsSLO "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels-be_${SNAP_FILENAME_VER}_amd64.deb"
149+
sudo apt install "./wheels-be_${SNAP_FILENAME_VER}_amd64.deb"
149150
```
150151

151152
```bash title="Linux — stable → bleeding-edge (Fedora / RHEL)"
153+
# wheels-be .rpm declares Conflicts: wheels but no Obsoletes, so dnf
154+
# refuses to install while the stable wheels package is present. Remove
155+
# it first.
156+
sudo dnf remove wheels
152157
SNAP_TAG=$(curl -fsSL https://api.github.com/repos/wheels-dev/wheels-snapshots/releases \
153158
| sed -nE 's/.*"tag_name": *"v([^"]+)".*/\1/p' | head -1)
154159
SNAP_FILENAME_VER="${SNAP_TAG//-/.}"
155-
sudo dnf install "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels-${SNAP_FILENAME_VER}.x86_64.rpm"
160+
sudo dnf install "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels-be-${SNAP_FILENAME_VER}.x86_64.rpm"
156161
```
157162

158163
```bash title="Linux — bleeding-edge → stable (Debian / Ubuntu)"
159-
# apt treats this as a downgrade (4.0.0 sorts below 4.0.1~snapshot.500), so add
160-
# --allow-downgrades.
164+
# wheels-be declares Conflicts: wheels, so apt refuses to install wheels
165+
# while wheels-be is present. (Stable wheels .deb also doesn't declare
166+
# Replaces: wheels-be, so apt wouldn't auto-remove either way.) Remove
167+
# wheels-be first.
168+
sudo apt remove wheels-be
161169
WHEELS_VERSION=$(curl -fsSL https://api.github.com/repos/wheels-dev/wheels/releases/latest \
162170
| sed -nE 's/.*"tag_name": *"v([^"]+)".*/\1/p')
163171
curl -fsSLO "https://github.com/wheels-dev/wheels/releases/download/v${WHEELS_VERSION}/wheels_${WHEELS_VERSION}_amd64.deb"
164-
sudo apt install --allow-downgrades "./wheels_${WHEELS_VERSION}_amd64.deb"
172+
sudo apt install "./wheels_${WHEELS_VERSION}_amd64.deb"
165173
```
166174

167175
```bash title="Linux — bleeding-edge → stable (Fedora / RHEL)"
168-
# Use `dnf downgrade` — dnf handles the older-version transition transparently.
176+
# Same as Debian above — wheels-be declares Conflicts: wheels, so dnf
177+
# refuses to install wheels while wheels-be is present. Remove wheels-be
178+
# first.
179+
sudo dnf remove wheels-be
169180
WHEELS_VERSION=$(curl -fsSL https://api.github.com/repos/wheels-dev/wheels/releases/latest \
170181
| sed -nE 's/.*"tag_name": *"v([^"]+)".*/\1/p')
171-
sudo dnf downgrade "https://github.com/wheels-dev/wheels/releases/download/v${WHEELS_VERSION}/wheels-${WHEELS_VERSION}.x86_64.rpm"
182+
sudo dnf install "https://github.com/wheels-dev/wheels/releases/download/v${WHEELS_VERSION}/wheels-${WHEELS_VERSION}.x86_64.rpm"
172183
```
173184

174185
```powershell title="Windows (Scoop) — stable → bleeding-edge"

web/sites/guides/src/content/docs/v4-0-1-snapshot/command-line-tools/installation.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ sudo dnf install "https://github.com/wheels-dev/wheels/releases/download/v${WHEE
7878

7979
The package lays down `/usr/bin/wheels` (a shell wrapper), `/opt/wheels/wheels` (the LuCLI launcher, renamed at stage time so `basename(argv[0])` is `wheels` and module dispatch routes correctly), `/opt/wheels/module/` (the staged Wheels Module), `/opt/wheels/.version` and `/opt/wheels/.channel` (read by the wrapper for `wheels --version`), and `/opt/wheels/sqlite-jdbc.jar` (auto-staged into Lucee Express on first run). The wrapper mirrors the Homebrew flow: probes `/usr/lib/jvm/` for OpenJDK 21, exports `LUCLI_HOME=$HOME/.wheels`, syncs the staged module into `~/.wheels/modules/wheels/` on first run or version mismatch, then execs LuCLI.
8080

81-
The bleeding-edge channel publishes `.deb`/`.rpm` to [`wheels-dev/wheels-snapshots`](https://github.com/wheels-dev/wheels-snapshots/releases) on every merge to `develop`. Every release there is a GitHub *pre-release*, so `api.github.com/.../releases/latest` returns nothing — use `/releases` and take the first entry. The asset filename also differs: snapshot tags use a SemVer hyphen (`v4.0.0-snapshot.1825`) but the on-disk asset name uses a dot (`wheels_4.0.0.snapshot.1825_amd64.deb`) because GitHub Releases rewrites the package's internal `~snapshot.N` form to `.` at upload time. The substitution converts the tag's hyphen-form to the URL's dot-form:
81+
The bleeding-edge channel publishes `.deb`/`.rpm` to [`wheels-dev/wheels-snapshots`](https://github.com/wheels-dev/wheels-snapshots/releases) on every merge to `develop`. Every release there is a GitHub *pre-release*, so `api.github.com/.../releases/latest` returns nothing — use `/releases` and take the first entry. The asset filename also differs: snapshot tags use a SemVer hyphen (`v4.0.0-snapshot.1825`) but the on-disk asset name uses a dot (`wheels-be_4.0.0.snapshot.1825_amd64.deb`) because GitHub Releases rewrites the package's internal `~snapshot.N` form to `.` at upload time. The substitution converts the tag's hyphen-form to the URL's dot-form:
8282

8383
```bash title="illustrative — Debian / Ubuntu (bleeding-edge)"
8484
SNAP_TAG=$(curl -fsSL https://api.github.com/repos/wheels-dev/wheels-snapshots/releases \
@@ -88,8 +88,8 @@ if [ -z "$SNAP_TAG" ] || [ "$SNAP_TAG" = "null" ]; then
8888
exit 1
8989
fi
9090
SNAP_FILENAME_VER="${SNAP_TAG//-/.}"
91-
curl -fsSLO "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels_${SNAP_FILENAME_VER}_amd64.deb"
92-
sudo apt install "./wheels_${SNAP_FILENAME_VER}_amd64.deb"
91+
curl -fsSLO "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels-be_${SNAP_FILENAME_VER}_amd64.deb"
92+
sudo apt install "./wheels-be_${SNAP_FILENAME_VER}_amd64.deb"
9393
```
9494

9595
```bash title="illustrative — Fedora / RHEL (bleeding-edge)"
@@ -100,7 +100,7 @@ if [ -z "$SNAP_TAG" ] || [ "$SNAP_TAG" = "null" ]; then
100100
exit 1
101101
fi
102102
SNAP_FILENAME_VER="${SNAP_TAG//-/.}"
103-
sudo dnf install "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels-${SNAP_FILENAME_VER}.x86_64.rpm"
103+
sudo dnf install "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels-be-${SNAP_FILENAME_VER}.x86_64.rpm"
104104
```
105105

106106
The version metadata *inside* the `.deb`/`.rpm` preserves the canonical `~snapshot.N` form, so `dpkg --compare-versions` and `rpmvercmp` order pre-releases below the next GA correctly.

web/sites/guides/src/content/docs/v4-0-1-snapshot/start-here/installing.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,21 +189,21 @@ During Phase 1 (before `apt.wheels.dev` / `yum.wheels.dev` are live), download i
189189
```
190190

191191
<Aside type="note" title="Want bleeding-edge?">
192-
The bleeding-edge channel publishes a fresh `.deb`/`.rpm` on every merge to `develop`, in the [`wheels-dev/wheels-snapshots`](https://github.com/wheels-dev/wheels-snapshots/releases) repo. Because every release there is a GitHub *pre-release*, `api.github.com/.../releases/latest` returns nothing — use `/releases` and pick the first entry. Snapshot tags use a SemVer hyphen (`v4.0.0-snapshot.1825`); the on-disk asset filename uses a dot in the same slot (`wheels_4.0.0.snapshot.1825_amd64.deb`) because GitHub Releases rewrites the package's internal `~snapshot.N` form to `.` at upload time. Self-contained snippets:
192+
The bleeding-edge channel publishes a fresh `.deb`/`.rpm` on every merge to `develop`, in the [`wheels-dev/wheels-snapshots`](https://github.com/wheels-dev/wheels-snapshots/releases) repo. Because every release there is a GitHub *pre-release*, `api.github.com/.../releases/latest` returns nothing — use `/releases` and pick the first entry. Snapshot tags use a SemVer hyphen (`v4.0.0-snapshot.1825`); the on-disk asset filename uses a dot in the same slot (`wheels-be_4.0.0.snapshot.1825_amd64.deb`) because GitHub Releases rewrites the package's internal `~snapshot.N` form to `.` at upload time. Self-contained snippets:
193193

194194
```bash title="Debian / Ubuntu — bleeding-edge"
195195
SNAP_TAG=$(curl -fsSL https://api.github.com/repos/wheels-dev/wheels-snapshots/releases \
196196
| sed -nE 's/.*"tag_name": *"v([^"]+)".*/\1/p' | head -1)
197197
SNAP_FILENAME_VER="${SNAP_TAG//-/.}"
198-
curl -fsSLO "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels_${SNAP_FILENAME_VER}_amd64.deb"
199-
sudo apt install "./wheels_${SNAP_FILENAME_VER}_amd64.deb"
198+
curl -fsSLO "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels-be_${SNAP_FILENAME_VER}_amd64.deb"
199+
sudo apt install "./wheels-be_${SNAP_FILENAME_VER}_amd64.deb"
200200
```
201201

202202
```bash title="Fedora / RHEL — bleeding-edge"
203203
SNAP_TAG=$(curl -fsSL https://api.github.com/repos/wheels-dev/wheels-snapshots/releases \
204204
| sed -nE 's/.*"tag_name": *"v([^"]+)".*/\1/p' | head -1)
205205
SNAP_FILENAME_VER="${SNAP_TAG//-/.}"
206-
sudo dnf install "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels-${SNAP_FILENAME_VER}.x86_64.rpm"
206+
sudo dnf install "https://github.com/wheels-dev/wheels-snapshots/releases/download/v${SNAP_TAG}/wheels-be-${SNAP_FILENAME_VER}.x86_64.rpm"
207207
```
208208

209209
The metadata inside the package keeps the canonical `~snapshot.N` form so `apt`/`dnf` order the version correctly relative to GA. See [Release Channels](/v4-0-1-snapshot/start-here/release-channels/).

0 commit comments

Comments
 (0)