RHEL5u3環境下編譯安裝MySQL Proxy 0.8.1

junsansi發表於2011-02-21

  MySQL Proxy是一個通過MySQL網路協議,提供MySQL伺服器與客戶端之間連線的應用工具,所有MySQL相容的客戶端(包括mysql命令列,呼叫mysql命令列的類庫,以及支援MySQL網路協議的應用)均無需任何修改即可直接連線Mysql Proxy。

  本文記錄ENTERPRISE LINUX5u3版本下原始碼編譯安裝MySQL Proxy 0.8的步驟。

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 

A>. 安裝libevent

RHEL5.3版本自帶的libevent版本較低,為1.1版,不符合需求,直接下載更高版本安裝,操作步驟如下:

B>. 安裝lua指令碼語言包

Lua是一個極輕量級的指令碼語言,MySQL Proxy通過該語言進行功能擴充。

首先到其官網下載最新版本5.1.4,而後解壓安裝,依次執行命令如下:

修改MakeFile檔案,將:

    INSTALL_TOP= /usr/local

修改為:

    INSTALL_TOP= /usr/local/lua

這樣做的目的,是為了將lua相關的檔案放在同一目錄內,便於查詢和應用。

Lua的編譯和安裝詳見目錄內的INSTALL檔案,三思這裡是在linux下安裝,直接執行下列命令即能完成編譯和安裝:

    # make linux install

C>. 安裝glib2

官方文件說是需要2.6.0或更高版本,實際在安裝mysql-proxy 0.8時,提示glib2的版本不能低於2.16.0,這裡為了後面安裝程式順利執行,首先升級系統的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

D>. 安裝MySQL開發包

主要需要用到mysql_config等應用,mysql的開發包可以直接到其官網下載:http://dev.mysql.com/downloads/mysql/5.1.html

Rpm包的安裝比較簡單,執行命令如下:

    # rpm -ivh MySQL-devel-community-5.1.51-1.rhel5.x86_64.rpm 

2、安裝MySQL Proxy

接下來,終於輪到正主上場,三思這裡安裝的是MySQL Proxy 0.8.1版本,也可以直接到其官網下載: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

安裝成功後,執行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

  編譯過程看起來簡單,僅只是幾條命令,但就是這個安裝頗不順利,折騰了三思整整一天時間,也許是我運氣不好,當然更多應該還是水平有限,實際執行編譯的過程中遇到了很多錯誤,錯誤資訊及解決方案見下,希望對同樣遇到該問題的同學有所幫助:

作業系統版本如下:

    [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包。

解決方案:

A>. 引數1.2步驟中所示,編譯安裝lua;

B>. 設定環境變數:

    export LUA_CFLAGS="-I/usr/local/lua/include"

    export LUA_LIBS="-L/usr/local/lua/lib -llua -ldl"

注意變數中的路徑應為lua實際安裝路徑,而後重新執行configure配置編譯程式。

如果執行上述操作故障依舊,可以嘗試將lua安裝路徑下的etc/lua.pc檔案複製到glib2安裝路徑中的lib/pkgconfig/資料夾內。

錯誤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

說明預設識別到的glib2版本不正確。

解決方案:

A>. 參照1.3步驟所示,編譯安裝適當版的glib;

B>. 設定環境變數:

    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"

特別強調,GMODULE和GTHREAD的相關變數必須設定,否則會遇到(gmodule-2.0 >= 2.16.0) were not met或(gthread-2.0 >= 2.16.0) were not met之類錯誤。

變數值中的路徑應為glib2的實際安裝路徑,而後重新執行configure配置編譯程式。

錯誤3:

    checking for event_init in -levent... no

    configure: error: libevent is required

沒有找到libevent依賴包。

解決方案:

A>. 參照1.1步驟中所示,編譯安裝libevent。

B>. 設定環境變數:

    export LDFLAGS="-L/usr/local/libevent-1.4/lib -lm" 

而後重新執行configure配置編譯程式

錯誤4:

    /usr/local/lua/lib/liblua.a: could not read symbols: Bad value

看起來是lua呼叫出錯,相關文件提示是提示:64bit環境可能遇到該現象。

解決方案:

A>. 編輯lua的src/MakeFile檔案,修改下列引數:

    CFLAGS= -O2 -Wall $(MYCFLAGS)

修改為:

    CFLAGS= -O2 -Wall -fPIC $(MYCFLAGS)

B>. 按照1.2步驟中所示,編譯安裝lua。如果之前已經編譯過,記得要執行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/

而後重新執行編譯。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-687627/,如需轉載,請註明出處,否則將追究法律責任。

相關文章