在 Ubuntu 18.04 (WSL) 上配置 LazyVim

在 Ubuntu 18.04 (WSL) 上配置 LazyVim 的终极指南:解决 GLIBC 和 Tree-sitter 依赖难题

前言

在 Ubuntu 18.04 这种"古董"系统上安装现代化的 Neovim 配置(如 LazyVim)是一场噩梦。

LazyVim 要求 Neovim >= 0.10,而 Ubuntu 18.04 的 apt 源里只有 0.6 版本。更糟糕的是,系统底层的 glibc 版本仅为 2.27,导致官方的 AppImage 无法运行,最新的 tree-sitter 编译工具也会直接报错退出。

经过一番折腾,我总结出了一套绕过系统限制的完美方案:使用 Homebrew 管理软件包,并手动降级编译 Tree-sitter。

核心思路

  1. 放弃 apt 和 Snap:系统源太老,Snap 在 WSL 容器中常有服务连接问题。
  2. 使用 Homebrew (Linuxbrew):它自带较新的编译链,能安装最新版 Neovim 和工具。
  3. 降级 Tree-sitter-cli:这是最关键的一步,手动编译一个兼容老系统的版本。

第一步:安装 Homebrew

既然系统自带的库太老,我们就用 Homebrew 来接管软件包管理。

bash 复制代码
# 1. 安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 2. 配置环境变量 (根据安装结束时的提示,将以下内容加入 ~/.bashrc)
(echo; echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"') >> ~/.bashrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"

# 3. 验证安装
brew --version

第二步:安装 Neovim 及必备工具

LazyVim 依赖很多外部工具(搜索、Git 管理、LSP 环境)。使用 Brew 一键安装,避免版本不兼容。

bash 复制代码
# 安装 Neovim 以及 LazyVim 依赖的工具
brew install neovim ripgrep fd lazygit git gcc node

# 验证 Neovim 版本 (必须 >= 0.9.0)
nvim --version

第三步:解决 Tree-sitter 的 GLIBC 报错 (关键!)

这是最容易卡住的地方。LazyVim 的插件会自动下载最新版的 tree-sitter-cli (v0.25+),但这个版本需要 GLIBC 2.29+ 和复杂的 C++ 依赖,在 Ubuntu 18.04 上无法运行,会导致代码没有高亮。

解决方案: 使用 Rust 手动编译一个旧版本 (v0.22.6),这个版本对老系统兼容性最好。

1. 安装 Rust 环境

bash 复制代码
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

2. 编译兼容版 Tree-sitter

bash 复制代码
# 指定安装 v0.22.6 版本
cargo install tree-sitter-cli --version 0.22.6

3. 偷梁换柱:强制 Neovim 使用我们编译的版本

为了防止 LazyVim 的包管理器 (Mason) 自动下载坏掉的新版本,我们需要建立软链接,"欺骗"Neovim。

bash 复制代码
# 1. 创建目录结构
mkdir -p ~/.local/share/nvim/mason/bin

# 2. 删除可能已经存在的坏文件
rm -f ~/.local/share/nvim/mason/bin/tree-sitter

# 3. 建立软链接 (指向 Cargo 编译的好文件)
ln -sf ~/.cargo/bin/tree-sitter ~/.local/share/nvim/mason/bin/tree-sitter

# 4. 验证 (确保显示 0.22.6 且不报错)
~/.local/share/nvim/mason/bin/tree-sitter --version

第四步:安装 LazyVim

环境准备好后,安装 LazyVim 就很简单了。

bash 复制代码
# 1. 备份旧配置 (如果有)
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak

# 2. 克隆 LazyVim 模版
git clone https://github.com/LazyVim/starter ~/.config/nvim

# 3. 移除模版的 .git 目录
rm -rf ~/.config/nvim/.git

第五步:收尾工作 (Locale 和字体)

1. 修复 Locale (解决乱码/方框问题)

如果打开 Neovim 发现图标显示异常或报错 Locale does not support UTF-8,执行以下命令:

bash 复制代码
# 安装语言包
sudo apt-get install -y locales
sudo locale-gen en_US.UTF-8

# 在 ~/.bashrc 中添加环境变量
echo 'export LANG=en_US.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc

# 使配置生效
source ~/.bashrc

2. 字体设置

确保你本地电脑 (Windows/Mac)的终端模拟器使用的是 Nerd Font (推荐 JetBrainsMono Nerd Font),否则图标会显示为乱码。


验证与完成

打开终端,输入 nvim

  1. LazyVim 会自动拉取插件。
  2. 输入 :TSUpdate,如果底部进度条正常走动,且没有弹出 GLIBC 错误,说明 Tree-sitter 修复成功。
  3. <Space> 键,应该能看到漂亮的菜单弹出。

虽然 :checkhealth 可能会警告 tree-sitter-cli v0.25.0 is required,但只要代码高亮正常,完全可以忽略这个警告。

至此,你已经成功在 Ubuntu 18.04 上拥有了最新、最强、最快的 Neovim 体验!

相关推荐
optimistic_chen1 天前
【Redis系列】Java操作Redis客户端
java·linux·redis·客户端·服务端
Tfly__1 天前
Ubuntu20.04安装Genesis(最新)
linux·人工智能·pytorch·ubuntu·github·无人机·强化学习
比奇堡派星星1 天前
如何新加netlink
linux·驱动开发
济6171 天前
linux(第十二期)--裸机实验(C 语言版 LED 灯实验)-- Ubuntu20.04
linux·c语言
羑悻的小杀马特1 天前
【Linux篇章】穿越网络迷雾:揭开 HTTP 应用层协议的终极奥秘!从请求响应到实战编程,从静态网页到动态交互,一文带你全面吃透并征服 HTTP 协议,打造属于你的 Web 通信利刃!
linux·运维·网络·http·操作系统·网络通信
网安CILLE1 天前
Linux 命令大全(网络安全常用)
linux·运维·服务器·网络安全
CodeOfCC1 天前
flutter-elinux 编译linux arm64程序
linux·flutter
pas1361 天前
18-mini-vue element
前端·vue.js·ubuntu
米高梅狮子1 天前
7. Linux RAID 存储技术
linux·运维·服务器