Skip to content

Reduce the packages page to a release-asset reference, add arm64 and offline guidance - #69

Merged
guanzhousongmicrosoft merged 5 commits into
documentdb:mainfrom
GuanzhouSong:users/guanzhousong/packages-doc-arch-and-repo
Aug 25, 2026
Merged

Reduce the packages page to a release-asset reference, add arm64 and offline guidance#69
guanzhousongmicrosoft merged 5 commits into
documentdb:mainfrom
GuanzhouSong:users/guanzhousong/packages-doc-arch-and-repo

Conversation

@GuanzhouSong

Copy link
Copy Markdown
Contributor

Three changes to getting-started/prebuilt-packages.md, plus a link fix across four pages. main already documents v0.116-0 and the package layout (#67), so this builds on that.


1. arm64 asset names, and why local installs need one command

The DEB and RPM asset examples were written for amd64 / x86_64 with no arm64 equivalent, even though v0.116-0 publishes both. The change adds the swap and records that only the gateway and extension assets are architecture-specific — the other four are _all.deb / noarch — so a reader knows which of the six names to change.

The stated cause of the meta-package failure was also wrong:

The packages depend on each other, so installing the meta package on its own fails

Mutual dependency is not the reason. apt and dnf resolve dependencies only from repository indexes, so a dependency on a bare local file is unresolvable regardless of how simple it is — a meta package with one dependency fails identically. Proven by putting the same six assets behind a local index, where a bare apt install documentdb resolves the whole graph at exit 0.

2. Offline / air-gapped

Release assets alone are not enough — DocumentDB also needs PostgreSQL, pg_cron, pgvector and PostGIS from PGDG. The page had no guidance for that case.

Since documentdb.io now carries the verified commands (documentdb/documentdb.github.io#158), this page keeps a pointer plus the one thing a reader cannot rediscover: apt-get install --download-only and a bare dnf download --resolve skip whatever is already installed on the staging machine, so the bundle looks complete and the target dies with Depends: adduser but it is not installable. One copy of the commands, not two.

3. Reduced to a release-asset reference

A clarity review found this file competing with documentdb.io rather than complementing it. That page is the canonical guide — repository setup, CRB, architecture, connect, network exposure, verify/operate, upgrade, extension-only hosts, troubleshooting — and this file renders there as a "this page has moved" stub, so it is read almost entirely by people browsing this repository. It duplicated most of that content, and 44% of the page came before the first install command.

Kept: release-asset filenames, the six-file install commands, SHA256SUMS, the package-set table, the build matrix, container tags, /version.txt. Everything else is now a link.

Also:

  • The PGDG/EPEL/CRB prerequisite was printed after both install blocks it gates — a reader copy-pasted, failed, and only then met the fix. Moved above the commands.
  • Merged Latest Release + What ships in a release + Package Matrix into one What each release publishes, below the install, since it is consulted rather than followed.
  • Dropped the per-release changelog paragraph (duplicates the release notes, goes stale every release) and the version-grammar paragraph (the asset-name examples already demonstrate it).
  • Dropped docker pull and docker tag — the tag it creates is never used again on the page, and docker run implies the pull. Two note blockquotes became one line.
  • Switched the mongosh example to the credential-flag form, which needs no percent-encoding caveat.

1,565 → 878 words.

4. Four links pointed at the redirect stub

documentdb-local/index.md, kubernetes-operator/index.md, getting-started/index.md and getting-started/python-setup.md all linked to /docs/getting-started/prebuilt-packages/, which documentdb.io serves as a moved-notice stub — 440 characters of visible text against 20,563 on the page it points at. Repointed to /docs/getting-started/packages/.

Verification

The offline commands referenced here were run verbatim, staging on a connected container and installing into one started with --network none:

Path Closure Result
DEB — stage ubuntu:24.04 → offline ubuntu:24.04 205 pkgs / 203 MB apt install documentdb-18exit 0
RPM — stage rockylinux:9 → offline rockylinux:9 271 pkgs / 172 MB dnf install documentdb-18exit 0
Single file — offline host with PGDG present 1 file apt install ./…debexit 0

The --download-only failure documented in the callout is the reproduced first attempt (133 packages staged instead of 205), not a hypothetical.

Asset architecture split confirmed against the real v0.116-0 assets: 4 × _all.deb plus gateway/extension × {amd64,arm64}, and the RPM set the same way with noarch. Container tags resolved by digest — latest and pg17-0.116.0 share sha256:bcdcca86…, and pg18-0.116.0 exists.

All five external links in the rewritten page return 200, including the documentdb.io offline anchor #offline-air-gapped-install — note the site slugifies with change-case's kebabCase, giving a single hyphen where GitHub's own slugifier gives a double.

No shell command was altered.

Related

documentdb/documentdb.github.io#158 — the canonical page: same ARM fix, the full offline section, and a 42% restructure.

GuanzhouSong and others added 5 commits August 25, 2026 11:27
…mmand

Two small gaps in the downloaded-assets section.

The DEB and RPM examples are written for amd64 and x86_64 and give no
arm64 equivalent, even though the release publishes both architectures
and the release notes carry the swap note. Add it to each example, and
record that only the gateway and extension assets are architecture-
specific -- the other four are _all.deb / noarch and are the same file on
either architecture, so a reader swapping names does not have to guess
which of the six change.

The stated reason the meta package cannot be installed alone is also
slightly off. It is not that the packages depend on each other: apt and
dnf resolve dependencies only from repository indexes, so a dependency on
a bare local file is unresolvable regardless of how simple it is. A meta
package with a single dependency fails identically. Say that instead, and
note it is not a defect in the packages, since the error reads like one.

Verified against v0.116-0: dropping the six release assets into a local
apt repository and running a bare `apt install documentdb` resolves the
whole graph unaided (documentdb -> documentdb-18 -> documentdb-common +
postgresql-18-documentdb -> documentdb-gateway +
documentdb-postgresql-tools), which confirms the package metadata is
correct and the repository index is the only missing piece.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f18515db-c52f-4197-aa50-d81359c7c763
Signed-off-by: Guanzhou Song <guanzhou.song@gmail.com>
An air-gapped host needs more than the DocumentDB release assets: the
packages depend on PostgreSQL itself and on pg_cron, pgvector and PostGIS
from PGDG, none of which are on the release page. The page had no guidance
for that case, so the only documented offline path was the six-asset
command, which still assumes the host can reach PGDG.

Document staging the full dependency closure on a connected machine and
serving it to the target as a local repository, for both DEB and RPM. The
local index restores full dependency resolution, so the air-gapped install
is a single `apt install documentdb-18` / `dnf install documentdb-18`
rather than an ordered list of files.

Call out the trap that makes a bundle look complete and fail on arrival:
`apt-get install --download-only` and a bare `dnf download --resolve` skip
anything already installed on the staging machine, so a clean target dies
with errors like "Depends: adduser but it is not installable". Use
`apt-cache depends --recurse` and `dnf download --alldeps`, which ignore
local install state.

Also add the single-file case -- the extension alone, onto a host that
already has PostgreSQL and the PGDG extension dependencies -- so the page
now covers one file, several files, and one command.

Verified on v0.116-0 with the documented commands run verbatim, installing
into containers started with `--network none`:

  * DEB: closure 205 packages / 203 MB staged on ubuntu:24.04, then
    `apt install documentdb-18` on an offline ubuntu:24.04 -> exit 0.
  * RPM: closure 271 packages / 172 MB staged on rockylinux:9, then
    `dnf install documentdb-18` on an offline rockylinux:9 -> exit 0.
  * Single file: `apt install ./postgresql-18-documentdb_0.116-0_amd64.deb`
    on an offline host with PGDG prerequisites present -> exit 0.

The first attempt used --download-only and produced exactly the failure
now documented, which is why it is called out.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f18515db-c52f-4197-aa50-d81359c7c763
Signed-off-by: Guanzhou Song <guanzhou.song@gmail.com>
Four pages link to /docs/getting-started/prebuilt-packages/, which
documentdb.io serves as a 'this page has moved' stub -- 440 characters of
visible text against 20,563 on the page it points to. Link straight to
/docs/getting-started/packages/ so readers land on the content.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f18515db-c52f-4197-aa50-d81359c7c763
Signed-off-by: Guanzhou Song <guanzhou.song@gmail.com>
A documentation review flagged the page as a reference manual rather than
a quick start. Three concrete problems, all fixed here.

The PGDG/EPEL/CRB prerequisite was printed *after* both install blocks it
gates, so a reader copy-pasted, failed, and only then met the fix. Move it
above the commands.

The offline section added earlier duplicated the one just added to
documentdb.io, and the two had already diverged on the day they landed --
the website files the single-file case under "Smaller offline cases", this
file filed it under "Install from downloaded assets". Since documentdb.io
is the canonical page and this file renders as a redirect stub there,
reduce the section to a pointer plus the one thing a reader cannot
rediscover: that `--download-only` silently stages an incomplete bundle.
The verified commands stay in exactly one place.

Trim the rest: the three-paragraph "why the meta package fails" preamble
becomes one sentence that keeps the searchable error string, and the arm64
notes drop their restatement while keeping the fact that only two of the
six asset names change.

1,565 -> 1,150 words. No command was altered.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f18515db-c52f-4197-aa50-d81359c7c763
Signed-off-by: Guanzhou Song <guanzhou.song@gmail.com>
A clarity review found this file competing with documentdb.io rather than
complementing it. documentdb.io/docs/getting-started/packages/ is the
canonical guide -- repository setup, CRB, architecture, connect, network
exposure, verify/operate, upgrade, extension-only hosts, troubleshooting --
and this page renders there as a "this page has moved" stub, so it is read
almost entirely by people browsing this repository. It duplicated most of
that content, and 44% of the page came before the first install command.

Keep only what the website does not own: the release-asset filenames, the
six-file install commands, SHA256SUMS, the package-set table, the build
matrix, and the container tags. Everything else becomes a link.

Lead with the repository install as the easiest path, then the assets.
Merge "Latest Release", "What ships in a release" and "Package Matrix"
into one "What each release publishes" section and move it below the
install, since it is consulted rather than followed. Drop the per-release
changelog paragraph, which duplicates the release notes and goes stale
every release, and the version-grammar paragraph, which the asset-name
examples already demonstrate.

Drop `docker pull` and `docker tag` from the container section: the tag it
creates is never used again on the page, and `docker run` implies the
pull. The two note blockquotes become one line.

Switch the mongosh example to the credential-flag form, which needs no
percent-encoding caveat.

1,565 -> 878 words. All five external links verified to return 200,
including the documentdb.io offline anchor.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f18515db-c52f-4197-aa50-d81359c7c763
Signed-off-by: Guanzhou Song <guanzhou.song@gmail.com>
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