溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Ubuntu14.04中怎么安裝ROOT集群

發(fā)布時間:2021-07-13 11:38:18 來源:億速云 閱讀:268 作者:Leah 欄目:云計算

Ubuntu14.04中怎么安裝ROOT集群,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

部署準備

修改apt源

  修改/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。

安裝gcc,g++

  如果系統(tǒng)已經(jīng)安裝gcc和g++,可跳過此步驟。

# apt-get install gcc
# apt-get install g++

安裝cmake

  直接通過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

安裝zlib庫

  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

部署ROOT集群

安裝ROOT

  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

  安裝XRootD有兩種方法,通過ROOT源碼包中的腳本安裝,或者直接從官網(wǎng)下載源碼安裝。

通過ROOT源碼包中的腳本安裝XRootD

  進入ROOT源碼包目錄,執(zhí)行以下語句即可:

./build/unix/installXrootd.sh -v 3.0.0 /opt

源碼安裝XRootD:

  解壓后并進入源碼目錄:

# 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/

安裝PoD

  官網(wǎng)(http://pod.gsi.de)下載源碼,這里下載使用的是3.16版本的源碼:pod.gsi.de/releases/pod/3.16/PoD-3.16-Source.tar.gz。如果連接失效,可自行查找。解壓源碼壓縮包后,并進入源碼目錄:

cmake命令

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命令

  運行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命令,終于完美通過。

make install命令

  該命令運行無任何報錯。如果無指定配置,PoD會被安裝在用戶目錄的Pod目錄下,如我以root用戶安裝,則安裝在/root/PoD目錄下。

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目錄都是一樣的,可以直接拷貝。

組成ROOT集群

  運行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è)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI