😭

LazyVim導入でLua5.1のためにちょっと対応した

2024/07/20に公開3

NeoVimに移行する機会を伺っていたらLazyVimが楽だと聞いてやってみたが、ちょっと対応が必要だったのでメモ

困りごと

  1. 公式のインストールに従って、:LazyHealthを実行するとLua関係のWaring, Errorが出る(詳細を残すのは忘れた)
  2. とりあえずbrewでインストールする
  3. 再度:LazyHealthを実行するとLua5.1を使ってくださいとのWaring(詳細を残すのは忘れた)
  4. brewでバージョン指定してダウンロードする方法を調べてやってみるがLua5.1はDeprecatedだった
  5. (Lua5.1を手元でビルドしてLuaRocksで指定して〜とか頑張ったがうまくいかないなどもあった)

解決方法

概要

Lua5.1もLuaRocksも手元でビルドする、LuaRocksをビルドする際には先に用意したLua5.1を指定する

詳細

  1. brewで入れちゃってたらアンインストールしておく
  2. ダウンロードする、curlでうまくできなかったのでブラウザでやった(敗北)
  3. Lua5.1をビルドする
tar -xvzf Lua\ 5.1.5.tar.gz
cd lua-5.1.5 # 厳密には違うかも
make macosx
sudo make install
# 確認
lua -v
  1. LuaRocksをビルドする
    • 確認は:LazyHealthでやる
tar xvzf Luarocks\ 3.9.2.tar.gz
cd luarocks-3.9.2
# それぞれのpathはLua5.1をビルドしたときにでたやつにする
./configure --with-lua-include=/usr/local/include --with-lua-bin=/usr/local/bin/
make
sudo make install

Discussion

hydeikhydeik

Neovim に組込まれている Lua runtime は高速化のために LuaJIT が利用されています。
上記のWarning, Error は LuaJIT が Lua5.1 互換であることに起因するものです。

macOS で homebrew を利用されてるのでしたら、

brew install luajit

で利用できるはずです。

sh05sh05

ありがとうございます!手元で試してみてから更新しようと思います.

sh05sh05

ご説明していただいたことは理解しました.
ただLazyHealthの出力は下記の通りになったので本ページの内容としては変更なしにしようと思います.

luarocks ~
- checking `luarocks` installation
- OK no plugins require `luarocks`, so you can ignore any warnings below
- OK {luarocks} `/usr/local/bin/luarocks 3.11.1`
- WARNING `lua` version `5.1` needed, but found `LuaJIT 2.1.1720049189 -- Copyright (C) 2005-2023 Mike Pall. https://luajit.org/`
- WARNING {lua5.1} or {lua} or {lua-5.1} version `5.1` not installed

やったことは下記の通りです.

  1. brewでluajitを入れる

  2. brewでluarocksを入れる

    • luarocksの依存でlua5.4がインストールされているため,この時点ではLazyHealthではlua5.4を検出してしまう
  3. luajitのディレクトリにPATH, LUA_PATH, LUA_CPATHを通す

    • luaの知識がないので調べつつやっており自信はありません

ご指摘ありがとうございました🙇