adds `ipfs update` command tree that downloads pre-built Kubo binaries
from GitHub Releases, verifies SHA-512 checksums, and replaces the
running binary in place.
subcommands:
- `ipfs update check` -- query GitHub for newer versions
- `ipfs update versions` -- list available releases
- `ipfs update install [version]` -- download, verify, backup, and
atomically replace the current binary
- `ipfs update revert` -- restore the previously backed up binary
from `$IPFS_PATH/old-bin/`
read-only subcommands (check, versions) work while the daemon is
running. install and revert require the daemon to be stopped first.
design decisions:
- uses GitHub Releases API instead of dist.ipfs.tech because GitHub
is harder to censor in regions that block IPFS infrastructure
- honors GITHUB_TOKEN/GH_TOKEN to avoid unauthenticated rate limits
- backs up the current binary before replacing, with permission-error
fallback that saves to a temp dir with manual `sudo mv` instructions
- `KUBO_UPDATE_GITHUB_URL` env var redirects API calls for integration
testing; `IPFS_VERSION_FAKE` overrides the reported version
- unit tests use mock HTTP servers and the var override; CLI tests use
the env vars with a temp binary copy so the real build is never
touched
resolves https://github.com/ipfs/kubo/issues/10937