概要
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 件のコメント:
コメントを投稿