Luarocks: 安裝 lyaml 庫

Luarocks: 安裝 lyaml 庫


一、安裝 Lua

下載:

http://www.lua.org/download.html
http://www.lua.org/ftp/lua-5.3.5.tar.gz

a.上傳到 $HOME 中,解壓縮

[test1280@localhost ~]$ ls -l
total 300
drwxr-xr-x. 4 test1280 test1280     58 Jun 26  2018 lua-5.3.5
-rw-r--r--. 1 test1280 test1280 303543 Jun 10 08:35 lua-5.3.5.tar.gz

b.編譯 & 安裝

[test1280@localhost ~]$ cd lua-5.3.5/ && make linux && make install INSTALL_TOP=$HOME/lua

PS:

報錯時:

gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX    -c -o lua.o lua.c
lua.c:82:10: fatal error: readline/readline.h: No such file or directory
 #include <readline/readline.h>
          ^~~~~~~~~~~~~~~~~~~~~

執行:

[root@localhost ~]# yum install -y readline-devel

重新執行上述命令,完成編譯&安裝。

[test1280@localhost ~]$ cd lua-5.3.5/ && make linux && make install INSTALL_TOP=$HOME/lua

完成後,已安裝lua到$HOME/lua中。

[test1280@localhost ~]$ ll
total 300
drwxrwxr-x. 7 test1280 test1280     67 Jun 10 10:12 lua
drwxr-xr-x. 4 test1280 test1280     58 Jun 10 10:07 lua-5.3.5
-rw-r--r--. 1 test1280 test1280 303543 Jun 10 08:35 lua-5.3.5.tar.gz

c.更新環境變量,並退出重新登陸主機(使環境變量生效):

[test1280@localhost ~]$ echo 'export PATH=$HOME/lua/bin:$PATH' >> $HOME/.bash_profile

二、安裝luarocks

下載:

https://github.com/luarocks/luarocks/wiki/Download
http://luarocks.org/releases/luarocks-3.3.1.tar.gz

a.上傳到 $HOME 中,解壓縮

[test1280@localhost ~]$ tar zxf luarocks-3.3.1.tar.gz 
[test1280@localhost ~]$ ll
total 540
drwxrwxr-x. 7 test1280 test1280     67 Jun 10 10:12 lua
drwxr-xr-x. 4 test1280 test1280     58 Jun 10 10:07 lua-5.3.5
-rw-r--r--. 1 test1280 test1280 303543 Jun 10 08:35 lua-5.3.5.tar.gz
drwxr-xr-x. 5 test1280 test1280   4096 Feb  7 05:24 luarocks-3.3.1
-rw-r--r--. 1 test1280 test1280 241636 Jun  9 02:01 luarocks-3.3.1.tar.gz

b.編譯 & 安裝

[test1280@localhost ~]$ cd luarocks-3.3.1/ && ./configure --prefix=$HOME/luarocks --with-lua=$HOME/lua && make && make install

完成後,已安裝luarocks到$HOME/luarocks中。

[test1280@localhost ~]$ ll
total 540
drwxrwxr-x. 7 test1280 test1280     67 Jun 10 10:12 lua
drwxr-xr-x. 4 test1280 test1280     58 Jun 10 10:07 lua-5.3.5
-rw-r--r--. 1 test1280 test1280 303543 Jun 10 08:35 lua-5.3.5.tar.gz
drwxrwxr-x. 5 test1280 test1280     41 Jun 10 10:22 luarocks
drwxr-xr-x. 8 test1280 test1280   4096 Jun 10 10:22 luarocks-3.3.1
-rw-r--r--. 1 test1280 test1280 241636 Jun  9 02:01 luarocks-3.3.1.tar.gz

c.更新環境變量,並退出重新登陸主機(使環境變量生效):

[test1280@localhost ~]$ echo 'export PATH=$HOME/luarocks/bin:$PATH' >> $HOME/.bash_profile

三、安裝libyaml庫

lyaml庫會依賴於libyaml庫,因此,要先安裝libyaml庫。

下載:

https://pyyaml.org/wiki/LibYAML
http://pyyaml.org/download/libyaml/yaml-0.2.5.tar.gz

a.上傳到 $HOME 中,解壓縮

[test1280@localhost ~]$ ll
total 628
drwxrwxr-x. 11 test1280 test1280   4096 Jun  1 17:19 libyaml-0.2.5
-rw-r--r--.  1 test1280 test1280  85055 Jun 10 09:11 libyaml-0.2.5.tar.gz
drwxrwxr-x.  7 test1280 test1280     67 Jun 10 10:12 lua
drwxr-xr-x.  4 test1280 test1280     58 Jun 10 10:07 lua-5.3.5
-rw-r--r--.  1 test1280 test1280 303543 Jun 10 08:35 lua-5.3.5.tar.gz
drwxrwxr-x.  5 test1280 test1280     41 Jun 10 10:22 luarocks
drwxr-xr-x.  8 test1280 test1280   4096 Jun 10 10:22 luarocks-3.3.1
-rw-r--r--.  1 test1280 test1280 241636 Jun  9 02:01 luarocks-3.3.1.tar.gz

b.編譯 & 安裝

[test1280@localhost ~]$ cd libyaml-0.2.5/ && ./bootstrap && ./configure --prefix=$HOME/libyaml && make && make install

PS:

報錯1:

./bootstrap: line 3: exec: autoreconf: not found

解決1:

[root@localhost ~]# yum install -y automake

報錯2:

configure.ac:56: error: possibly undefined macro: AC_PROG_LIBTOOL
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1

解決2:

[root@localhost ~]# yum install -y libtool

重新執行上述命令,完成編譯&安裝。

[test1280@localhost ~]$ cd libyaml-0.2.5/ && ./bootstrap && ./configure --prefix=$HOME/libyaml && make && make install

完成後,已安裝libyaml到$HOME/libyaml中。

[test1280@localhost ~]$ ll
total 628
drwxrwxr-x.  4 test1280 test1280     32 Jun 10 10:31 libyaml
drwxrwxr-x. 13 test1280 test1280   4096 Jun 10 10:30 libyaml-0.2.5
-rw-r--r--.  1 test1280 test1280  85055 Jun 10 09:11 libyaml-0.2.5.tar.gz
drwxrwxr-x.  7 test1280 test1280     67 Jun 10 10:12 lua
drwxr-xr-x.  4 test1280 test1280     58 Jun 10 10:07 lua-5.3.5
-rw-r--r--.  1 test1280 test1280 303543 Jun 10 08:35 lua-5.3.5.tar.gz
drwxrwxr-x.  5 test1280 test1280     41 Jun 10 10:22 luarocks
drwxr-xr-x.  8 test1280 test1280   4096 Jun 10 10:22 luarocks-3.3.1
-rw-r--r--.  1 test1280 test1280 241636 Jun  9 02:01 luarocks-3.3.1.tar.gz

c.更新環境變量,並退出重新登陸主機(使環境變量生效):

[test1280@localhost ~]$ echo 'export LD_LIBRARY_PATH=$HOME/libyaml/lib:$LD_LIBRARY_PATH' >> $HOME/.bash_profile

四、安裝lyaml庫

a.聯公網,通過luarocks包管理器下載:

[test1280@localhost ~]$ luarocks install lyaml

報錯:

[test1280@localhost ~]$ luarocks install lyaml
Installing https://luarocks.org/lyaml-6.2.5-1.src.rock

Error: Could not find library file for YAML
  No file libyaml.a in /usr/local/lib
  No file libyaml.a in /usr/local/lib64
  No file libyaml.so in /usr/local/lib
  No file libyaml.so in /usr/local/lib64
  No file matching libyaml.so.* in /usr/local/lib
  No file matching libyaml.so.* in /usr/local/lib64
  No file libyaml.a in /usr/lib
  No file libyaml.a in /usr/lib64
  No file libyaml.so in /usr/lib
  No file libyaml.so in /usr/lib64
  No file matching libyaml.so.* in /usr/lib
  No file matching libyaml.so.* in /usr/lib64
  No file libyaml.a in /lib
  No file libyaml.a in /lib64
  No file libyaml.so in /lib
  No file libyaml.so in /lib64
  No file matching libyaml.so.* in /lib
  No file matching libyaml.so.* in /lib64
You may have to install YAML in your system and/or pass YAML_DIR or YAML_LIBDIR to the luarocks command.
Example: luarocks install lyaml YAML_DIR=/usr/local

You may have to install YAML in your system and/or pass YAML_DIR or YAML_LIBDIR to the luarocks command.
Example: luarocks install lyaml YAML_DIR=/usr/local

重新執行YAML_DIR爲剛安裝的libyaml庫:

[test1280@localhost ~]$ luarocks install lyaml YAML_DIR=$HOME/libyaml

安裝成功:

[test1280@localhost ~]$ luarocks show lyaml

lyaml 6.2.5-1 - libYAML binding for Lua

Read and write YAML format files with Lua.

License:      	MIT/X11
Homepage:     	http://github.com/gvvaughan/lyaml
Installed in: 	/home/test1280/luarocks

Modules:
	lyaml.explicit (/home/test1280/luarocks/share/lua/5.3/lyaml/explicit.lua)
	lyaml.functional (/home/test1280/luarocks/share/lua/5.3/lyaml/functional.lua)
	lyaml.implicit (/home/test1280/luarocks/share/lua/5.3/lyaml/implicit.lua)
	lyaml.init (/home/test1280/luarocks/share/lua/5.3/lyaml/init.lua)
	yaml (/home/test1280/luarocks/lib/lua/5.3/yaml.so)

Depends on:
	lua >= 5.1, < 5.5 (using 5.3-1)

b.不聯公網,預先下載lyaml包,本地安裝

下載:

https://github.com/gvvaughan/lyaml/releases
https://github.com/gvvaughan/lyaml/archive/v6.2.5.tar.gz

上傳到 $HOME 中,解壓縮:

[test1280@localhost ~]$ ll
total 676
drwxrwxr-x.  4 test1280 test1280     32 Jun 10 10:31 libyaml
drwxrwxr-x. 13 test1280 test1280   4096 Jun 10 10:30 libyaml-0.2.5
-rw-r--r--.  1 test1280 test1280  85055 Jun 10 09:11 libyaml-0.2.5.tar.gz
drwxrwxr-x.  7 test1280 test1280     67 Jun 10 10:12 lua
drwxr-xr-x.  4 test1280 test1280     58 Jun 10 10:07 lua-5.3.5
-rw-r--r--.  1 test1280 test1280 303543 Jun 10 08:35 lua-5.3.5.tar.gz
drwxrwxr-x.  6 test1280 test1280     52 Jun 10 10:36 luarocks
drwxr-xr-x.  8 test1280 test1280   4096 Jun 10 10:22 luarocks-3.3.1
-rw-r--r--.  1 test1280 test1280 241636 Jun  9 02:01 luarocks-3.3.1.tar.gz
drwxrwxr-x.  7 test1280 test1280    228 Apr 15 15:31 lyaml-6.2.5
-rw-r--r--.  1 test1280 test1280  48782 Jun  9 05:14 lyaml-6.2.5.tar.gz

通過lyaml包安裝:

[test1280@localhost ~]$ cd lyaml-6.2.5/ && luarocks make YAML_DIR=$HOME/libyaml

注意,在這種情況下,當系統中沒有libyaml庫時,也需要指定變量YAML_DIR到命令行中。

c.更新環境變量,並退出重新登陸主機(使環境變量生效):

[test1280@localhost ~]$ luarocks path
export LUA_PATH='/home/test1280/luarocks/share/lua/5.3/?.lua;/usr/local/share/lua/5.3/?.lua;/usr/local/share/lua/5.3/?/init.lua;/usr/local/lib/lua/5.3/?.lua;/usr/local/lib/lua/5.3/?/init.lua;./?.lua;./?/init.lua;/home/test1280/.luarocks/share/lua/5.3/?.lua;/home/test1280/.luarocks/share/lua/5.3/?/init.lua;/home/test1280/luarocks/share/lua/5.3/?/init.lua'
export LUA_CPATH='/usr/local/lib/lua/5.3/?.so;/usr/local/lib/lua/5.3/loadall.so;./?.so;/home/test1280/.luarocks/lib/lua/5.3/?.so;/home/test1280/luarocks/lib/lua/5.3/?.so'
export PATH='/home/test1280/.luarocks/bin:/home/test1280/lua/bin:/home/test1280/luarocks/bin:/home/test1280/.local/bin:/home/test1280/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin'

將 LUA_PATH、LUA_CPATH、PATH 寫入到 $HOME/.bash_profile 中:

[test1280@localhost ~]$ cat $HOME/.bash_profile
# .bash_profile
  
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
export PATH=$HOME/luarocks/bin:$PATH
export PATH=$HOME/lua/bin:$PATH
export LD_LIBRARY_PATH=$HOME/libyaml/lib:$LD_LIBRARY_PATH
export LUA_PATH='/home/test1280/luarocks/share/lua/5.3/?.lua;/usr/local/share/lua/5.3/?.lua;/usr/local/share/lua/5.3/?/init.lua;/usr/local/lib/lua/5.3/?.lua;/usr/local/lib/lua/5.3/?/init.lua;./?.lua;./?/init.lua;/home/test1280/.luarocks/share/lua/5.3/?.lua;/home/test1280/.luarocks/share/lua/5.3/?/init.lua;/home/test1280/luarocks/share/lua/5.3/?/init.lua'
export LUA_CPATH='/usr/local/lib/lua/5.3/?.so;/usr/local/lib/lua/5.3/loadall.so;./?.so;/home/test1280/.luarocks/lib/lua/5.3/?.so;/home/test1280/luarocks/lib/lua/5.3/?.so'
export PATH='/home/test1280/.luarocks/bin:/home/test1280/lua/bin:/home/test1280/luarocks/bin:/home/test1280/.local/bin:/home/test1280/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin'

五、驗證

代碼:

[test1280@localhost ~]$ cat me.lua 

lyaml = require "lyaml"

for k, v in pairs(lyaml) do
	print(k)
	print(v)
end

運行:

[test1280@localhost ~]$ lua me.lua
_VERSION
yaml library for Lua 5.3 / 6.2.5
null
table: 0x15437c0
dump
function: 0x154afa0
load
function: 0x154b440
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章