7 | | == 【Install】 == |
8 | | * Source Code Path: ~/git/hypertable |
9 | | * Build Path: ~/build/hypertable |
10 | | * Installation Path: ~/hypertable |
11 | | * Install prerequisite library |
12 | | {{{ |
13 | | $ apt-get install build-essential (if stdio.h not found) |
14 | | $ apt-get install zlib1g-dev (if CMake Error: Could NOT find z library) |
15 | | $ apt-get install libboost.*-dev libboost-doc libboost.*1.34.1 (install Boost version 1.34.1) |
16 | | NOTE. 用apt-get安裝boost 1.34.1,在執行cmake編譯hypertable時,需要另外定義 -DBoost_INCLUDE_DIR="/usr/include/boost" |
17 | | $ apt-get install liblog4cpp4 liblog4cpp4-dev liblog4cpp-doc (install log4cpp) |
18 | | $ apt-get install expat libexpat1 libexpat1-dev (install expat) |
19 | | $ apt-get install doxygen doxygen-doc doxygen-gui (install doxygen) |
20 | | $ apt-get install graphviz graphviz-dev graphviz-doc (install graphviz) |
21 | | $ apt-get install libgoogle-perftools0 libgoogle-perftools-dev (install tcmalloc) |
22 | | $ apt-get install libreadline5 libreadline5-dev libreadline5-dbg (install readline library) |
23 | | $ apt-get install libattr1 libattr1-dev (if #include <attr/xattr.h> not found) |
24 | | $ apt-get install cmake (install cmake) |
25 | | }}} |
26 | | * Configure the build |
27 | | {{{ |
28 | | sunny@hsihdp:~/build/hypertable$ cmake -DCMAKE_INSTALL_PREFIX= -DCMAKE_BUILD_TYPE="Debug" -DBoost_INCLUDE_DIR="/usr/include/boost" ~/git/hypertable |
| 7 | == 【安裝】 == |
| 8 | * 安裝過程運行於Ubuntu作業系統,以下所列說明指令適用於Ubuntu的安裝方式,若使用者要安裝到其他作業平台環境,可以參考下列安裝項目並以通用該平台的安裝指令來取代之,接下來會說明編譯過程中的相關檔案存放位置,以及如何組態並編譯原始程式碼,最後再說明安裝方式及如何執行迴歸測試。 |
| 9 | * Hypertable原始程式碼的存放路徑放置於: |
| 10 | {{{ |
| 11 | ~/src/hypertable |
| 12 | }}} |
| 13 | * 編譯過程中所產生的連結物件檔存放於: |
| 14 | {{{ |
| 15 | ~/build/hypertable |
| 16 | }}} |
| 17 | * 編譯完成的輸出執行檔存放路徑: |
| 18 | {{{ |
| 19 | ~/hypertable |
| 20 | }}} |
| 21 | |
| 22 | === 【下載原始程式碼】 === |
| 23 | * 要取得Hypertable原始碼需要先安裝[http://git.or.cz/ git]這套由google所提出的版本控制軟體,安裝指令如下: |
| 24 | {{{ |
| 25 | $ sudo apt-get install git-core |
| 26 | }}} |
| 27 | * 然後執行以下指令設定git所通行的使用者資訊,這一份使用者資訊原則上是由git這套版本控制軟體儲存,以及留作記錄程式碼被哪些使用者下載的一份參考來源,其設定使用者資訊方式如下: |
| 28 | {{{ |
| 29 | $ git config --global user.name "<your name>" |
| 30 | $ git config --global user.email "<your email>" |
| 31 | }}} |
| 32 | * 使用git下載Hypertable原始碼之指令: |
| 33 | {{{ |
| 34 | $ git clone git://scm.hypertable.org/pub/repos/hypertable.git |
| 35 | }}} |
| 36 | * 更新已下載之Hypertable原始碼方式: |
| 37 | {{{ |
| 38 | $ cd ~/hypertable |
| 39 | $ git pull |
| 40 | }}} |
| 41 | === 【如何編譯】 === |
| 42 | * 在編譯Hypertable之前,需要先把編譯環境準備好,有一些編譯軟體要先安裝就序,以下條列出在Ubuntu環境下,各項編譯軟體的安裝指令: |
| 43 | * 此套件在安裝C語言標準程式庫所需要的編譯環境,如果沒有安裝build-essential套件時可能會出現編譯階段找不到stdio.h這個引入檔案的位置,因此建議要先確認這項套件是否有安裝。 |
| 44 | {{{ |
| 45 | $ sudo apt-get install build-essential |
| 46 | }}} |
| 47 | * 在Hypertable會使用到一些資料壓縮與解壓縮功能,因此需要安裝 z library。 |
| 48 | {{{ |
| 49 | $ sudo apt-get install zlib1g-dev |
| 50 | }}} |
| 51 | * 安裝可跨平台的makefiles產生工具CMake,因此可以選擇編譯器及編譯環境來產生Hypertable的執行檔;根據官網公佈資訊,目前測試過可執行的平台仍以Linux/Unix為主,Windows平台仍在測試當中。 |
| 52 | {{{ |
| 53 | $ sudo apt-get install cmake |
| 54 | }}} |
| 55 | * 安裝Boost 程式庫1.34.1以上版本,這套程式庫為強化C++ Standard Library而設計,內含功能像是記憶體的Buffer處理,數學,Hash,MPI,圖形等等函式庫。 |
| 56 | {{{ |
| 57 | $ sudo apt-get install libboost.*-dev libboost-doc libboost.*1.34.1 |
| 58 | }}} |
| 59 | * 安裝log4cpp套件,此套件參考log4j而設計,故名思議是針對c++而設計的記錄日誌檔機制,在Hypertable裡的記錄檔案便是由此套記錄機制在處理Log功能。 |
| 60 | {{{ |
| 61 | $ sudo apt-get install liblog4cpp* |
| 62 | }}} |
| 63 | * 安裝expat套件,這個套件是一個XML處理程式庫,在Hypertable舉凡對於XML的存取都是引用這個套件來處理。 |
| 64 | {{{ |
| 65 | $ sudo apt-get install expat libexpat1 libexpat1-dev |
| 66 | }}} |
| 67 | * 安裝libattr套件,它是處理檔案的延伸屬性的程式庫。 |
| 68 | {{{ |
| 69 | $ sudo apt-get install libattr1 libattr1-dev |
| 70 | }}} |
| 71 | * 安裝readline套件,這份套件內含讀取terminal上的command line程式庫,在Hypertable裡面像是登入hql shell模式,或其他會需要讀取command line的情況會使用到這一類的功能。 |
| 72 | {{{ |
| 73 | $ sudo apt-get install libreadline5-dev |
| 74 | }}} |
| 75 | * 安裝ncurses,透過它可以撰寫terminal底下的文字模式介面程式,在Hypertable裡面像是登入hql shell模式,或需要模擬文字模式下的使用者介面,會使用到這一類的功能。 |
| 76 | {{{ |
| 77 | $ sudo apt-get install libncurses5 libncurses5-dev |
| 78 | }}} |
| 79 | * 安裝tcmalloc(Thread-Caching Malloc)套件,它是一個記憶體配置套件,可處理多執行緒情況下的記憶體回收之程式庫。 |
| 80 | {{{ |
| 81 | $ sudo apt-get install libgoogle-perftools0 libgoogle-perftools-dev |
| 82 | }}} |
| 83 | * 開始編譯程式前還需要建立安裝目錄,以及編譯後的物件檔案存放目錄 |
| 84 | {{{ |
| 85 | $ mkdir ~/src/hypertable |
| 86 | $ mkdir -p ~/build/hypertable |
| 87 | }}} |
| 88 | * 執行CMake來產生編譯組態文件(makefiles),並指定編譯後的執行檔模式為偵錯模式(Debug)或發行模式(Release),以及安裝路徑,如果組態過程中出現找不到預設路徑下的Boost程式庫時,可以再指定其路徑,指令範例如下列所示,其中 -D代表定義某個變數的前置符號。 |
| 89 | {{{ |
| 90 | $ cmake -DCMAKE_INSTALL_PREFIX="" -DCMAKE_BUILD_TYPE="Debug" -DBoost_INCLUDE_DIR="/usr/include/boost" ~/hypertable |
| 91 | }}} |
| 92 | * 編譯過程中,顯示結果如下: |
| 93 | {{{ |
| 94 | 組態過程... |