{"record":{"id":"b54076916f2c0c2b","repo":"jdx/mise","slug":"tv-style-install-path-does-not-exist-install-p","errorCode":null,"errorMessage":"{tv.style} install path does not exist: {install_path.display}. Run `mise install` first.","messagePattern":"(.+?) install path does not exist: (.+?)\\. Run `mise install` first\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/oci/builder.rs","lineNumber":334,"sourceCode":"        // host-native binaries. Warning on reused-only pushes (the CI re-push\n        // the reuse feature speeds up) would be a false alarm.\n        let built_tool_count = tool_reuse.iter().filter(|r| r.is_none()).count();\n        if built_tool_count > 0 && std::env::consts::OS != \"linux\" {\n            warn!(\n                \"building on {host} host — {n} tool layer(s) contain {host} binaries that \\\n                 will fail with `Exec format error` inside a linux container. Run \\\n                 `mise oci build` on a linux host (or in a linux container) for a working image.\",\n                host = std::env::consts::OS,\n                n = built_tool_count\n            );\n        }\n        for (i, (_, tv)) in versions.iter().enumerate() {\n            if tool_reuse[i].is_some() {\n                continue; // layer comes from the cache image; no install needed\n            }\n            let install_path = tv.install_path();\n            if !install_path.is_dir() {\n                bail!(\n                    \"{} install path does not exist: {}. Run `mise install` first.\",\n                    tv.style(),\n                    install_path.display()\n                );\n            }\n        }\n\n        // --- 3. System package layer (optional) ---\n        let system_packages_layer = packages::build_system_packages_layer(\n            &layout,\n            &base_layers,\n            &self.system_packages,\n            platform\n                .as_ref()\n                .map(|p| p.architecture.as_str())\n                .unwrap_or_else(|| crate::oci::normalize_arch(std::env::consts::ARCH)),\n        )?;\n","sourceCodeStart":316,"sourceCodeEnd":352,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/oci/builder.rs#L316-L352","documentation":"Before baking tools into an OCI image layer, mise verifies that each tool version's local install directory (`tv.install_path()`) actually exists. Tools are copied from the host filesystem into image layers, so if the tool was never installed on this machine the build cannot proceed; the message tells you to run `mise install` first.","triggerScenarios":"Running an OCI image build (`mise oci`/`send` flow) with tools listed in config that are pinned in mise.toml but not yet installed locally — e.g. after cloning a repo and building an image without installing tools, or after the install directory was deleted.","commonSituations":"Fresh checkout/CI container where `mise install` was skipped; MISE_DATA_DIR pointing somewhere else than where tools were installed; a cache-image layer-miss (`tool_reuse[i]` is None) for a tool that was assumed cached; tools installed under a different version than requested.","solutions":["Run `mise install` to install all configured tool versions locally, then retry the build.","Check `mise ls` for missing tools and install the exact version the image build expects.","Verify MISE_DATA_DIR / install path settings match where your tools actually live.","If the tool was supposed to come from the cache image, ensure the cache image is present/correct so the layer is reused instead of requiring a local install."],"exampleFix":"# before: build image right after cloning\nmise oci build\n# error: install path does not exist\n# after\nmise install && mise oci build","handlingStrategy":"validation","validationCode":"mise ls --json | jq -e '.[] | select(.installed == false) | .version' \\\n  && { echo 'run mise install first'; exit 1; } || true","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run `mise install` as a prerequisite step in CI/entrypoints before any OCI image build.","Add `mise install` to post-clone setup hooks.","Verify `mise ls` shows all configured tools installed before building images.","Ensure MISE_DATA_DIR is consistent between the install step and the build step."],"tags":["mise","tools","install","oci"],"backgroundTag":"file-not-found","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}