{"record":{"id":"43c6b9886fd28ae8","repo":"ipfs/kubo","slug":"no-release-found-with-a-binary-for-s-s","errorCode":null,"errorMessage":"no release found with a binary for %s/%s","messagePattern":"no release found with a binary for (.+?)/(.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/commands/update_github.go","lineNumber":132,"sourceCode":"\n// githubLatestRelease returns the newest release that has a platform asset\n// for the current GOOS/GOARCH. This avoids false positives when a release\n// tag exists but artifacts haven't been uploaded yet.\nfunc githubLatestRelease(ctx context.Context, includePre bool) (*ghRelease, error) {\n\treleases, err := githubListReleases(ctx, 10, includePre)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor i := range releases {\n\t\twant := assetNameForPlatformTag(releases[i].TagName)\n\t\tfor _, a := range releases[i].Assets {\n\t\t\tif a.Name == want {\n\t\t\t\treturn &releases[i], nil\n\t\t\t}\n\t\t}\n\t}\n\treturn nil, fmt.Errorf(\"no release found with a binary for %s/%s\", runtime.GOOS, runtime.GOARCH)\n}\n\n// githubListReleases fetches up to count releases, optionally including prereleases.\nfunc githubListReleases(ctx context.Context, count int, includePre bool) ([]ghRelease, error) {\n\t// Fetch more than needed so we can filter prereleases and still return count results.\n\tperPage := count\n\tif !includePre {\n\t\tperPage = count * 3\n\t}\n\tif perPage > 100 {\n\t\tperPage = 100\n\t}\n\n\turl := fmt.Sprintf(\"%s?per_page=%d\", githubReleaseBaseURL(), perPage)\n\tresp, err := githubGet(ctx, url)\n\tif err != nil {\n\t\treturn nil, err\n\t}","sourceCodeStart":114,"sourceCodeEnd":150,"githubUrl":"https://github.com/ipfs/kubo/blob/329838acdfafae224582930457efe80aa217afc0/core/commands/update_github.go#L114-L150","documentation":"githubLatestRelease scans fetched releases for an asset whose filename matches the pattern for the running GOOS/GOARCH (want, e.g. kubo_v0.30.0_linux-amd64.tar.gz). If none of the inspected releases ships such a binary it returns `no release found with a binary for <os>/<arch>`. The lookup succeeded at the API level; there is simply no matching distributable for this platform in the releases examined.","triggerScenarios":"Running `ipfs update check`/`apply` on an uncommon platform — e.g. linux-riscv64, freebsd-arm, windows-arm64, or 32-bit builds — where kubo's release assets don't include that os/arch combination, or when includePrerelease filtering skips the only release containing the asset.","commonSituations":"Trying to self-update on an architecture without official releases (ARMv6, riscv64), running on an OS kubo does not publish binaries for, a very new CPU arch released after the current release series, or Docker/alpine images on unusual platforms.","solutions":["Check available assets on https://github.com/ipfs/kubo/releases for your OS/arch; if absent, kubo publishes no binary for it.","Install/update via a distro package or build from source: `git clone https://github.com/ipfs/kubo && make build`.","Use an emulation/alternate arch binary only if officially provided; otherwise track the issue requesting releases for your platform.","If a matching prerelease exists, run `ipfs update check --allow-downgrade --prerelease`-style flags (or fetch manually) to include it."],"exampleFix":"// before\nrel, err := githubLatestRelease(ctx, true) // on linux/riscv64 -> no asset\n// after\nif !platformHasReleaseAssets(runtime.GOOS, runtime.GOARCH) {\n\treturn fmt.Errorf(\"self-update unsupported for %s/%s; build from source\", runtime.GOOS, runtime.GOARCH)\n}\nrel, err := githubLatestRelease(ctx, true)","handlingStrategy":"fallback","validationCode":"// check the asset matrix before attempting self-update\nassets := []string{\"linux-amd64\",\"linux-arm64\",\"darwin-amd64\",\"darwin-arm64\",\"windows-amd64\"}\nkey := runtime.GOOS + \"-\" + runtime.GOARCH\nif !slices.Contains(assets, key) {\n\treturn fmt.Errorf(\"self-update not supported for %s; build from source\", key)\n}","typeGuard":"func platformSupported(goos, goarch string) bool {\n\t_, err := os.Stat(filepath.Join(releaseAssetsDir, goos+\"-\"+goarch))\n\treturn err == nil\n}","tryCatchPattern":"rel, err := githubLatestRelease(ctx, includePre)\nif err != nil {\n\tif strings.Contains(err.Error(), \"no release found with a binary for\") {\n\t\treturn tryInstallFromSource() // fallback path\n\t}\n\treturn err\n}","preventionTips":["Confirm official release assets include your GOOS/GOARCH before self-updating","On exotic platforms (riscv64, armv6), plan to build from source instead","Use `--prerelease`-style options when the binary only exists in a prerelease","Pin installation via package managers (apt, brew, docker) on platforms without release binaries"],"tags":["github","releases","platform","unsupported-platform","cli"],"backgroundTag":"no-binary-for-platform","analyzedSha":"329838acdfafae224582930457efe80aa217afc0","analyzedAt":"2026-09-03T18:30:52.135Z","contentChangedAt":"2026-09-03T18:30:52.135Z","schemaVersion":2},"datasetVersion":"2026-09-11T00:17:11.886Z"}