{"record":{"id":"bfa3e00483ea38fa","repo":"ipfs/kubo","slug":"s-not-installed","errorCode":null,"errorMessage":"%s not installed","messagePattern":"(.+?) not installed","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/commands/external.go","lineNumber":36,"sourceCode":"\t\t},\n\t\tExternal: true,\n\t\tNoRemote: true,\n\t\tRun: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {\n\t\t\tbinname := strings.Join(append([]string{\"ipfs\"}, req.Path...), \"-\")\n\t\t\t_, err := exec.LookPath(binname)\n\t\t\tif err != nil {\n\t\t\t\t// special case for '--help' on uninstalled binaries.\n\t\t\t\tfor _, arg := range req.Arguments {\n\t\t\t\t\tif arg == \"--help\" || arg == \"-h\" {\n\t\t\t\t\t\tbuf := new(bytes.Buffer)\n\t\t\t\t\t\tfmt.Fprintf(buf, \"%s is an 'external' command.\\n\", binname)\n\t\t\t\t\t\tfmt.Fprintf(buf, \"It does not currently appear to be installed.\\n\")\n\t\t\t\t\t\tfmt.Fprintf(buf, \"%s\\n\", instructions)\n\t\t\t\t\t\treturn res.Emit(buf)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn fmt.Errorf(\"%s not installed\", binname)\n\t\t\t}\n\n\t\t\tr, w := io.Pipe()\n\n\t\t\tcmd := exec.Command(binname, req.Arguments...)\n\n\t\t\t// TODO: make commands lib be able to pass stdin through daemon\n\t\t\t// cmd.Stdin = req.Stdin()\n\t\t\tcmd.Stdin = io.LimitReader(nil, 0)\n\t\t\tcmd.Stdout = w\n\t\t\tcmd.Stderr = w\n\n\t\t\t// setup env of child program\n\t\t\tosenv := os.Environ()\n\n\t\t\tcmd.Env = osenv\n\n\t\t\terr = cmd.Start()","sourceCodeStart":18,"sourceCodeEnd":54,"githubUrl":"https://github.com/ipfs/kubo/blob/329838acdfafae224582930457efe80aa217afc0/core/commands/external.go#L18-L54","documentation":"An 'external' ipfs subcommand (e.g. ipfs-companion-installed tools like ipfs-bitswap-monitor) was invoked, but exec.LookPath could not find the corresponding ipfs-<subcommand> binary on PATH. %s is the missing binary name; kubo only ships the dispatcher, the tool itself must be installed separately.","triggerScenarios":"Thrown at core/commands/external.go:36 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Install the external tool so that ipfs-<name> is on PATH","Check PATH includes the install location (e.g. GOBIN)","Run 'ipfs <name> --help' to see the install instructions embedded in the error output"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}