Ubuntu下ROOT的安装及遇到的问题[220417更新]

  1. 2022.04.17更新
    1. 首先安装所需依赖包
    2. 用命令联网下载、解压并添加环境变量(推荐)
    3. 手动下载、解压并添加环境变量(可选)
  2. 以前的更新及原文
    1. 2019.09.18更新
    2. 2017.10.25更新
    3. 以下为 2017-04-26 21:13:15 原文:

2022.04.17更新

官网安装指南永远是最好的手册!
官网安装指南永远是最好的手册!
官网安装指南永远是最好的手册!

简单来说,现在ROOT的预编译二进制包已经可以比较完美的覆盖各系统版本,个人学习使用无需自行编译源码,前往Installing ROOT页面,查看安装指南照做即可,这里作简单复述。

首先安装所需依赖包

对于Ubuntu,在终端输入:

1
2
sudo apt-get install dpkg-dev cmake g++ gcc binutils libx11-dev libxpm-dev \
libxft-dev libxext-dev python libssl-dev

其它系统版本所需依赖,请查看ROOT-Dependencies

用命令联网下载、解压并添加环境变量(推荐)

在联网环境较好的情况下,可以直接运行以下命令来下载安装(ubuntu终端默认是下载解压到了~/root路径,可以自行确认或者cd到自己想要的路径再下载解压):

1
2
3
wget https://root.cern/download/root_v6.26.00.Linux-ubuntu20-x86_64-gcc9.3.tar.gz
tar -xzvf root_v6.26.00.Linux-ubuntu20-x86_64-gcc9.3.tar.gz
source root/bin/thisroot.sh # also available: thisroot.{csh,fish,bat}

上面命令里的版本号为适用于Ubuntu20的root_v6.26.00,可以参考Release页面,自行修改所需的版本名称(Release页面 点击版本号例如Release 6.26/02,然后就可以看到对应各系统及gcc版本的具体名称)。
然后继续执行:

1
2
echo "source root/bin/thisroot.sh" >> ~/.bashrc #注意 source 后的路径应与自己下载解压的路径一致,请自行确认
source ~/.bashrc

直接添加root路径到bash的环境变量,接下来在终端运行root就可以进入root环境了,退出root环境命令为.q

*tips:*macOS系统下,把.bashrc换成.zshrc;
或者也可以直接把root添加到~/.profile系统环境变量,执行

1
2
3
echo "export ROOTSYS=$HOME/root" >> ~/.profile  #请注意$HOME/后为自己下载解压的root路径
echo "export PATH=$ROOTSYS/bin:$PATH" >> ~/.profile
echo "export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH" >> ~/.profile

可自行搜索.profile与.bashrc以及.zshrc的区别。

手动下载、解压并添加环境变量(可选)

如果上面联网下载有问题,可以手动下载解压并手动添加环境变量。

首先还是需要执行第1步安装所需依赖包,然后前往ROOT-Release页面,下载所需版本(一般选择最新/较新版本即可),然后在Binary distributions,选择对应系统的版本并下载(例如Ubuntu 20的 root_v6.26.00.Linux-ubuntu20-x86_64-gcc9.3.tar.gz)。

然后解压到自己指定的文件夹(Ubuntu解压 是右键-提取为,这里假设解压到了~/Download/root/),然后在终端里执行:

1
2
cd ~/Download/root/
source root/bin/thisroot.sh

继续在终端运行root就可以进入root环境了,退出root环境命令为.q

上面source命令每次启动新的终端都需要执行一遍,如果不想每次都source环境变量,可以将该命令添加到系统环境变量中,这里展示手动添加系统环境变量,例如对于Ubuntu

1
2
vim ~/.bashrc
#或vim ~/.zshrc #for macOS

(如果不会用vim,对于Ubuntu,在文件管理器按ctrl+H,显示隐藏文件,然后直接双击打开.bashrc文件即可,或者执行sudo gedit ~/.bashrc用gedit来打开)。

然后在系统环境变量文件最后添加:

1
source ~/Download/root/bin/thisroot.sh #注意,这里的路径要对应你自己下载存放的root路径

再source一下或重启系统:

1
source ~/.bashrc

后记:
Linux、macOS、Windows系统下的安装使用,在官网都有非常详细的指南,请自行查看。
以下原来的编译方法应该也可以用,只是命令有所改变,在执行完./configure,屏幕会有提示:

按屏幕执行即可(但好像编译很慢?没等编译完,待测试反馈)。

联网、双系统时间等问题可以参考Windows10+Ubuntu18.04双系统快速简单安装指北

以前的更新及原文

2019.09.18更新

ROOT更新了cmake的安装方式,原来的configure/make方式仍然可以使用,但不支持某些新特性(详见ROOT building-introduction)。所以更新本贴,记录采用 “CMake编译源码的方式” 安装ROOT的过程,直接下载Binary distributions 的方式比较简单,可以自行摸索(前往ROOT官网下载对应系统版本的binary包解压即可)。

  1. 首先,依然是前往ROOT-download下载Source distribution,解压到指定文件夹(本文路径为~/Softwares/root_v6.18.04.source/root-6.18.04)。

  2. 因为采用CMake方式,需要先安装CMake。Ubuntu可以在终端输入cmake --version来检查是否已经安装了cmake,如果没有安装,可以在终端输入sudo apt-get install cmake来自动安装,但此方式在Ubuntu16.04LTS等老版本系统下可能安装的cmake版本过老,编译ROOT时会报错(要求好像是3.6.5以上)。此时可以在CMake官网查询最新版本,参考该网页来安装最新版本。如果网页中指南的wget方式下载过慢,也可以手动从cmake网页下载,然后参考以上网页配置安装,注意网页中指南是下载的对应版本的二进制包(比如cmake-3.15.3-Linux-x86_64.tar.gz),如果下载source源码,可以参考下载文件夹内的readme自行编译安装。

  3. 同样,编译前也需要安装必备软件包,列表可以在这里找到

1
2
sudo apt-get install git dpkg-dev cmake g++ gcc binutils libx11-dev libxpm-dev \
libxft-dev libxext-dev
  1. 开始编译,编译过程可以参考ROOT-building文档
  • 先cd到你想安装root的目标目录,本文将其与源码放在一起了
1
cd ~/Softwares/root_v6.18.04.source/root-6.18.04
  • 创建build目录,如果不创建一个新文件夹,cmake时会报错提示创建一个干净的目录用来编译
1
2
mkdir builddir
cd builddir
  • 在builddir目录下执行cmake检查cmake path/to/source,对于本文目录命令为
1
cmake ~/Softwares/root_v6.18.04.source/root-6.18.04
  • cmake通过后,即可以开始编译了(j4表示使用4核心,可以随计算机配置改变)
1
make -j4
  • 编译完成后,source修改环境变量,然后就可以使用root命令来启用ROOT环境了
1
2
3
source bin/thisroot.sh
root
.q [退出root]

若不想每次都在终端输入source环境变量,可以参照文末方法添加系统环境变量。


2017.10.25更新

给小室长也新装了Ubuntu 17.10系统,同样也安装ROOT,从官网下载ROOT二进制包,直接运行会报错(缺这缺那的,iostream都缺…),而下载源码编译,安装必要库之后,make编译进行1-2分钟后会报错如下:
lz4报错
提示和lz4压缩算法库有关,那个github页面已经打不开了…百度lz4-1.7.5,搜到关于lz4压缩算法的页面(https://fossies.org/linux/misc/legacy/lz4-1.7.5.tar.gz/), 下载,放到提示的/root-6.10.08/core/lz4/src/下,提取解压,然后cd到提出出的/lz4-1.7.5/这个文件夹,make一下…
再回到root文件下,继续 make -j8 ,就可以继续编译了…
8核全开的感觉真好

然而后面还会出来 fPIC 动态库链接错误问题,虽然提示 recompile with -fPIC,但再makefile文件一堆命令,哪些需要添加这个参数呢阿…之前别的程序也出现,查了许多,一直不知道怎么解决(我并不是一个专业的程序员啊,为什么要我解决程序员的问题,他们别人用root难道没有这个问题么,出去会发现,他们都用苹果[掩面])…
最后的链结失败:错误的值 recompile with -fPIC


以下为 2017-04-26 21:13:15 原文:

cern.root.ch

ROOT是CERN主导开发一个数据分析的环境框架,可以有效处理海量数据,并且现在搭配许多软件、插件也可以实现许多物理过程的模拟到结果输出。

简单记录下在Linux系统下安装ROOT 6.0x的过程:

  1. 首先在ROOT网站:https://root.cern.ch找到Download下载,目前ROOT的有3种Releases: Pro、Dev、Old,推荐首选Pro的稳定版本;
  2. 然后点击对应版本进入下载页面,虽然ROOT提供了许多对应系统的编译好的“二进制包”,但推荐还是选择下载最上方的“源码”,然后本地编译使用(如果下载二进制包的话,解压后,双击./bin/root就应该可以用了,但八成会有各种问题);
    ROOT下载页面
  3. 下载得到“root_v6.09.02.source.tar.gz”后,直接右键提取,然后在终端中cd到解压得到的文件夹准备编译(我将其提取到了自己建立的 ~/Softwares 文件夹下):
    终端执行:
1
./configure

该命令会检查所需的库文件等…一般都会缺很多必要的库,这时需要到https://root.cern.ch/build-prerequisites查询安装必要的库,对于Ubuntu,可以简单的直接在终端运行:

1
2
sudo apt-get install git dpkg-dev cmake g++ gcc binutils libx11-dev libxpm-dev \
libxft-dev libxext-dev

来安装所需的基本库,其它库可自行查看页面安装;

  1. 安装完所需库后,再运行
1
Softwares/root-6.08.06/configure

当最后没有报错后,出现"可以运行make来build"的提示时,就可以在终端输入:

1
make -j4

来编译了,其中"-j4"是指用4个核心编译,速度较快,当然如果有8核心或者8线程的cpu的话也可以试试-j8;

  1. 漫长的等待后,如果没有报错就算编译完成了,此时还不能顺利运行ROOT,需要在终端中输入环境变量:
1
source ~/Softwares/root-6.08.06/bin/thisroot.sh

然后就可以在终端直接输入:

1
root

来启动root环境了~
如果不想每次打开终端都需要输入source环境变量,则需要在系统环境变量中添加对应的环境变量,Ubuntu的系统环境变量配置文件".profile"位于home主文件夹下(Ubuntu按crtl+H可以显示隐藏文件),打开后,在最后添加:

1
2
3
export ROOTSYS=$HOME/Softwares/root-6.08.06
export PATH=$ROOTSYS/bin:$PATH
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH

以后只要打开终端,输入root就可以启动ROOT环境啦~
对了,对于初学者,在ROOT环境下退出是 .q 哦~