oraios/serena · error · RuntimeError
R languageserver package is not installed. Install it with:
Error message
R languageserver package is not installed.
Install it with: R -e "install.packages('languageserver')" What it means
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.
Source
Thrown at src/solidlsp/language_servers/r_language_server.py:50
@staticmethod
def _check_r_installation() -> None:
"""Check if R and languageserver are available."""
try:
# Check R installation
result = subprocess_run(["R", "--version"], capture_output=True, text=True, check=False)
if result.returncode != 0:
raise RuntimeError("R is not installed or not in PATH")
# Check languageserver package
result = subprocess_run(
["R", "--vanilla", "--quiet", "--slave", "-e", "if (!require('languageserver', quietly=TRUE)) quit(status=1)"],
capture_output=True,
text=True,
check=False,
)
if result.returncode != 0:
raise RuntimeError(
"R languageserver package is not installed.\nInstall it with: R -e \"install.packages('languageserver')\""
)
except FileNotFoundError:
raise RuntimeError("R is not installed. Please install R from https://www.r-project.org/")
def __init__(self, config: LanguageServerConfig, repository_root_path: str, solidlsp_settings: SolidLSPSettings):
# Check R installation
self._check_r_installation()
# R command to start language server
# Use --vanilla for minimal startup and --quiet to suppress all output except LSP
# Set specific options to improve parsing stability
r_cmd = 'R --vanilla --quiet --slave -e "options(languageserver.debug_mode = FALSE); languageserver::run()"'
super().__init__(config, repository_root_path, ProcessLaunchInfo(cmd=r_cmd, cwd=repository_root_path), "r", solidlsp_settings)
def _create_base_initialize_params(self) -> dict:View on GitHub (pinned to 7fcbca7e62)
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
Example fix
# before
$ R -e "require('languageserver')" # there is no package called 'languageserver'
# after
$ R -e "install.packages('languageserver')"
$ R -e "require('languageserver')" # loads OK Defensive patterns
Strategy: validation
Validate before calling
import subprocess
code = "if (!require('languageserver', quietly=TRUE)) quit(status=1)"
probe = subprocess.run(["R", "--vanilla", "--quiet", "--slave", "-e", code], capture_output=True)
if probe.returncode != 0:
subprocess.run(["R", "-e", "install.packages('languageserver')"], check=True) Type guard
def has_r_languageserver() -> bool:
return subprocess.run(
["R", "--vanilla", "--quiet", "--slave", "-e",
"if (!require('languageserver', quietly=TRUE)) quit(status=1)"],
capture_output=True, check=False,
).returncode == 0 Try / catch
try:
server = RLanguageServer(config, repo_root, settings)
except RuntimeError as e:
if "languageserver package is not installed" in str(e):
subprocess.run(["R", "-e", "install.packages('languageserver')"], check=True)
server = RLanguageServer(config, repo_root, settings)
else:
raise Prevention
- 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
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- R is not installed or not in PATH
- R is not installed. Please install R from https://www.r-proj
- dotnet not found on the system
- Cannot apply setup for client '{client}' (not found or not f
- Required .NET runtime version {self._required_version_str} n
AI-assisted analysis of oraios/serena@7fcbca7e62 (2026-08-29).
Data as JSON: /api/errors/1c29eeda5b0a4b20.
Report an issue: GitHub.