写在前面

本内容纯为个人爱好总结,相关安装方法请参考官网ROOT安装方法

官网安装流程如下:

注意

  • ROOT5,ROOT6的某些脚本不兼容,即ROOT5可以运行的脚本在ROOT6无法编译,反之亦然;
  • 需要数据分析程序比较老,入组内师兄的数据分析代码等等,适用ROOT5版本;
  • 如果想使用jupyter建议使用ROOT6.16.00或以上版本,浏览器选择Google Chrome;
  • 强烈建议参考吴鸿毅个人网站以及其Github中有关Linux配置以及ROOT安装脚本

本网页所涉及的安装部分参考了吴鸿毅个人网站以及其Github中有关Linux配置安装脚本中的内容

本网页所涉及的安装部分参考了吴鸿毅个人网站以及其Github中有关Linux配置安装脚本中的内容

本网页所涉及的安装部分参考了吴鸿毅个人网站以及其Github中有关Linux配置安装脚本中的内容

本网页所涉及的安装部分参考了吴鸿毅个人网站以及其Github中有关Linux配置安装脚本中的内容

本网页的目的

  • ROOT5已经被时代抛弃,当前流行的是ROOT6版本;
  • Linux系统以及编程语言语法都发生非常大的变化,逐代更新,本人使用过;
    • Scientific Linux 6.9, 7.0, 7.1, 7.2, 7.3, 7.4;(2024-12-31停止维护);
    • CentOS7;(2024-12-31停止维护)
    • Ubuntu 16.04, 18.04, 20.04;
  • 核物理实验中常用 Linux 包括了以下版本
  • 系统更新使得ROOT5安装出现了许多问题,致使安装编译失败(直接解压使用编译好的软件包除外),故将遇到的BUG进行汇总,形成此文。
  • 由于Github国内访问不方便,故将吴鸿毅Github中有关ROOT安装的脚本进行了整体汇总,方便复制使用,再次感谢吴鸿毅github以及wuhongyi.cn

ROOT Installation

安装依赖库

Scientific Linux 7 and CentOS 7

cmake3.7.2(可参考吴鸿毅配置脚本)

#!/bin/bash
#autoinstallcmake.sh
#Description: 
#Author: Hongyi Wu(吴鸿毅)
#Email: wuhongyi@qq.com 
#Created: 五 6月2 10:45:15 2017 (+0800)
#Last-Updated: 日 6月 18 13:47:15 2017 (+0800)
#By: Hongyi Wu(吴鸿毅)
#Update #: 6
#URL: http://wuhongyi.cn 

cmakefilename="cmake-3.7.2"

if [ `whoami` = "root" ];then 
echo "当前为root用户,能够执行此脚本!" 
else 
echo "请在ROOT权限下执行此脚本!!!"
exit 1
fi

#删除已有安装文件,重新下载
#此处为了减少下载时间,已经下载好该文件
#如须重新下载,请删除
rm -f ${cmakefilename}.tar.gz
vcmake=${cmakefilename%.*}
vcmake=`expr $vcmake | sed 's/cmake-/v/g'`
wget https://cmake.org/files/${vcmake}/${cmakefilename}.tar.gz

if [ ! -f "${cmakefilename}.tar.gz" ]; then
echo "文件 ${cmakefilename}.tar.gz 未下载成功"
exit 1
fi

num=`cat /proc/cpuinfo | grep processor | wc -l`

tar -zxvf ${cmakefilename}.tar.gz
cd ${cmakefilename}
./configure --prefix=/usr
make -j$num
make install
cd ..
rm -rf ${cmakefilename}
#autoinstallcmake.sh ends here

gcc-4.9.4,g++(可参考吴鸿毅配置脚本)

#!/bin/bash
#autoinstallgcc4.sh --- 
# 
# Description: 
# Author: Hongyi Wu(吴鸿毅)
# Email: wuhongyi@qq.com 
# Created: 五 6月2 10:50:17 2017 (+0800)
# Last-Updated: 四 4月 19 19:27:52 2018 (+0800)
# By: Hongyi Wu(吴鸿毅)
# Update #: 7
# URL: http://wuhongyi.cn 

yum -y install glibc-static libstdc++-static
yum -y install glibc-devel.i686 glibc-static.i686
yum -y install libstdc++-devel.i686 libstdc++-static.i686 

gccfilename="gcc-4.9.4"

if [ `whoami` = "root" ];then 
echo "当前为root用户,能够执行此脚本!" 
else 
echo "请在ROOT权限下执行此脚本!!!"
exit 1
fi

##删除已有安装文件,重新下载
rm -f ${gccfilename}.tar.gz
wget http://mirrors.ustc.edu.cn/gnu/gcc/${gccfilename}/${gccfilename}.tar.gz

if [ ! -f "${gccfilename}.tar.gz" ]; then
echo "文件 ${gccfilename}.tar.gz 未下载成功"
exit 1
fi

num=`cat /proc/cpuinfo | grep processor | wc -l`

tar -zxvf ${gccfilename}.tar.gz
cd ${gccfilename}
./contrib/download_prerequisites #自动编译下载所需文件
./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-checking=release--enable-languages=c,c++,fortran --disable-multilib
make -j$num
make install
cd ..
rm -rf ${gccfilename}

rm -f /lib64/libstdc++.so.6.0.20-gdb.py
 # 
 #autoinstallgcc4.sh ends here

其他必须依赖包

sudo yum -y install git 
sudo yum -y install make 
sudo yum -y install cmake3#CentOS7
sudo yum -y install binutils
sudo yum -y install libX11-devel 
sudo yum -y install libXpm-devel 
sudo yum -y install libXft-devel 
sudo yum -y install libXext-devel 
sudo yum -y install python 
sudo yum -y install python38#CentOS8
sudo yum -y install openssl-devel

其他基本依赖包

sudo yum -y install epel-release
sudo yum -y install redhat-lsb-core 
sudo yum -y install gcc-gfortran 
sudo yum -y install pcre-devel 
sudo yum -y install mesa-libGL-devel 
sudo yum -y install mesa-libGLU-devel 
sudo yum -y install glew-devel 
sudo yum -y install ftgl-devel 
sudo yum -y install mysql-devel 
sudo yum -y install fftw-devel 
sudo yum -y install cfitsio-devel 
sudo yum -y install graphviz-devel 
sudo yum -y install libuuid-devel 
sudo yum -y install avahi-compat-libdns_sd-devel 
sudo yum -y install openldap-devel 
sudo yum -y install python-devel 
sudo yum -y install numpy 
sudo yum -y install libxml2-devel 
sudo yum -y install gsl-devel 
sudo yum -y install readline-devel 
sudo yum -y install R-devel 
sudo yum -y install R-Rcpp-devel 
sudo yum -y install R-RInside-devel

吴鸿毅配置脚本添加的库)

yum -y install lz4.x86_64 lz4-devel.x86_64
yum -y install ruby.x86_64 ruby-devel.x86_64 ruby-libs.x86_64
yum -y install expect.x86_64 expect-devel.x86_64
yum -y install unuran.x86_64 unuran-devel.x86_64
yum -y install davix.x86_64 davix-devel.x86_64#对root5有影响
yum -y install pythia8.x86_64 pythia8-devel.x86_64 #对root5有影响

Ubuntu and other Debian-based distributions

cmake3.7.2(可参考吴鸿毅配置脚本)

  • Geant4的最新版本可能需要更高版本的cmake,建议Ubuntu系统下先不更换cmake版本;

gcc,g++

  • 使用命令安装gcc和g++
sudo apt-get install gcc-4.9
sudo apt-get install g++-4.9
  • 查看已经安装的gcc和g++版本
ls /usr/bin/gcc*
ls /usr/bin/g++*
  • 查看当前应用的gcc版本
- gcc -v
- g++ -v
  • 需要设置优先级(由于ubuntu20.04中已经存在gcc9.3,以便选取对应版本的gcc)
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 40
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 90
  • 选择gcc/g++版本
sudo update-alternatives --config gcc
sudo update-alternatives --config g++

根据提示选择对应的gcc/g++版本

其他必须依赖包

#如果手动安装了相应版本的cmake,g++,gcc不必执行前三行
#sudo apt-get -y install cmake 
#sudo apt-get -y install g++ 
#sudo apt-get -y install gcc 
sudo apt-get -y install dpkg-dev 
sudo apt-get -y install binutils 
sudo apt-get -y install libx11-dev 
sudo apt-get -y install libxpm-dev
sudo apt-get -y install libxft-dev 
sudo apt-get -y install libxext-dev 
sudo apt-get -y install python
sudo apt-get -y install libssl-dev

其他基本依赖包

sudo apt-get -y install gfortran 
sudo apt-get -y install libpcre3-dev
sudo apt-get -y install xlibmesa-glu-dev 
sudo apt-get -y install libglew1.5-dev 
sudo apt-get -y install libftgl-dev
sudo apt-get -y install libmysqlclient-dev 
sudo apt-get -y install libfftw3-dev 
sudo apt-get -y install libcfitsio-dev
sudo apt-get -y install graphviz-dev 
sudo apt-get -y install libavahi-compat-libdnssd-dev
sudo apt-get -y install libldap2-dev 
sudo apt-get -y install python-dev 
sudo apt-get -y install libxml2-dev 
sudo apt-get -y install libkrb5-dev
sudo apt-get -y install libgsl0-dev

吴鸿毅配置脚本添加的库)

sudo apt-get -y install openssl doxygen doxygen-latex doxygen-gui graphviz
sudo apt-get -y install mysql-server libmysqlclient-dev libfcgi-bin libfcgi-dev libsqlite3-dev
sudo apt-get -y install libqt5webkit5-dev libqt5webengine5 qtwebengine5-dev libqt5webenginecore5 libqt5webenginewidgets5 libqt5webengine-data
sudo apt-get -y install libqt5webchannel5-dev libqt5websockets5-dev libqt5websockets5 libqt5webview5-dev libqt5webview5
sudo apt-get -y install libqt5webchannel5-dev ##对root5有影响

ROOT安装脚本

ROOT5.34.36

#!/bin/bash
# autoinstallroot5.sh --- 
# 
# Description: 
# Author: Hongyi Wu(吴鸿毅)
# Email: wuhongyi@qq.com 
# Created: 五 6月  2 13:00:02 2017 (+0800)
# Last-Updated: 日 6月 25 09:24:46 2017 (+0800)
#           By: Hongyi Wu(吴鸿毅)
#     Update #: 11
# URL: http://wuhongyi.cn 

filename="root_v5.34.36"
pathinstall="/opt"
# ------------------------------------------------------------------------------
if [ `whoami` = "root" ];then 
    echo "当前为root用户,能够执行此脚本!" 
else 
    echo "请在ROOT权限下执行此脚本!!!"
    exit 1
fi
#yum -y remove qt5*
name=`expr $filename | sed 's/_v//g' | sed 's/\.//g'` #去除_v .
buildname="build$name"

##删除已有root包文件,重新下载
##此处为了减少下载时间,已经下载好该文件
##如须重新下载,请删除"#"
#rm -f ${filename}.source.tar.gz
#wget https://root.cern.ch/download/${filename}.source.tar.gz

if [ ! -f "${filename}.source.tar.gz" ]; then
    echo "文件 ${filename}.source.tar.gz 未下载成功"
    exit 1
fi

num=`cat /proc/cpuinfo | grep processor | wc -l`

tar -zxvf ${filename}.source.tar.gz
mv root $filename
mkdir $buildname
cd $buildname

##酌情选择
cmake -DCMAKE_INSTALL_PREFIX=${pathinstall}/${name} -Dall=ON  ../$filename
cmake -DCMAKE_INSTALL_PREFIX=${pathinstall}/${name} -Dall=ON -Ddavix=OFF ../$filename

make -j$num
make install
cd ../
rm -rf $buildname
rm -rf $filename

echo ""
echo "==========吴鸿毅 提示=========="
echo "如欲启用该版本ROOT请将 source ${pathinstall}/$name/bin/thisroot.sh  添加进 .bashrc "
# 
# autoinstallroot5.sh ends here

ROOT6.16.00

#!/bin/bash
# autoinstallroot6_py3.sh --- 
# 
# Description: 
# Author: Hongyi Wu(吴鸿毅)
# Email: wuhongyi@qq.com 
# Created: 四 4月 19 19:41:34 2018 (+0800)
# Last-Updated: 二 5月 21 21:59:08 2019 (+0800)
#           By: Hongyi Wu(吴鸿毅)
#     Update #: 3
# URL: http://wuhongyi.cn 

filename="root_v6.16.00"
pathinstall="/opt"
# ------------------------------------------------------------------------------
if [ `whoami` = "root" ];then 
    echo "当前为root用户,能够执行此脚本!" 
else 
    echo "请在ROOT权限下执行此脚本!!!"
    exit 1
fi

name=`expr $filename | sed 's/_v//g' | sed 's/\.//g'` #去除_v .
filename2=`expr $filename | sed 's/_v/-/g'`
buildname="build$name"

##删除已有安装文件,重新下载
##此处为了减少下载时间,已经下载好该文件
##如须重新下载,请删除"#"
#rm -f ${filename}.source.tar.gz
#wget https://root.cern.ch/download/${filename}.source.tar.gz

if [ ! -f "${filename}.source.tar.gz" ]; then
    echo "文件 ${filename}.source.tar.gz 未下载成功"
    exit 1
fi

num=`cat /proc/cpuinfo | grep processor | wc -l`

tar -zxvf ${filename}.source.tar.gz
mkdir $buildname
cd $buildname

#SL7 or CC7
cmake -DCMAKE_INSTALL_PREFIX=${pathinstall}/${name} -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib64/libpython3.6m.so  -Dall=ON  ../$filename2
#Ubuntu2004
cmake -DCMAKE_INSTALL_PREFIX=${pathinstall}/${name} -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.8 -Dqt5web=ON -Dwebgui=ON -Droot7=ON -Dfcgi=ON -Dgviz=ON -Dminuit2=ON -Dxrootd=OFF ../$filename2

make -j$num
make install
cd ../
rm -rf $buildname
rm -rf $filename2

echo ""
echo "==========吴鸿毅 提示=========="
echo "如欲启用该版本ROOT请将 source ${pathinstall}/$name/bin/thisroot.sh  添加进 .bashrc "
# 
# autoinstallroot6_py3.sh ends here

BUG

Scientific Linux 7 CentOS7 CentOS8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
ROOT5.34.36 BUG1 BUG2 BUG3 xi_test_ok BUG4 BUG5
ROOT6.16.00 wu_test_ok wu_test_ok BUG6 xi_test_ok wu_test_ok wu_test_ok
ROOT6.24.02 unknown unknown wu_test_ok unknown wu_test_ok wu_test_ok
  • unknown: 未测试
  • wu_test_ok:利用吴鸿毅个人网站脚本可成功安装;
  • wu_test_ok:本人根据官网教程成功安装;
  • BUG:本人利用吴鸿毅脚本遇到的bug;

BUG1-SL7安装ROOT53436报错

  • 使用吴鸿毅的脚本autoYUMinstallSL7.sh后,用吴鸿毅的脚本安装ROOT6没有问题,但用吴鸿毅的脚本安装ROOT5可能报错(相关库更新有关);
  • 解决办法:
    • 先按照官网安装安装ROOT5的库,cmake以及gcc后,,再运行吴鸿毅安装ROOT5脚本;
    • 有个错误与pythia8有关,安装ROOT5前先用yum删除该库函数;

BUG2-CentOS7安装ROOT53436报错

  • 同上

BUG3-CentOS8安装ROOT53436报错

  • 可参考Ubuntu20.04中安装ROOT53436的debug方法;

BUG4-Ubuntu18.04安装ROOT53436报错

  • 可参考Ubuntu20.04中安装ROOT53436的debug方法;

BUG5-Ubuntu20.04安装ROOT53436报错

无法安装相应的库,找不到源

解决办法:向/etc/apt/sources.list添加如下信息(阿里巴巴开源镜像站)

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

无法识别operator=

解决办法:安装低版本的gcc,g++以及cmake,安装方法见前面!

  • 建议gcc,g++ 4.9;
  • 建议cmake 3.7.2;

不识别type类型报错

  • 报错提示:
    • 'char16_t' does not name a type
    • 'UChar' does not name a type
  • 解决办法:安装低版本的gcc,g++以及cmake,安装方法见前面!

    • 将ROOT53436中CMakeLists.txt的Project()之前加入如下内容
    set(CMAKE_C_STANDARD 11)
    set(CMAKE_CXX_STANDARD 11)
    

不识别my_bool报错

  • 报错提示:
    • 'my_bool' does not name a type
    • 与mysql相关
  • 解决办法:
    • 方法一:cmake命令行中加入-Dmysql=OFF
    • 方法二:修改对应文件:sql/mysql/inc/TMySQLStatement.h以及TMySQLSterver.cxx ,将my_bool改为bool

找不到my_global头文件

  • 报错提示:

    • my_global.h:没有那个文件目录
    • 与mysql相关
  • 解决办法:

    • 方法一:cmake命令行中加入-Dmysql=OFF
    • 方法二:利用grep找到my_global.h所在位置,并注释掉#include <my_global.h>(好像没有这个库,别人也没有调用);

isnan报错

  • 报错提示:

    • 'isnan' was not declared in this scope
    • 与TMVA相关
  • 解决办法:

    • grep找到isnan(应该是/tmva/src/RuleFitParams.cxx)
    • 找到if(isnan(fstarVal))改为if(std::isnan(fstarVal))

DAVIX相关报错

  • 报错提示:

    • 与DAVIX相关
  • 解决办法:

    • 方法一:apt-get remove davix-dev davix
    • 方法二:cmake时加上-Ddavix=OFF

clad报错

  • 报错提示:
    • 与clad相关
  • 解决办法:
    • 疑似root6安装过程需要下载部分文件,因为与网络通常与否有关,重新执行安装步骤即可;

Python执行文件与库文件不匹配

  • 报错提示:
    • 与Python执行与库版本不对应
  • 解决办法:
    • 使用吴鸿毅代码安装后;
    • 执行apt -y install python3-dev

BUG6-CentOS8安装ROOT61600报错

  • 未解决!!!
In [1]:
!jupyter nbconvert ROOT_Installation_and_Debug.ipynb --to html
[NbConvertApp] Converting notebook ROOT_Installation_and_Debug.ipynb to html


[NbConvertApp] Writing 319206 bytes to ROOT_Installation_and_Debug.html


In [ ]: