siyuan-note/siyuan · warning

package checksum is unavailable

Error message

package checksum is unavailable

What it means

Returned by getGitHubManifestChecksum from the cache branch (line 379): the SHA256SUMS.txt manifest was previously downloaded and cached in githubManifestCache under manifestCacheKey, but parseChecksumManifest(cached, pkgName) returned an empty string — meaning no line in the cached manifest names the requested package. The cache holds a manifest that doesn't cover this pkgName.

Source

Thrown at kernel/model/updater_release.go:379

}

func getGitHubManifestChecksum(ctx context.Context, release *githubRelease, pkgName string) (string, error) {
	manifestAsset := findGitHubReleaseAsset(release, "SHA256SUMS.txt")
	if nil == manifestAsset || "uploaded" != manifestAsset.State || "" == manifestAsset.BrowserDownloadURL {
		return "", errors.New("checksum manifest is unavailable")
	}
	manifestDigest := normalizeSHA256(manifestAsset.Digest)
	manifestCacheKey := ""
	if "" != manifestDigest {
		manifestCacheKey = manifestAsset.BrowserDownloadURL + "#" + manifestDigest
	}
	if "" != manifestCacheKey {
		cached, ok := githubManifestCache.Load(manifestCacheKey)
		if ok {
			if checksum := parseChecksumManifest(cached.(string), pkgName); "" != checksum {
				return checksum, nil
			}
			return "", errors.New("package checksum is unavailable")
		}
	}

	response, err := httpclient.NewCloudRequest30s().SetContext(ctx).Get(manifestAsset.BrowserDownloadURL)
	if err != nil {
		return "", err
	}
	if nil == response || nil == response.Response {
		return "", errors.New("checksum manifest response is empty")
	}
	defer response.Body.Close()
	if 200 != response.StatusCode {
		return "", fmt.Errorf("get checksum manifest failed: %d", response.StatusCode)
	}
	data, err := io.ReadAll(io.LimitReader(response.Body, maxChecksumManifestSize+1))
	if err != nil {
		return "", err
	}

View on GitHub (pinned to 251596fc0d)

Solutions

  1. Check the release's SHA256SUMS.txt on GitHub to confirm whether your pkgName is listed.
  2. Switch to the stable channel if your platform is covered by the cloud JSON checksums.
  3. If the omission is a release bug, report it; otherwise update manually from the GitHub release page.
Defensive patterns

Strategy: fallback

Try / catch

// If the cached manifest doesn't list the package, bypass cache and refetch.
checksum, err := getGitHubManifestChecksum(ctx, release, pkgName)
if err != nil && strings.Contains(err.Error(), "package checksum is unavailable") {
    githubManifestCache.Delete(manifestCacheKey) // invalidate stale cache
    checksum, err = getGitHubManifestChecksum(ctx, release, pkgName)
}

Prevention

When it happens

Trigger: A release ships a SHA256SUMS.txt that lists only some platforms (e.g. omits win-arm64). The cached manifest is for a release where the pkgName was absent. pkgName was computed for a platform/arch the manifest author didn't include.

Common situations: Running an arm64 build when the manifest only lists amd64 assets. A release that omitted a particular platform's entry. Manifest generated by a release script with a platform gap.

Related errors


AI-assisted analysis of siyuan-note/siyuan@251596fc0d (2026-08-12). Data as JSON: /api/errors/3ded80cd89b93152. Report an issue: GitHub.