3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LuaRocksで環境ごとにパッケージをインストールしてパスを通す

Last updated at Posted at 2017-05-10

環境確認

(luajit / luarocksが/usr/share/luajitにインストールされているケース)

$ luarocks
 ~~ 略 ~~
CONFIGURATION
	Lua version: 5.1
	Configuration files:
		System: /usr/share/luajit/etc/luarocks/config-5.1.lua (ok)
		User  : /root/.luarocks/config-5.1.lua (failed)

	Rocks trees in use: 
		/root/.luarocks ("user")
		/usr/share/luajit ("system")

$ cat /usr/share/luajit/etc/luarocks/config-5.1.lua
rocks_trees = {
   { name = [[user]], root = home..[[/.luarocks]] },
   { name = [[system]], root = [[/usr/share/luajit]] }
}

環境追加とインストール

configへ環境を追加

/usr/share/luajit/etc/luarocks/config-5.1.lua

rocks_trees = {
   { name = [[sandbox]], root = [[/home/sandbox]] },
   { name = [[user]], root = home..[[/.luarocks]] },
   { name = [[system]], root = [[/usr/share/luajit]] }
}

パス確認

$ luarocks path
export  LUA_PATH='/home/sandbox/share/lua/5.1/?.lua;/home/sandbox/share/lua/5.1/?/init.lua;/home/vagrant/.luarocks/share/lua/5.1/?.lua;/home/vagrant/.luarocks/share/lua/5.1/?/init.lua;/usr/share/luajit/share/lua/5.1/?.lua;/usr/share/luajit/share/lua/5.1/?/init.lua;/root/.luarocks/share/lua/5.1/?.lua;/root/.luarocks/share/lua/5.1/?/init.lua;./?.lua;/usr/share/luajit/share/luajit-2.1.0-beta2/?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua'
export LUA_CPATH='/home/sandbox/lib/lua/5.1/?.so;/home/vagrant/.luarocks/lib/lua/5.1/?.so;/usr/share/luajit/lib/lua/5.1/?.so;/root/.luarocks/lib/lua/5.1/?.so;./?.so;/usr/local/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/loadall.so'

luarocks path で確認するとすべてのパスが入っているので、実際に必要なのは

LUA_PATH

  • /home/sandbox/share/lua/5.1/?.lua
  • /home/sandbox/share/lua/5.1/?/init.lua

LUA_CPATH

  • /home/sandbox/lib/lua/5.1/?.so

Openrestyなら上記を lua_package_path, lua_package_cpath へ設定する感じに

指定の環境へインストール

$ luarocks --tree=sandbox install yaml
Installing https://luarocks.org/yaml-1.1.2-1.src.rock...
Using https://luarocks.org/yaml-1.1.2-1.src.rock... switching to 'build' mode

Missing dependencies for yaml:
lub >= 1.0.3, < 2

Using https://luarocks.org/lub-1.1.0-1.src.rock... switching to 'build' mode

Missing dependencies for lub:
luafilesystem >= 1.4.0

Using https://luarocks.org/luafilesystem-1.6.3-2.src.rock... switching to 'build' mode
gcc -O2 -fPIC -I/usr/share/luajit/include/luajit-2.1 -c src/lfs.c -o src/lfs.o
gcc -shared -o lfs.so -L/usr/share/luajit/lib src/lfs.o
Updating manifest for /home/sandbox/lib/luarocks/rocks
No existing manifest. Attempting to rebuild...
luafilesystem 1.6.3-2 is now built and installed in /home/sandbox (license: MIT/X11)

Updating manifest for /home/sandbox/lib/luarocks/rocks
lub 1.1.0-1 is now built and installed in /home/sandbox (license: MIT)

gcc -O2 -fPIC -I/usr/share/luajit/include/luajit-2.1 -c src/api.c -o src/api.o -Isrc
gcc -O2 -fPIC -I/usr/share/luajit/include/luajit-2.1 -c src/b64.c -o src/b64.o -Isrc
gcc -O2 -fPIC -I/usr/share/luajit/include/luajit-2.1 -c src/dumper.c -o src/dumper.o -Isrc
gcc -O2 -fPIC -I/usr/share/luajit/include/luajit-2.1 -c src/emitter.c -o src/emitter.o -Isrc
gcc -O2 -fPIC -I/usr/share/luajit/include/luajit-2.1 -c src/loader.c -o src/loader.o -Isrc
gcc -O2 -fPIC -I/usr/share/luajit/include/luajit-2.1 -c src/lyaml.c -o src/lyaml.o -Isrc
gcc -O2 -fPIC -I/usr/share/luajit/include/luajit-2.1 -c src/parser.c -o src/parser.o -Isrc
gcc -O2 -fPIC -I/usr/share/luajit/include/luajit-2.1 -c src/reader.c -o src/reader.o -Isrc
gcc -O2 -fPIC -I/usr/share/luajit/include/luajit-2.1 -c src/scanner.c -o src/scanner.o -Isrc
gcc -O2 -fPIC -I/usr/share/luajit/include/luajit-2.1 -c src/strtod.c -o src/strtod.o -Isrc
gcc -O2 -fPIC -I/usr/share/luajit/include/luajit-2.1 -c src/writer.c -o src/writer.o -Isrc
gcc -shared -o yaml/core.so -L/usr/share/luajit/lib src/api.o src/b64.o src/dumper.o src/emitter.o src/loader.o src/lyaml.o src/parser.o src/reader.o src/scanner.o src/strtod.o src/writer.o
Updating manifest for /home/sandbox/lib/luarocks/rocks
yaml 1.1.2-1 is now built and installed in /home/sandbox (license: MIT)

インストール結果

$ tree /home/sandbox/
/home/sandbox/
├── lib
│   ├── lua
│   │   └── 5.1
│   │       ├── lfs.so
│   │       └── yaml
│   │           └── core.so
│   └── luarocks
│       └── rocks
│           ├── luafilesystem
│           │   └── 1.6.3-2
│           │       ├── doc
│           │       │   └── us
│           │       │       ├── doc.css
│           │       │       ├── examples.html
│           │       │       ├── index.html
│           │       │       ├── license.html
│           │       │       ├── luafilesystem.png
│           │       │       └── manual.html
│           │       ├── luafilesystem-1.6.3-2.rockspec
│           │       ├── rock_manifest
│           │       └── tests
│           │           └── test.lua
│           ├── lub
│           │   └── 1.1.0-1
│           │       ├── doc
│           │       │   └── index.html
│           │       ├── lub-1.1.0-1.rockspec
│           │       └── rock_manifest
│           ├── manifest
│           └── yaml
│               └── 1.1.2-1
│                   ├── doc
│                   │   └── index.html
│                   ├── rock_manifest
│                   └── yaml-1.1.2-1.rockspec
└── share
    └── lua
        └── 5.1
            ├── lub
            │   ├── Autoload.lua
            │   ├── Dir.lua
            │   ├── init.lua
            │   ├── Param.lua
            │   └── Template.lua
            └── yaml
                └── init.lua

参考

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?