mieki256's diary



2021/06/18(金) [n年前の日記]

#1 [lua] luarocksを使おうとしてハマった

Luaを使った実験をしたくなって、Windows10 x64 20H2上で luarocks をインストールしようとしたのだけど、ハマってしまった。

luarocks というのは、Lua関係のライブラリをインターネット経由でインストールできるツール、という説明でいいのだろうか。Ruby で言えば gem、Python で言えば pip みたいなもの。たぶん。

luarocks を使うためには、gcc等のコンパイルができる環境が必要らしいので、MSYS2 上ならすんなり使えるのではないかと考えたのだけど。スタートメニューから、MSYS2 MinGW 64-bit を起動して、Lua関係のパッケージをインストールしたものの…。
pacman -S mingw-w64-x86_64-lua
pacman -S mingw-w64-x86_64-lua-luarocks
$ lua -v
Lua 5.4.2  Copyright (C) 1994-2020 Lua.org, PUC-Rio

$ luarocks --version
C:/msys64/mingw64/bin/luarocks 3.5.0
LuaRocks main command-line interface

$ gcc --version
gcc.exe (Rev2, Built by MSYS2 project) 10.3.0

json4lua というライブラリが使いたかったので、luarocks でインストールを試みるも、エラーが出てしまう。

_JSON4Lua - LuaRocks
_craigmj/json4lua

~$ luarocks install json4lua

The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
Installing https://raw.githubusercontent.com/rocks-moonscript-org/moonrocks-mirror/master/json4lua-0.9.30-1.src.rock
Warning: Failed searching manifest: Failed extracting manifest file: failed extracting D:\home\mieki256/.cache/luarocks/https___luarocks.org/manifest-5.4.zip

Error: Failed unpacking rock file: C:\msys64\tmp/luarocks_luarocks-rock-json4lua-0.9.30-1-7074/json4lua-0.9.30-1.src.rock: failed extracting C:\msys64\tmp/luarocks_luarocks-rock-json4lua-0.9.30-1-7074/json4lua-0.9.30-1.src.rock

MSYS2上で動かすのは難しいのだろうか…。よく分からん…。

Ubuntu Linux 20.04 LTSで試す。 :

VMware + Ubuntu Linux 20.04 LTS上で試してみる。
$ sudo apt install luarocks
...
以下の追加パッケージがインストールされます:
  liblua5.1-0-dev lua-any lua-sec lua-socket lua5.1
以下のパッケージが新たにインストールされます:
  liblua5.1-0-dev lua-any lua-sec lua-socket lua5.1 luarocks
アップグレード: 0 個、新規インストール: 6 個、削除: 0 個、保留: 0 個。
421 kB のアーカイブを取得する必要があります。
この操作後に追加で 2,739 kB のディスク容量が消費されます。
続行しますか? [Y/n] 
$ which lua
/usr/bin/lua

$ lua -v
Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio

$ which luarocks
/usr/bin/luarocks

$ luarocks --version
/usr/bin/luarocks 2.4.2
LuaRocks main command-line interface

json4lua をインストールしてみる。--local をつければユーザ別でインストールできるらしいので試してみる。
$ luarocks install json4lua --local

Installing https://luarocks.org/json4lua-0.9.30-1.src.rock
Do not use 'module' as a build type. Use 'builtin' instead.
No existing manifest. Attempting to rebuild...
json4lua 0.9.30-1 is now installed in /home/mieki256/.luarocks (license: GPL)

~/.luarocks/ 以下に色々インストールされたっぽい。

インストールできたのかなと思ったけれど…。呼び出そうとすると、エラーが…。
$ lua -i
Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio
> json = require('json')
stdin:1: module 'json' not found:
    no field package.preload['json']
    no file './json.lua'
    no file '/usr/local/share/lua/5.1/json.lua'
    no file '/usr/local/share/lua/5.1/json/init.lua'
    no file '/usr/local/lib/lua/5.1/json.lua'
    no file '/usr/local/lib/lua/5.1/json/init.lua'
    no file '/usr/share/lua/5.1/json.lua'
    no file '/usr/share/lua/5.1/json/init.lua'
    no file './json.so'
    no file '/usr/local/lib/lua/5.1/json.so'
    no file '/usr/lib/x86_64-linux-gnu/lua/5.1/json.so'
    no file '/usr/lib/lua/5.1/json.so'
    no file '/usr/local/lib/lua/5.1/loadall.so'
stack traceback:
    [C]: in function 'require'
    stdin:1: in main chunk
    [C]: ?

require('json') と打っても呼び出せない。どうやらライブラリを探すパスの中に、~/.luarocks/ 以下が登録されてないっぽい。どうやって呼び出せばいいのだ…。

管理者権限でインストールしたら呼び出せるようになったけど…。それっていいのかな…。
$ sudo luarocks install json4lua
Installing https://luarocks.org/json4lua-0.9.30-1.src.rock
Do not use 'module' as a build type. Use 'builtin' instead.
json4lua 0.9.30-1 is now installed in /usr/local (license: GPL)

$ lua -i
Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio
> json = require('json')

ググった感じでは、どうやら package.path, package.cpath, LUA_PATH, LUA_CPATH あたりが関係してる…?

luarocks path と打ち込むと追加すべきパスが表示される模様。コレを ~/.bashrc の最後あたりに追加したところ、luarocks --local でインストールしたものが呼び出せるようになった。

管理者権限でインストールした json4lua はアンインストールした。
sudo luarocks remove json4lua

Linux上ではどうにかなるようだなと…。さて、Windows上で luarocks を動かせるようにするには、どうしたら…。

以上です。

過去ログ表示

Prev - 2021/06 - Next
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project