abiosoft/colima · error

error retrieving embedded vmnet file: %w

Error message

error retrieving embedded vmnet file: %w

What it means

vmnetFile.Install reads the architecture-specific tarball baked in at compile time via go:embed: embedded/network/vmnet_x86_64.tar.gz on amd64, vmnet_arm64.tar.gz otherwise. embedded.Read is a plain fs.ReadFile, so this fails when that specific file is absent from the embedded FS — i.e. the binary was built from a source tree where embedded/network/vmnet_*.tar.gz was missing (go:embed only errors at compile time if the whole `network` pattern matched nothing, so an individually deleted tarball slips through to runtime).

Source

Thrown at daemon/process/vmnet/deps.go:55

			return false
		}
	}
	return true
}

func (v vmnetFile) bins() []string {
	return []string{BinaryPath, ClientBinaryPath}
}
func (v vmnetFile) Install(host environment.HostActions) error {
	arch := "x86_64"
	if runtime.GOARCH != "amd64" {
		arch = "arm64"
	}

	// read the embedded file
	gz, err := embedded.Read("network/vmnet_" + arch + ".tar.gz")
	if err != nil {
		return fmt.Errorf("error retrieving embedded vmnet file: %w", err)
	}

	// write tar to tmp directory
	f, err := os.CreateTemp("", "vmnet.tar.gz")
	if err != nil {
		return fmt.Errorf("error creating temp file: %w", err)
	}
	if _, err := f.Write(gz); err != nil {
		return fmt.Errorf("error writing temp file: %w", err)
	}
	_ = f.Close() // not a fatal error

	defer func() {
		_ = os.Remove(f.Name())
	}()

	// extract tar to desired location
	dir := optDir

View on GitHub (pinned to c3a5f9184d)

Solutions

  1. use an official release or brew install colima instead of a custom build
  2. rebuild from a complete checkout: `git status embedded/` must show network/vmnet_arm64.tar.gz and network/vmnet_x86_64.tar.gz present
  3. if packaging, ensure both arch tarballs ship into the build context before go build

Example fix

// before: pruned tree
$ rm embedded/network/vmnet_arm64.tar.gz && go build ./cmd/colima   // build succeeds
$ ./colima start --network-address
error occurred installing dependencies for 'vmnet': error retrieving embedded vmnet file: open network/vmnet_arm64.tar.gz: file does not exist

// after
$ git checkout -- embedded/network   // restore assets, rebuild
Defensive patterns

Strategy: validation

Validate before calling

// build-time smoke test in your packaging pipeline
func TestEmbeddedVmnetPresent(t *testing.T) {
    for _, f := range []string{"network/vmnet_x86_64.tar.gz", "network/vmnet_arm64.tar.gz"} {
        if _, err := embedded.Read(f); err != nil {
            t.Fatalf("embedded asset missing: %v", err)
        }
    }
}

Try / catch

if _, err := embedded.Read("network/vmnet_" + arch + ".tar.gz"); err != nil {
    // binary built from incomplete tree — do not retry; rebuild from full checkout
    return fmt.Errorf("error retrieving embedded vmnet file: %w", err)
}

Prevention

When it happens

Trigger: custom `go build` from a pruned/partial checkout missing embedded/network/vmnet_*.tar.gz; packaging pipelines (docker/nix archives without git LFS-style assets) that strip the embedded directory; cross-compiled binaries where the other arch's tarball was removed.

Common situations: building colima from a source tarball that excluded binaries; distro packaging that prunes .tar.gz files; unusual GOARCH values resolving to an arm64 asset that was deleted.

Related errors


AI-assisted analysis of abiosoft/colima@c3a5f9184d (2026-08-15). Data as JSON: /api/errors/9fc695d5eee46590. Report an issue: GitHub.