{"record":{"id":"1c29eeda5b0a4b20","repo":"oraios/serena","slug":"r-languageserver-package-is-not-installed-install","errorCode":null,"errorMessage":"R languageserver package is not installed.\nInstall it with: R -e \"install.packages('languageserver')\"","messagePattern":"R languageserver package is not installed\\.\nInstall it with: R -e \"install\\.packages\\('languageserver'\\)\"","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"src/solidlsp/language_servers/r_language_server.py","lineNumber":50,"sourceCode":"    @staticmethod\n    def _check_r_installation() -> None:\n        \"\"\"Check if R and languageserver are available.\"\"\"\n        try:\n            # Check R installation\n            result = subprocess_run([\"R\", \"--version\"], capture_output=True, text=True, check=False)\n            if result.returncode != 0:\n                raise RuntimeError(\"R is not installed or not in PATH\")\n\n            # Check languageserver package\n            result = subprocess_run(\n                [\"R\", \"--vanilla\", \"--quiet\", \"--slave\", \"-e\", \"if (!require('languageserver', quietly=TRUE)) quit(status=1)\"],\n                capture_output=True,\n                text=True,\n                check=False,\n            )\n\n            if result.returncode != 0:\n                raise RuntimeError(\n                    \"R languageserver package is not installed.\\nInstall it with: R -e \\\"install.packages('languageserver')\\\"\"\n                )\n\n        except FileNotFoundError:\n            raise RuntimeError(\"R is not installed. Please install R from https://www.r-project.org/\")\n\n    def __init__(self, config: LanguageServerConfig, repository_root_path: str, solidlsp_settings: SolidLSPSettings):\n        # Check R installation\n        self._check_r_installation()\n\n        # R command to start language server\n        # Use --vanilla for minimal startup and --quiet to suppress all output except LSP\n        # Set specific options to improve parsing stability\n        r_cmd = 'R --vanilla --quiet --slave -e \"options(languageserver.debug_mode = FALSE); languageserver::run()\"'\n\n        super().__init__(config, repository_root_path, ProcessLaunchInfo(cmd=r_cmd, cwd=repository_root_path), \"r\", solidlsp_settings)\n\n    def _create_base_initialize_params(self) -> dict:","sourceCodeStart":32,"sourceCodeEnd":68,"githubUrl":"https://github.com/oraios/serena/blob/7fcbca7e62555ec2287ddb2f083caee805848ea6/src/solidlsp/language_servers/r_language_server.py#L32-L68","documentation":"After confirming `R` runs, `_check_r_installation()` starts `R` in vanilla slave mode and checks whether the `languageserver` package can be `require()`d. A non-zero quit status means the package is absent for that R library path, so the wrapper raises this RuntimeError with the exact install command.","triggerScenarios":"Constructing the R language server when R is installed but `require('languageserver')` fails inside `R --vanilla --quiet --slave`: languageserver never installed, or installed only in a user/other library not visible in the current environment.","commonSituations":"Fresh CI machines with base R but no packages; languageserver installed in a user library while running as another user (e.g. root in Docker) whose `.libPaths` differ; using a conda R that has its own separate package library.","solutions":["Run `R -e \"install.packages('languageserver')\"` in the same R that `which R` resolves to","If installing system-wide is needed, start R as root or use a site library: `sudo R -e \"install.packages('languageserver', lib='/usr/local/lib/R/site-library')\"`","Verify with `R -e \"if (!require('languageserver', quietly=TRUE)) quit(status=1)\"` that it now exits 0; check `.libPaths()` if it still fails"],"exampleFix":"# before\n$ R -e \"require('languageserver')\"  # there is no package called 'languageserver'\n\n# after\n$ R -e \"install.packages('languageserver')\"\n$ R -e \"require('languageserver')\"  # loads OK","handlingStrategy":"validation","validationCode":"import subprocess\ncode = \"if (!require('languageserver', quietly=TRUE)) quit(status=1)\"\nprobe = subprocess.run([\"R\", \"--vanilla\", \"--quiet\", \"--slave\", \"-e\", code], capture_output=True)\nif probe.returncode != 0:\n    subprocess.run([\"R\", \"-e\", \"install.packages('languageserver')\"], check=True)","typeGuard":"def has_r_languageserver() -> bool:\n    return subprocess.run(\n        [\"R\", \"--vanilla\", \"--quiet\", \"--slave\", \"-e\",\n         \"if (!require('languageserver', quietly=TRUE)) quit(status=1)\"],\n        capture_output=True, check=False,\n    ).returncode == 0","tryCatchPattern":"try:\n    server = RLanguageServer(config, repo_root, settings)\nexcept RuntimeError as e:\n    if \"languageserver package is not installed\" in str(e):\n        subprocess.run([\"R\", \"-e\", \"install.packages('languageserver')\"], check=True)\n        server = RLanguageServer(config, repo_root, settings)\n    else:\n        raise","preventionTips":["Bake `install.packages('languageserver')` into Dockerfiles/CI setup steps","Install into a site-wide library so all users/processes share the same .libPaths","Re-run the `require` probe after R upgrades, since package libraries are version-specific"],"tags":["r","missing-package","environment","runtime"],"backgroundTag":"missing-dependency","analyzedSha":"7fcbca7e62555ec2287ddb2f083caee805848ea6","analyzedAt":"2026-08-29T00:04:09.619Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}