Linux5u3下編譯安裝MySQL Proxy Lua 0.8.1
Linux5u3下編譯安裝MySQL Proxy 0.8.1是本文要介紹的內(nèi)容,主要記錄了ENTERPRISE LINUX5u3版本下源碼編譯安裝MySQL Proxy 0.8的步驟。
MySQL Proxy是一個通過MySQL網(wǎng)絡(luò)協(xié)議,提供MySQL服務(wù)器與客戶端之間連接的應(yīng)用工具,所有MySQL兼容的客戶端(包括mysql命令行,調(diào)用mysql命令行的類庫,以及支持MySQL網(wǎng)絡(luò)協(xié)議的應(yīng)用)均無需任何修改即可直接連接Mysql Proxy。
1、安裝依賴包
源碼編譯方式安裝MySQL Proxy前,下列依賴包必須首先安裝:
- libevent 1.x or higher (1.3b or later is preferred)
- lua 5.1.x or higher
- glib2 2.16.0 or higher (官方文檔說是2.6.0或更高,實際安裝時,mysql-proxy 0.8版本時提示不能低于2.16.0的)
- pkg-config
- libtool 1.5 or higher
- MySQL 5.0.x or higher developer files
(1)安裝libevent
RHEL5.3版本自帶的libevent版本較低,為1.1版,不符合需求,直接下載更高版本安裝,操作步驟如下:
- # wget http://monkey.org/~provos/libevent-1.4.14b-stable.tar.gz
- # tar xvfz libevent-1.4.14b-stable.tar.gz
- # cd libevent-1.4.14b-stable
- # ./configure --prefix=/usr/local/libevent-1.4
- # make && make install
(2)安裝lua腳本語言包
Lua是一個極輕量級的腳本語言,MySQL Proxy通過該語言進(jìn)行功能擴(kuò)充。
首先到其官網(wǎng)下載***版本5.1.4,而后解壓安裝,依次執(zhí)行命令如下:
- # wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
- # tar xvfz lua-5.1.4.tar.gz
- # cd lua-5.1.4
- # vi Makefile
修改MakeFile文件,將:
- INSTALL_TOP= /usr/local
修改為:
- INSTALL_TOP= /usr/local/lua
這樣做的目的,是為了將lua相關(guān)的文件放在同一目錄內(nèi),便于查找和應(yīng)用。
Lua的編譯和安裝詳見目錄內(nèi)的INSTALL文件,三思這里是在linux下安裝,直接執(zhí)行下列命令即能完成編譯和安裝:
- # make linux install
(3)安裝glib2
官方文檔說是需要2.6.0或更高版本,實際在安裝mysql-proxy 0.8時,提示glib2的版本不能低于2.16.0,這里為了后面安裝進(jìn)程順利執(zhí)行,首先升級系統(tǒng)的glib2,步驟如下。
- # wget http://ftp.gnome.org/pub/gnome/sources/glib/2.22/glib-2.22.5.tar.gz
- # tar xvfz glib-2.22.5.tar.gz
- # cd glib-2.22.5
- # ./configure --prefix=/usr/local/glib-2.2
- # make && make install
(4)安裝MySQL開發(fā)包
主要需要用到mysql_config等應(yīng)用,mysql的開發(fā)包可以直接到其官網(wǎng)下載:
- http://dev.mysql.com/downloads/mysql/5.1.html
Rpm包的安裝比較簡單,執(zhí)行命令如下:
- # rpm -ivh MySQL-devel-community-5.1.51-1.rhel5.x86_64.rpm
2、安裝MySQL Proxy
接下來,終于輪到正主上場,三思這里安裝的是MySQL Proxy 0.8.1版本,也可以直接到其官網(wǎng)下載:
- http://dev.mysql.com/downloads/mysql-proxy/
- # tar xvfz mysql-proxy-0.8.1.tar.gz
- # cd mysql-proxy-0.8.1
- # ./configure LDFLAGS="-lm -ldl" LUA_CFLAGS="/usr/local/lua/bin/lua -I/usr/local/lua/include"
- LUA_LIBS="/usr/local/lua/lib -llua" --prefix=/usr/local/mysql-proxy --with-lua
- # make
- # make install
安裝成功后,執(zhí)行mysql-proxy命令驗證:
- [root@rhel5u3 mysql-proxy]# /usr/local/mysql-proxy/bin/mysql-proxy -V
- mysql-proxy 0.8.1
- chassis: mysql-proxy 0.8.1
- glib2: 2.22.5
- libevent: 1.4.14b-stable
- LUA: Lua 5.1.4
- package.path: /usr/local/mysql-proxy/lib/mysql-proxy/lua/?.lua
- package.cpath: /usr/local/mysql-proxy/lib/mysql-proxy/lua/?.so
- modules
- admin: 0.8.1
- proxy: 0.8.1
編譯過程看起來簡單,僅只是幾條命令,但就是這個安裝頗不順利,折騰了三思整整一天時間,也許是我運氣不好,當(dāng)然更多應(yīng)該還是水平有限,實際執(zhí)行編譯的過程中遇到了很多錯誤,錯誤信息及解決方案見下,希望對同樣遇到該問題的同學(xué)有所幫助:
操作系統(tǒng)版本如下:
- [root@rhel5u3 ~]# cat /etc/issue
- Enterprise Linux Enterprise Linux Server release 5.3 (Carthage)
- Kernel \r on an \m
錯誤1:
- checking for LUA... no
- ... checked for Lua via pkg-config: No package ¨lua¨ found. retrying with lua5.1
看錯誤信息是說找不到lua包。
解決方案:
(1)參數(shù)1.2步驟中所示,編譯安裝lua;
(2)設(shè)置環(huán)境變量:
- export LUA_CFLAGS="-I/usr/local/lua/include"
- export LUA_LIBS="-L/usr/local/lua/lib -llua -ldl"
注意變量中的路徑應(yīng)為lua實際安裝路徑,而后重新執(zhí)行configure配置編譯程序。
如果執(zhí)行上述操作故障依舊,可以嘗試將lua安裝路徑下的etc/lua.pc文件復(fù)制到glib2安裝路徑中的lib/pkgconfig/文件夾內(nèi)。
錯誤2:
- checking for GLIB... configure: error: Package requirements (glib-2.0 >= 2.16.0) were not met:
- Requested ¨glib-2.0 >= 2.16.0¨ but version of GLib is 2.12.3
說明默認(rèn)識別到的glib2版本不正確。
解決方案:
(1)參照1.3步驟所示,編譯安裝適當(dāng)版的glib;
(2)設(shè)置環(huán)境變量:
- export GLIB_CFLAGS="-I/usr/local/glib-2.2/include/glib-2.0"
- export GLIB_LIBS="-L/usr/local/glib-2.2/lib/glib-2.0"
- export GMODULE_CFLAGS="-I/usr/local/glib-2.2/include"
- export GMODULE_LIBS="-L/usr/local/glib-2.2/lib"
- export GTHREAD_CFLAGS="-I/usr/local/glib-2.2/include"
- export GTHREAD_LIBS="-L/usr/local/glib-2.2/lib"
特別強(qiáng)調(diào),GMODULE和GTHREAD的相關(guān)變量必須設(shè)置,否則會遇到(gmodule-2.0 >= 2.16.0) were not met或(gthread-2.0 >= 2.16.0) were not met之類錯誤。
變量值中的路徑應(yīng)為glib2的實際安裝路徑,而后重新執(zhí)行configure配置編譯程序。
錯誤3:
- checking for event_init in -levent... no
- configure: error: libevent is required
沒有找到libevent依賴包。
解決方案:
(1)參照1.1步驟中所示,編譯安裝libevent。
(2)設(shè)置環(huán)境變量:
- export LDFLAGS="-L/usr/local/libevent-1.4/lib -lm"
而后重新執(zhí)行configure配置編譯程序
錯誤4:
- /usr/local/lua/lib/liblua.a: could not read symbols: Bad value
看起來是lua調(diào)用出錯,相關(guān)文檔提示是提示:64bit環(huán)境可能遇到該現(xiàn)象。
解決方案:
A>. 編輯lua的src/MakeFile文件,修改下列參數(shù):
- CFLAGS= -O2 -Wall $(MYCFLAGS)
修改為:
- CFLAGS= -O2 -Wall -fPIC $(MYCFLAGS)
B>. 按照1.2步驟中所示,編譯安裝lua。如果之前已經(jīng)編譯過,記得要執(zhí)行make clean清除已編譯配置。
錯誤5:
- /usr/local/glib-2.22/include/glib-2.0/glib/gtypes.h:34:24: error: glibconfig.h: No such file or directory
解決方案:
- # cp /usr/local/glib-2.2/lib/glib-2.0/include/glibconfig.h /usr/local/glib-2.2/include/glib-2.0/
而后重新執(zhí)行編譯。
小結(jié):Linux5u3下編譯安裝MySQL Proxy 0.8.1的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對你有所幫助!