{"record":{"id":"63aee9ad7073d0ce","repo":"oraios/serena","slug":"elixir-is-not-installed-please-install-elixir-fro","errorCode":null,"errorMessage":"Elixir is not installed. Please install Elixir from https://elixir-lang.org/install.html and make sure it is added to your PATH.","messagePattern":"Elixir is not installed\\. Please install Elixir from https://elixir-lang\\.org/install\\.html and make sure it is added to your PATH\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"src/solidlsp/language_servers/elixir_tools/elixir_tools.py","lineNumber":85,"sourceCode":"            result = subprocess_run([\"elixir\", \"--version\"], capture_output=True, text=True, check=False)\n            if result.returncode == 0:\n                return result.stdout.strip()\n        except FileNotFoundError:\n            return None\n        return None\n\n    @classmethod\n    def _setup_runtime_dependencies(cls, config: LanguageServerConfig, solidlsp_settings: SolidLSPSettings) -> str:\n        \"\"\"\n        Setup runtime dependencies for Expert.\n        Downloads the Expert binary for the current platform and returns the path to the executable.\n        \"\"\"\n        elixir_settings = solidlsp_settings.get_ls_specific_settings(LanguageServerId.ELIXIR)\n        expert_version = elixir_settings.get(\"expert_version\", EXPERT_VERSION)\n        # Check if Elixir is available first\n        elixir_version = cls._get_elixir_version()\n        if not elixir_version:\n            raise RuntimeError(\n                \"Elixir is not installed. Please install Elixir from https://elixir-lang.org/install.html and make sure it is added to your PATH.\"\n            )\n\n        log.info(f\"Found Elixir: {elixir_version}\")\n\n        # First, check if expert is already in PATH (user may have installed it manually)\n        import shutil\n\n        expert_in_path = shutil.which(\"expert\")\n        if expert_in_path:\n            log.info(f\"Found Expert in PATH: {expert_in_path}\")\n            return expert_in_path\n\n        platform_id = PlatformUtils.get_platform_id()\n\n        valid_platforms = [\n            PlatformId.LINUX_x64,\n            PlatformId.LINUX_arm64,","sourceCodeStart":67,"sourceCodeEnd":103,"githubUrl":"https://github.com/oraios/serena/blob/7fcbca7e62555ec2287ddb2f083caee805848ea6/src/solidlsp/language_servers/elixir_tools/elixir_tools.py#L67-L103","documentation":"ElixirTool's runtime setup requires the Elixir toolchain (elixir executable) on PATH before it can build/install its 'expert' language server dependency. When elixir cannot be found or executed, _setup_runtime_dependencies raises RuntimeError telling you to install Elixir and add it to PATH.","triggerScenarios":"Instantiating the Elixir language server (via __init__ during LanguageServer.create) on a machine where the `elixir` command is absent from PATH or fails to report a version.","commonSituations":"Fresh machines/containers with only Erlang installed; Elixir installed via asdf/mise but the shim not activated in the shell Serena runs in; PATH differing between interactive shell and the process launching Serena.","solutions":["Install Elixir from https://elixir-lang.org/install.html (e.g., apt install elixir, brew install elixir, or asdf/mise)","Verify with: elixir --version (must run in the same environment that launches Serena)","Ensure the Elixir bin directory is on PATH for the process running Serena (export PATH=...), including IDE-launched sessions","If using asdf/mise, run the shim setup so non-interactive shells resolve elixir"],"exampleFix":"// before (PATH without elixir)\n$ which elixir   # nothing\n// after\n$ export PATH=\"$HOME/.asdf/shims:$PATH\"\n$ elixir --version\nElixir 1.16.2\n","handlingStrategy":"validation","validationCode":"import shutil, subprocess\ndef elixir_available() -> bool:\n    return shutil.which(\"elixir\") is not None and subprocess.run(\n        [\"elixir\", \"--version\"], capture_output=True\n    ).returncode == 0","typeGuard":"def has_elixir() -> bool:\n    import shutil\n    return shutil.which(\"elixir\") is not None","tryCatchPattern":"try:\n    server = LanguageServer.create(LanguageServerId.ELIXIR, ...)\nexcept RuntimeError as e:\n    if \"Elixir is not installed\" in str(e):\n        install_elixir_and_extend_path()  # then retry","preventionTips":["Run `elixir --version` in environment bootstrap for dev containers","Ensure asdf/mise shims are on PATH for IDE-launched processes","Pin Elixir in Dockerfiles and CI images","Keep PATH consistent between interactive shells and Serena's launcher"],"tags":["elixir","missing-dependency","path","environment-setup"],"backgroundTag":"missing-dependency-on-path","analyzedSha":"7fcbca7e62555ec2287ddb2f083caee805848ea6","analyzedAt":"2026-08-29T00:04:09.619Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}