您好,登錄后才能下訂單哦!
Ubuntu14.04中怎么安裝ROOT集群,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
部署準備
修改/etc/apt/sources.list,換成國內的163源,下載會更快和穩(wěn)定一些。
# vim /etc/apt/sources.list deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
再調用apt-get update更新index。
如果系統(tǒng)已經(jīng)安裝gcc和g++,可跳過此步驟。
# apt-get install gcc # apt-get install g++
直接通過apt-get安裝的cmake在安裝ROOT組件時會出現(xiàn)問題,所以這里建議源碼安裝,我這里使用的是2.8.8版本。官網(wǎng)下載地址:https://cmake.org/files/,可選擇自己適合的版本。
- 解壓:tar xvf cmake-2.8.8.tar.gz - 進入解壓目錄:cd cmake-2.8.8 - ./bootstrap - make - make install
github上(https://github.com/madler/zlib)可下載對應的zlib庫,我使用的是1.2.3版本,下載地址為:https://github.com/madler/zlib/archive/v1.2.3.zip - 解壓:unzip zlib-1.2.3.zip - 進入解壓目錄:cd zlib-1.2.3 - ./configure 注意:在make之前,需要修改Makefile,否則調用庫時會出現(xiàn)錯誤。找到 CFLAGS=-O3 -DUSE_MMAP這一行,在后面加入-fPIC,即變成CFLAGS=-O3 -DUSE_MMAP -fPIC - make - make install
apt-get install procmail
binary安裝:https://root.cern.ch/content/release-60606。選擇對應的OS系統(tǒng)編譯包。解壓并將其移動至/opt目錄下:
# tar zxvf root_v6.06.06.Linux-ubuntu14-x86_64-gcc4.8.tar.gz # mv root /opt
再將ROOT相關配置寫入初始化文件,這里在/etc/profile.d/root.sh末尾加入以下語句:
export ROOTSYS=/opt/root export PATH=$PATH:$ROOTSYS/bin source $ROOTSYS/bin/thisroot.sh
source /etc/profile.d/root.sh讓配置生效。運行命令root -b測試root是否能正常運行:
#root -b root: error while loading shared libraries: libXpm.so.4: cannot open shared object file: No such file or directory
缺少libXpm庫,運行apt-get install libxpm4命令安裝。安裝時有可能會提示缺少安裝包,這和本地的源index有關系,需要先向遠端源同步后(運行apt-get update命令),再安裝xpm包。安裝成功。
# apt-get install libxpm4 Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: libxpm4 0 upgraded, 1 newly installed, 0 to remove and 5 not upgraded. Need to get 37.0 kB of archives. ……
再次運行root -b命令來測試,再次報錯。
# root -b ERROR in cling::CIFactory::createCI(): cannot extract standard library include paths! Invoking: echo | LC_ALL=C c++ -pipe -m64 -Wall -W -Woverloaded-virtual -fsigned-char -fPIC -pthread -std=c++11 -Wno-deprecated-declarations -Wno-comment -Wno-unused-parameter -Wno-maybe-uninitialized -Wno-unused-but-set-variable -Wno-missing-field-initializers -fPIC -fvisibility-inlines-hidden -std=c++11 -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -Wcast-qual -fno-strict-aliasing -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings -Wno-unused-local-typedefs -O2 -DNDEBUG -xc++ -E -v - 2>&1 >/dev/null | awk '/^#include </,/^End of search/{if (!/^#include </ && !/^End of search/){ print }}' | grep -E "(c|g)\+\+" results in results in with exit code 256 input_line_1:1:10: fatal error: 'new' file not found #include <new>
缺少C++的new包,這個報錯極有可能是未安裝c++引起的,因為ROOT及其它組件都是使用C++編寫的。因此需要安裝gcc和gcc-c++。
# apt-get install gcc …… # apt-get install g++ ……
運行root -b命令,終于成功,未報錯。
安裝XRootD有兩種方法,通過ROOT源碼包中的腳本安裝,或者直接從官網(wǎng)下載源碼安裝。
進入ROOT源碼包目錄,執(zhí)行以下語句即可:
./build/unix/installXrootd.sh -v 3.0.0 /opt
解壓后并進入源碼目錄:
# mkdir build; cd build # cmake /root/xrootd-3.3.0 -DCMAKE_INSTALL_PREFIX=/opt/xrootd # make # make install
如果完全成功,則可以相關配置寫入初始化文件,這里可以繼續(xù)加入/etc/profile.d/root.sh的末尾:
source $ROOTSYS/bin/setxrd.sh /opt/xrootd/
官網(wǎng)(http://pod.gsi.de)下載源碼,這里下載使用的是3.16版本的源碼:pod.gsi.de/releases/pod/3.16/PoD-3.16-Source.tar.gz。如果連接失效,可自行查找。解壓源碼壓縮包后,并進入源碼目錄:
mkdir build cd build cmake -C ../BuildSetup.cmake ..
運行cmake時,提示缺少boost庫,這里需要安裝boost庫。
apt-get install libboost-dev
安裝后繼續(xù)運行上述的cmake命令,還是報錯,提示缺少以下庫:
The following Boost libraries could not be found: boost_thread boost_program_options boost_filesystem boost_system boost_unit_test_framework
有個小tips:這些庫直接使用apt-get install +庫名的方式是不成功的,因為安裝包和這個名稱并不完全匹配,這里可以用apt-cache search的方法來查找安裝包的名稱再安裝,以boost_thread為例。
# apt-cache search boost | grep thread libboost-thread-dev - portable C++ multi-threading (default version) libboost-thread1.46-dev - portable C++ multi-threading libboost-thread1.46.1 - portable C++ multi-threading libboost-thread1.48-dev - portable C++ multi-threading libboost-thread1.48.0 - portable C++ multi-threading
根據(jù)這個提示,我就可以直接安裝apt-get install libboost-thread-dev即可。以下:
apt-get install libboost-thread-dev apt-get install libboost-program-options-dev apt-get install libboost-filesystem-dev apt-get install libboost-system-dev apt-get install libboost-test-dev
再接著運行cmake -C ../BuildSetup.cmake ..命令,終于成功。
運行make命令,又報錯了。
/usr/include/boost/thread/xtime.hpp:23:5: error: expected identifier before numeric constant TIME_UTC=1
這個是boost1.5版本以下的一個固有bug,變量么命名重復了。修改起來很簡單,打開/usr/include/boost/thread/xtime.hpp,將23行和71行的TIME_UTC都修改為TIME_UTC_即可,也就是說保證沒有重命名。 再次運行make命令,再次提示錯誤。
/root/PoD-3.16-Source/app/MiscCommon/proof_status_file/ProofStatusFile.h:88:13: error: 'uint16_t' does not name a type uint16_t xpdPort() const
看起來是編譯時不認識uint16_t這個別名,修改很簡單,頭文件包含即可。在/root/PoD-3.16-Source/app/MiscCommon/proof_status_file/ProofStatusFile.h中的第19行加入#include <stdint.h>。具體插入的位置可能因PoD代碼版本不同而有些差別,但有C或者C++基礎的人應該很容易能找到合適的位置。 再次運行make命令,終于完美通過。
該命令運行無任何報錯。如果無指定配置,PoD會被安裝在用戶目錄的Pod目錄下,如我以root用戶安裝,則安裝在/root/PoD目錄下。
相關配置寫入初始化文件,這里可以繼續(xù)加入/etc/profile.d/root.sh的末尾:
source /root/PoD/3.16/PoD_env.sh
source /etc/profile.d/root.sh讓配置生效。運行pod-server start,如果是第一次運行,會下載相關組件wn_bins目錄到/root/PoD/3.16/bin/。如果服務器沒有訪問外網(wǎng)的權限,可以使用虛擬機搭建以上所有步驟,下載wn_bins目錄。無論什么OS,下載的wn_bins目錄都是一樣的,可以直接拷貝。
運行pod-server start,待其下載wn_bins目錄后,如果沒有出現(xiàn)錯誤,會出現(xiàn)如下結果:
# pod-server start Starting PoD server... updating xproofd configuration file... starting xproofd... starting PoD agent... preparing PoD worker package... selecting pre-compiled bins to be added to worker package... PoD worker package: /root/.PoD/wrk/PoDWorker.sh ------------------------ XPROOFD [1809] port: 21001 PoD agent [1848] port: 22002 PROOF connection string: root@mac00000102030a.hostname.com:21001
使用上述所有方法,搭建兩個服務器環(huán)境,從而搭建一套擁有一個server和一個client的小集群。ROOT服務器之間又多種通訊方式,這里,我們使用最簡單直接的ssh方式。首先,兩臺服務器需要建立ssh登錄互信,從而實現(xiàn)ssh登錄免密碼。搭建方法可見:http://chenlb.iteye.com/blog/211809。
之后,選擇其中服務器A作為server,服務器B作為client(worker)。在server上,編輯/root/pod_ssh.cfg文件,內容如下:
@bash_begin@ . /etc/profile.d/root.sh @bash_end@ r1, root@109.105.115.249,,/tmp/test, 2
前三行是ssh到client之后,需要執(zhí)行的腳本文件,這里就是在各client上執(zhí)行下ROOT系統(tǒng)的參數(shù)配置,設置環(huán)境變量等。第五行則是訪問client的配置,每個client都對應一行,因為我們這里只有一個client,所以就只有一行。這一行的格式是:
<table border="1" > <tr> <td align="center">1</td> <td align="center">2</td> <td align="center">3</td> <td align="center">4</td> <td align="center">5</td> </tr> <tr> <td>client唯一識別符,不可重復</td> <td>用戶名@ip或者hostname</td> <td>ssh參數(shù),可以為空</td> <td>client端工作目錄</td> <td>期望的client端worker個數(shù),可以為空</td> </tr> </table> 然后,在server端執(zhí)行pod-ssh -c /root/pod_ssh.cfg submit --debug來建立集群。顯示如下,則說明server端成功:
# pod-ssh -c /root/pod_ssh.cfg submit --debug ** [Mon, 29 Aug 2016 10:40:18 +0800] preparing PoD worker package... ** [Mon, 29 Aug 2016 10:40:18 +0800] selecting pre-compiled bins to be added to worker package... ** [Mon, 29 Aug 2016 10:40:18 +0800] PoD worker package: /root/.PoD/wrk/PoDWorker.sh ** [Mon, 29 Aug 2016 10:40:18 +0800] pod-ssh config contains an inline shell script. It will be injected it into wrk. package ** [Mon, 29 Aug 2016 10:40:18 +0800] preparing PoD worker package... ** [Mon, 29 Aug 2016 10:40:18 +0800] inline shell script is found and will be added to the package... ** [Mon, 29 Aug 2016 10:40:18 +0800] selecting pre-compiled bins to be added to worker package... ** [Mon, 29 Aug 2016 10:40:18 +0800] PoD worker package: /root/.PoD/wrk/PoDWorker.sh ** [Mon, 29 Aug 2016 10:40:18 +0800] There are 5 threads in the tread-pool. ** [Mon, 29 Aug 2016 10:40:18 +0800] Number of PoD workers: 1 ** [Mon, 29 Aug 2016 10:40:18 +0800] Number of PROOF workers: 2 ** [Mon, 29 Aug 2016 10:40:18 +0800] Workers list: ** [Mon, 29 Aug 2016 10:40:18 +0800] [r1] with 2 workers at root@109.105.115.249:/tmp/test/r1 r1 [Mon, 29 Aug 2016 10:40:18 +0800] pod-ssh-submit-worker is started for root@109.105.115.249 (dir: /tmp/test/r1, nworkers: 2, sshopt: ) ** [Mon, 29 Aug 2016 10:40:19 +0800] ******************* Successfully processed tasks: 1 Failed tasks: 0 *******************
我們再登錄client端,進入/root/pod_ssh.cfg中設置的client端工作目錄工作目錄。
# ls libboost_filesystem-mt.so.5 libpod_protocol.so PoD.cfg PoDWorker.sh proof.conf user_worker_env.sh xpd.log libboost_program_options-mt.so.5 libproof_status_file.so pod-user-defaults pod-wrk-bin-3.16-Darwin-universal.tar.gz server_info.cfg version libboost_system-mt.so.5 libSSHTunnel.so PoDWorker.lock pod-wrk-bin-3.16-Linux-amd64.tar.gz ssh-tunnel xpd.cf libboost_thread-mt.so.5 pod-agent PoDWorker.pid pod-wrk-bin-3.16-Linux-x86.tar.gz ssh_worker.log xpd.cf.bup
可見,都是一些庫、配置文件和日志等。我們暫時主要關注日志文件ssh_worker.log,日志末尾顯示如下,則表示完全成功:
*** [Mon, 29 Aug 2016 10:44:48 +0800] Attempt to start pod-agent (1 out of 3) *** [Mon, 29 Aug 2016 10:44:48 +0800] Attempt to start and detect xproofd (1 out of 10) *** [Mon, 29 Aug 2016 10:44:48 +0800] trying to use XPROOF port: 21002 *** [Mon, 29 Aug 2016 10:44:48 +0800] starting xproofd... *** [Mon, 29 Aug 2016 10:44:48 +0800] xproofd is running. pid=[2794] port=[21002] *** [Mon, 29 Aug 2016 10:44:48 +0800] starting pod-agent...
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。