Mac OSXではじめるLua:brewコマンドで簡単インストール&動作テスト
軽くて速いと評判のスクリプト言語である、Luaを使ってみたレポートをしたいと思います。
Luaとは
Luaはプログラムの機能を拡張する、いわゆる組み込み用途に特化したスクリプト言語。 軽快で高速、組み込みが容易、移植性が高い、といった特徴を持ち、多くの環境に移植されている。
http://d.hatena.ne.jp/keyword/Lua
とのことです。
環境
$ sw_vers -productVersion 10.8.3 $ brew -v Homebrew 0.9.4
Lua本体のインストール
$ brew install lua ==> Downloading http://www.lua.org/ftp/lua-5.1.5.tar.gz ######################################################################## 100.0% ==> Patching patching file Makefile patching file src/Makefile ==> make macosx INSTALL_TOP=/usr/local/Cellar/lua/5.1.5 INSTALL_MAN=/usr/local/C ==> make install INSTALL_TOP=/usr/local/Cellar/lua/5.1.5 INSTALL_MAN=/usr/local/ 🍺 /usr/local/Cellar/lua/5.1.5: 15 files, 288K, built in 6 seconds
kyototycoonのLuaスクリプティング拡張をLuaJITにしてみた によると、JIT版であるluajitの方が高速らしい。
これまた、brewコマンドで一発インストール出来ます。
$ brew install luajit ==> Downloading http://luajit.org/download/LuaJIT-2.0.1.tar.gz ######################################################################## 100.0% ==> make PREFIX=/usr/local/Cellar/luajit/2.0.1 amalg ==> make PREFIX=/usr/local/Cellar/luajit/2.0.1 amalg install 🍺 /usr/local/Cellar/luajit/2.0.1: 25 files, 1.5M, built in 18 seconds
Luaパッケージリポジトリ「LuaRocks」
LuaRocksという、PHPでいうPEAR、RubyでいうRubyGems的なパッケージリポジトリがあります。
CPANやRubyGemsほどではないですが、データベースドライバやHTTPクライアントなどいろんなモジュールが揃っているようなので、組み込み用途だけではなく簡単なバッチ処理などでもLuaは使えるのではないでしょうか。
http://rest-term.com/archives/3038/
その他、Redisとの通信を行うものもあるようです。
動作テスト
とりあえず起ち上げてみます。
$ lua Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio > $ luajit LuaJIT 2.0.1 -- Copyright (C) 2005-2013 Mike Pall. http://luajit.org/ JIT: ON CMOV SSE2 SSE3 SSE4.1 fold cse dce fwd dse narrow loop abc sink fuse > ^C
luaでmd5を行うサンプルプログラムの動作テスト
以下にあるプログラムlua -lmd5 -e 'print(md5.sumhexa(""))'
を試しに動かしてみましょう。
[lua]luaはじめました。で、luarocksをrpm導入(rpmbuild編)。
むむ?動かないですね。どうやらmd5が入っていないようです。
パスが通っていないという訳でもなさそうです。
$ lua -lmd5 -e 'print(md5.sumhexa(""))' lua: module 'md5' not found: no field package.preload['md5'] no file './md5.lua' no file '/usr/local/share/lua/5.1/md5.lua' no file '/usr/local/share/lua/5.1/md5/init.lua' no file '/usr/local/lib/lua/5.1/md5.lua' no file '/usr/local/lib/lua/5.1/md5/init.lua' no file './md5.so' no file '/usr/local/lib/lua/5.1/md5.so' no file '/usr/local/lib/lua/5.1/loadall.so' stack traceback: [C]: ? [C]: ?
Luarockでmd5をインストール
luarocks install md5
でさくっと使えるはず。
しかし、gmakeコマンドが見つからないため、インストールに失敗しました。
そうです。MacOSXにXcodeを入れていたとしてもgmakeコマンドはありません。
$ luarocks install md5 Installing http://www.luarocks.org/repositories/rocks/md5-1.1.2-2.src.rock... Using http://www.luarocks.org/repositories/rocks/md5-1.1.2-2.src.rock... switching to 'build' mode Archive: /tmp/luarocks_luarocks-rock-md5-1.1.2-2-3965/md5-1.1.2-2.src.rock inflating: md5-1.1.2-2.rockspec extracting: md5-1.1.2.tar.gz sh: gmake: command not found Error: Build error: Failed building.
gmake on OSX 10.6?の記事によると、「make is usually the same as gmake」とのこと。
という訳で、gmakeにmakeのシンボリックリンクを張りましょう。
その後に再度luarocks install md5
を実行するとインストール出来ました。
$ sudo ln -s /usr/bin/make /usr/bin/gmake Password: $ luarocks install md5 Installing http://www.luarocks.org/repositories/rocks/md5-1.1.2-2.src.rock... Using http://www.luarocks.org/repositories/rocks/md5-1.1.2-2.src.rock... switching to 'build' mode Archive: /tmp/luarocks_luarocks-rock-md5-1.1.2-2-6518/md5-1.1.2-2.src.rock inflating: md5-1.1.2-2.rockspec extracting: md5-1.1.2.tar.gz export MACOSX_DEPLOYMENT_TARGET=10.5; gcc -O2 -fPIC -I/usr/local/opt/lua/include -c -o src/md5.o src/md5.c export MACOSX_DEPLOYMENT_TARGET=10.5; gcc -O2 -fPIC -I/usr/local/opt/lua/include -c -o src/md5lib.o src/md5lib.c export MACOSX_DEPLOYMENT_TARGET="10.3"; export MACOSX_DEPLOYMENT_TARGET=10.5; gcc -O2 -fPIC -I/usr/local/opt/lua/include -bundle -undefined dynamic_lookup -all_load -o src/core.so src/md5.o src/md5lib.o export MACOSX_DEPLOYMENT_TARGET=10.5; gcc -O2 -fPIC -I/usr/local/opt/lua/include -c -o src/des56.o src/des56.c export MACOSX_DEPLOYMENT_TARGET=10.5; gcc -O2 -fPIC -I/usr/local/opt/lua/include -c -o src/ldes56.o src/ldes56.c export MACOSX_DEPLOYMENT_TARGET="10.3"; export MACOSX_DEPLOYMENT_TARGET=10.5; gcc -O2 -fPIC -I/usr/local/opt/lua/include -bundle -undefined dynamic_lookup -all_load -o src/des56.so src/des56.o src/ldes56.o mkdir -p /usr/local/lib/luarocks/rocks/md5/1.1.2-2/lib/md5 cp src/core.so /usr/local/lib/luarocks/rocks/md5/1.1.2-2/lib/md5/core.so mkdir -p /usr/local/lib/luarocks/rocks/md5/1.1.2-2/lua cp src/md5.lua /usr/local/lib/luarocks/rocks/md5/1.1.2-2/lua cp src/des56.so /usr/local/lib/luarocks/rocks/md5/1.1.2-2/lib Updating manifest for /usr/local/lib/luarocks/rocks md5 1.1.2-2 is now built and installed in /usr/local/ (license: MIT/X11)
(今度こそ)luaでmd5を行うサンプルプログラムの動作テスト
無事、lua、luajitそれぞれで実行することが出来ました!
$ lua -lmd5 -e 'print(md5.sumhexa(""))' d41d8cd98f00b204e9800998ecf8427e $ luajit -lmd5 -e 'print(md5.sumhexa(""))' d41d8cd98f00b204e9800998ecf8427e
まだどういう時に便利なのか良く分かっていませんが、
とりあえず開発環境が出来たので本日はここでおしまいにしたいと思います。