Ubuntu 22.04でLazyVimのtree-sitterがGLIBC_2.39エラーで動かない場合の対処法
/ 2 min read
Table of Contents
はじめに
Ubuntu 22.04 LTS 上で LazyVim を起動したとき、以下のようなエラーメッセージが表示されることがあります。
[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 のパッケージマネージャ)が必要です。未インストールの場合は以下のコマンドでインストールします。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shsource $HOME/.cargo/env2. libclang-dev のインストール
cargo install tree-sitter-cliを実行すると、依存クレートrquickjs-sysのビルド時にbindgenがlibclangを必要とします。これがシステムに存在しないと以下のエラーが発生します。
Unable to find libclang: "couldn't find any valid shared libraries matching:['libclang.so', 'libclang-*.so', 'libclang.so.*', 'libclang-*.so.*']"libclang-devをインストールすることで解決します。
sudo apt install libclang-dev3. tree-sitter-cli のビルド&インストール
cargo install tree-sitter-cliビルドが成功したら、正しくインストールされているか確認します。
which tree-sitter# → /home/<user>/.cargo/bin/tree-sitter
tree-sitter --version4. Neovim でパーサーを再インストール
Neovim を起動し、パーサーを再インストールします。
:TSUninstall all:TSInstall all特定の言語だけで十分な場合は:TSInstall lua pythonのように個別指定でも構いません。
以上で、LazyVim 起動時の GLIBC バージョン不一致エラーが解消されます。