skip to content
barorin&

Ubuntu 22.04でLazyVimのtree-sitterがGLIBC_2.39エラーで動かない場合の対処法

/ 2 min read

Table of Contents

はじめに

Ubuntu 22.04 LTS 上で LazyVim を起動したとき、以下のようなエラーメッセージが表示されることがあります。

Terminal window
[nvim-treesitter/install/vim] error: Error during "tree-sitter build":
tree-sitter: /lib/x86_64-linux-gnu/libc.so.6: version`GLIBC_2.39' not found
(required by tree-sitter)

これは、配布済みのtree-sitterバイナリがGLIBC 2.39を前提にビルドされているのに対し、Ubuntu 22.04のGLIBCバージョンが2.35どまりであることが原因です。バイナリをそのまま使うことができないため、ソースからビルドして対応します。

解決策

1. Rust / cargo のインストール

tree-sitter-cliをソースからビルドするためにcargo(Rust のパッケージマネージャ)が必要です。未インストールの場合は以下のコマンドでインストールします。

Terminal window
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

2. libclang-dev のインストール

cargo install tree-sitter-cliを実行すると、依存クレートrquickjs-sysのビルド時にbindgenlibclangを必要とします。これがシステムに存在しないと以下のエラーが発生します。

Terminal window
Unable to find libclang: "couldn't find any valid shared libraries matching:
['libclang.so', 'libclang-*.so', 'libclang.so.*', 'libclang-*.so.*']"

libclang-devをインストールすることで解決します。

Terminal window
sudo apt install libclang-dev

3. tree-sitter-cli のビルド&インストール

Terminal window
cargo install tree-sitter-cli

ビルドが成功したら、正しくインストールされているか確認します。

Terminal window
which tree-sitter
# → /home/<user>/.cargo/bin/tree-sitter
tree-sitter --version

4. Neovim でパーサーを再インストール

Neovim を起動し、パーサーを再インストールします。

Terminal window
:TSUninstall all
:TSInstall all

特定の言語だけで十分な場合は:TSInstall lua pythonのように個別指定でも構いません。

以上で、LazyVim 起動時の GLIBC バージョン不一致エラーが解消されます。