Repository navigation
Explain Docker and permission failures in the installer - #720
Merged
SaladDay merged 1 commit intoOct 15, 2026
Merged
Conversation
oac install now reports Docker's own reason without exit statuses or template output, and says what to install or start: the Docker access case names the docker group, Docker Desktop and rootless Docker and warns against sudo. Permission errors on ~/.oac, the lock, the stage or the installation directory name the blocked path and the sudo chown command that returns it. A busy lock and a failed image pull say what happened and the next step, and release downloads retry network errors, 429 and 5xx responses three times.
SaladDay
deleted the
explain-docker-and-permission-failures-in-the-installer
branch
October 15, 2026 12:27
This was referenced Oct 15, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
oac installexplains Docker, permission, lock, pull and download failures in one line with the next step:exit status 1and no stray/from the empty{{.OSType}}/{{.Architecture}}template.This account cannot use Docker: add it to the docker group and log in again, or use Docker Desktop or rootless Docker. Do not run the installer with sudo.dockerbinary: says to install Docker Engine 26+ with the Compose plugin, or Docker Desktop.Docker is not running or not reachable; start it and rerun the installer: <Docker's reason>.~/.oac,<dir>,<dir>.lockor<dir>.stagingprint one message. It names the blocked path and givessudo chown -R "$(id -un)" <paths>. The path is the deepest one this account can still see, so a root-owned~/.oacis named rather than the~/.oac/corebelow it. For the installation's own paths, the command covers every one that exists, so one chown fixes a whole sudo run. Paths outside the home directory are never suggested for a recursive chown. Windows names the path only.oac applyandrotate-core-keyget the same message throughwithLock.Another oac command is running on this installation; wait for it to finish and retry.The errno text is gone.downloadAsset) retry network errors, 429 and 5xx up to 3 attempts with backoff (1 s, 2 s). Each attempt keeps its 2-minute timeout. The final error isdownload <file>: <cause>; check the network or HTTPS_PROXY and rerun, and it does not repeat the whole URL.install.mdprerequisites cover the docker group, rootless Docker, never running with sudo, and the Docker daemon's own proxy.install-options.md#offline-hostsreplaces "installation requires GitHub and registries" with the daemon proxy and mirror, plus the release'soac-<commit>-linux-amd64-offline.tar.gzand itsinstall.py.operations.mdtroubleshooting table gets rows for Docker access, sudo leftovers and pull failures, and an updated Compose row.Why
Installer polish lane B1. Audit findings (audit-core.md) 4, 3c (message part), 2 (the
oacdownload part), P2-a and P2-m; mx probes 1 and 3. Users without Docker access got a rawexit status 1plus/, so they retried with sudo. That left root-owned~/.oac/*, and every later run then failed with a rawpermission denied.No new setting, flag, route or command.
downloadRetryDelayis a package variable so tests can skip the backoff.Verification
go test -count=1 ./services/core/cmd/oac/: pass. New acceptance tests:TestInstallExplainsDockerFailures: the five Docker or pull failures give the exact message and leave no directory or stage.TestDownloadRetriesTransientFailures: a dropped connection, then a 503, then success; a persistent 503 gives the final message after 3 attempts.TestInstallExplainsPathsAnotherAccountOwns(unix): an unreadable parent or lock gives the exact message and creates no directory.TestInstallRejectsBusyPortAndLock: now asserts the lock-busy message.go vet ./...passes.GOOS=windowsandGOOS=darwingo vet ./services/core/cmd/oac/pass.oac:DOCKER_HOSTsocket with mode 000 gives the access message.PATHgives the not-installed message.~/.oacand root-ownedcore+core.lockwere created through a container. The installer printed the expected path and chown command. After the chown it proceeded to downloading.HTTPS_PROXY=http://127.0.0.1:1givesdownload compose-sha256sums.txt: proxyconnect tcp: dial tcp 127.0.0.1:1: connect: connection refused; check the network or HTTPS_PROXY and rerunafter the retries.node --test website/tests/translations.test.mjs: 3/3 pass (website deps installed).python3 scripts/check-names.py: pass.python3 scripts/core-distribution-manifest.test.py BundledDocsTests: pass.Skipped
make check, per the focused-checks rule.dist.test.mjs), which need a site build; CI's website job covers them.Need help on this PR? Tag
@codesmith-botwith what you need.