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 を動かせるようにするには、どうしたら…。

#2 [prog] MinGWのサイトが消えている気がする

Windows10上で MinGW + MSYS をインストールしようとしたのだけど、その手の解説ページに記述されている、http://www.mingw.org/ というサイトが開けなくなっているような…。

SourceForge の MinGW ページはまだあるようだけど…。

_MinGW - Minimalist GNU for Windows download | SourceForge.net

twitterで検索して眺めてたら、「osdnが現在のMinGWの開発メインサイトですよ。」という話を見かけた。https://mingw.osdn.io/ というサイトもあるようで。

_MinGW - Minimalist GNU for Windows プロジェクト日本語トップページ - OSDN
_Welcome to MinGW.org

たしかに、OSDN のほうが、ファイルは新しい感じ。

「俺達、https://osdn.net/projects/mingw/ に引っ越すよ」という宣言(?)もされているな…。2018/01/21頃の話だったらしい。

_MinGW - Minimalist GNU for Windows / [Mingw-users] MinGW.org Project Hosting

しかし、DLした mingw-get-setup.exe を実行して、MinGW Installer をインストールしてみたら、SourceForge からファイルをDLしているように見える…。パッケージの日付も、2013年頃になってる…。どういうこと…。

でもまあ、インストールできたから、これでいいかな…。

一応メモ。今回は、D:\MinGW\ にインストールしてみた。また、パスが通ったところに、mingw.bat というバッチファイルを作っておいた。内容は以下。
@rem MinGW,MSYS enable

@set MINGW_PATH=D:\MinGW

@set MSYS_PATH=%MINGW_PATH%\\msys\1.0

@set MINGWADDPATH=%MINGW_PATH%\bin;%MSYS_PATH%\bin
@set PATH=%MINGWADDPATH%;%PATH%

@echo add path %MINGWADDPATH%

@set C_INCLUDE_PATH=%MINGW_PATH%\include
@set CPLUS_INCLUDE_PATH=%MINGW_PATH%\include
@set LIBRARY_PATH=%MINGW_PATH%\lib

MinGW,MSYSを使いたい時は、DOS窓で mingw.bat を実行すれば、環境変数PATHの最初に MinGW関係のパスが追加されて、使えるようになるはず。

本来、最初から環境変数PATHに登録しておくものだろうけど、自分の環境では、インストール済みのPerl関係も gcc を持っていて、そっちが登録されちゃってる環境なので、必要になった時にPATHを設定する感じでいいかなと…。

以上、1 日分です。

過去ログ表示

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