{"record":{"id":"682442e971f5760c","repo":"oraios/serena","slug":"ccls-is-not-installed-on-your-system-please-insta","errorCode":null,"errorMessage":"ccls is not installed on your system.\nPlease install ccls using your system package manager:\n  Linux (Ubuntu/Debian): sudo apt-get install ccls\n  Linux (Fedora/RHEL):   sudo dnf install ccls\n  Linux (Arch):          sudo pacman -S ccls\n  macOS (Homebrew):      brew install ccls\n  Windows:               choco install ccls\n\nFor build instructions and more details, see:\nhttps://github.com/MaskRay/ccls/wiki/Build","messagePattern":"ccls is not installed on your system\\.\nPlease install ccls using your system package manager:\n  Linux \\(Ubuntu/Debian\\): sudo apt-get install ccls\n  Linux \\(Fedora/RHEL\\):   sudo dnf install ccls\n  Linux \\(Arch\\):          sudo pacman -S ccls\n  macOS \\(Homebrew\\):      brew install ccls\n  Windows:               choco install ccls\n\nFor build instructions and more details, see:\nhttps://github\\.com/MaskRay/ccls/wiki/Build","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/solidlsp/language_servers/ccls_language_server.py","lineNumber":88,"sourceCode":"    @override\n    def is_ignored_dirname(self, dirname: str) -> bool:\n        return (\n            super().is_ignored_dirname(dirname)\n            or dirname == \".ccls-cache\"\n            or (is_unreal_engine_project(self.repository_root_path) and dirname in UE_IGNORED_DIRNAMES)\n        )\n\n    class DependencyProvider(LanguageServerDependencyProviderSinglePath):\n        def _get_or_install_core_dependency(self) -> str:\n            \"\"\"\n            Resolve ccls path from system or raise helpful error if missing.\n            Allows override via ls_specific_settings[language].ls_path.\n            \"\"\"\n            import shutil\n\n            ccls_path = shutil.which(\"ccls\")\n            if not ccls_path:\n                raise FileNotFoundError(\n                    \"ccls is not installed on your system.\\n\"\n                    \"Please install ccls using your system package manager:\\n\"\n                    \"  Linux (Ubuntu/Debian): sudo apt-get install ccls\\n\"\n                    \"  Linux (Fedora/RHEL):   sudo dnf install ccls\\n\"\n                    \"  Linux (Arch):          sudo pacman -S ccls\\n\"\n                    \"  macOS (Homebrew):      brew install ccls\\n\"\n                    \"  Windows:               choco install ccls\\n\\n\"\n                    \"For build instructions and more details, see:\\n\"\n                    \"  https://github.com/MaskRay/ccls/wiki/Build\"\n                )\n            log.info(f\"Using system-installed ccls at {ccls_path}\")\n            return ccls_path\n\n        def _create_launch_command(self, core_path: str) -> list[str]:\n            return [core_path]\n\n    def _create_base_initialize_params(self) -> dict:\n        \"\"\"","sourceCodeStart":70,"sourceCodeEnd":106,"githubUrl":"https://github.com/oraios/serena/blob/7fcbca7e62555ec2287ddb2f083caee805848ea6/src/solidlsp/language_servers/ccls_language_server.py#L70-L106","documentation":"_get_or_install_core_dependency raises FileNotFoundError because ccls has no managed prebuilt install: the library relies on a system-installed ccls binary and throws this instructive error when shutil.which('ccls') finds nothing. A ls_path override in ls_specific_settings can bypass the PATH lookup.","triggerScenarios":"Starting the CCLS language server for C/C++ when `ccls` is not resolvable on PATH and no ls_specific_settings[language].ls_path override is configured.","commonSituations":"ccls not installed (it is not in default repos on many distros); installed via source/brew into a directory not on the server process's PATH; running inside a container without ccls; PATH differences between the IDE and the shell.","solutions":["Install ccls via the system package manager (apt/dnf/pacman/brew/choco as listed in the message)","Set ls_specific_settings[<language>].ls_path to the full path of a ccls binary you built or downloaded","Ensure the install location is on PATH for the process running the language server (`which ccls` to verify)","Reconnect/restart the server after installing so the PATH check re-runs"],"exampleFix":"// before\n# no ccls on PATH -> FileNotFoundError\n// after\nsudo apt-get install ccls\n# or, with a custom build:\n{\"ls_specific_settings\": {\"cpp\": {\"ls_path\": \"/opt/ccls/bin/ccls\"}}}","handlingStrategy":"validation","validationCode":"import shutil\nassert shutil.which(\"ccls\"), \"Install ccls (apt/dnf/pacman/brew/choco) or set ls_specific_settings[<lang>].ls_path before starting the CCLS server\"","typeGuard":null,"tryCatchPattern":"try:\n    server = CCLSLanguageServer(...)\nexcept FileNotFoundError as e:\n    if \"ccls is not installed\" in str(e):\n        raise SystemExit(\"Install ccls via your package manager, or point ls_path at an existing binary\")\n    raise","preventionTips":["Install ccls up front on dev machines and CI images","Set ls_specific_settings ls_path when using a custom-built ccls","Verify `which ccls` in the exact environment that launches Serena"],"tags":["ccls","path","installation","cpp","dependency-missing"],"backgroundTag":"required-executable-not-on-path","analyzedSha":"7fcbca7e62555ec2287ddb2f083caee805848ea6","analyzedAt":"2026-08-29T00:04:09.619Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}