2015年12月21日月曜日

CentOS で LuaRocks のインストールと簡単な使い方

概要

LuaRocks という Lua 言語用のパッケージ管理ツールがあります
CentOS 上でインストールして簡単に使ってみたので紹介します

環境

  • CentOS 6.7 64bit Final
  • Lua 5.1.4
  • LuaRocks 2.1.2

LuaRocks のインストール

Epel を使えるようにすれば yum コマンドでインストールすることができます
開発用の devel パッケージもインストールします

  • rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
  • yum -y install lua-devel
  • yum -y install luarocks

ライブラリのインストール

ここではサンプルとして暗号化ツールの luacrypto をインストールしてみます

  • luarocks install luacrypto

でインストール完了です
自分の環境では何も指定しない状態だと /usr/lib/luarocks/rocks/luacrypto/ にインストールされました

インストールしたライブラリが使えるか確認する

  • eval `luarocks path`
  • lua

でまずはライブラリを使えるようにします
あとは lua コマンドのインタラクティブモードで試していきます

> require "crypto"
> crypto.hmac.digest('sha256', "hoge", "fuga", false)
> digest = crypto.hmac.digest('sha256', "hoge", "fuga", false)
> print(digest)
4a68986307d6d29a8060f2e6a6394f29ddd8b4e5a0d9694c886bd400922c0841

こんな感じで使うことができます
require するときのパッケージ名が install 時のパッケージ名と違うのに注意が必要です
require 時のパッケージ名は luarocks show luacrypto で Modules という項目に書かれたパッケージ名を使えば OK です

Tips

  • パッケージが存在しないというエラーが出た

> require “crypto”
stdin:1: module ‘crypto’ not found:
no field package.preload[‘crypto’]
no file ‘./crypto.lua’
no file ‘/usr/share/lua/5.1/crypto.lua’
no file ‘/usr/share/lua/5.1/crypto/init.lua’
no file ‘/usr/lib64/lua/5.1/crypto.lua’
no file ‘/usr/lib64/lua/5.1/crypto/init.lua’
no file ‘./crypto.so’
no file ‘/usr/lib64/lua/5.1/crypto.so’
no file ‘/usr/lib64/lua/5.1/loadall.so’
stack traceback:
[C]: in function ‘require’
stdin:1: in main chunk
[C]: ?

インストールしたライブラリに対してパスが通っていないことがほとんどです
luarocks path で export したパスにインストールしたライブラリがあるか確認してください
ない場合はイントールしたパスを LUA_PATH と LUA_CPATH に設定してください

  • Nginx 上の Lua スクリプトで使いたい場合

Lua 上でパスを通せば OK です
以下をライブラリを使いたい Lua スクリプトの先頭に記載してください

local p = "/usr/lib/luarocks/rocks/"
local m_package_path = package.path
package.path = string.format("%s?.lua;%s?/init.lua;%s?/init.lua;%s", p, p, p3, p3, m_package_path)

0 件のコメント:

コメントを投稿