AlmaLinux 介绍
AlmaLinux OS 是一个开源、社区驱动的 Linux 操作系统,它填补了因 CentOS 稳定版本停止维护而留下的空白,同时更加强大。
安装 AlmaLinux
这个我用的是 windows 子系统进行安装
首先打开微软商店,然后搜索AlmaLinux,选择AlmaLinux9安装。

安装依赖软件包
Cmake 安装
这里Cmake我是直接安装的,并没有自己编译,直接安装的版本完全够用。
sudo dnf install cmake
expat 安装
sudo dnf install expat.x86_64 expat expat-devel
qt5core安装
arduino
sudo dnf install 'qt5*-devel.x86_64'
安装X11、Xmu和Motif库
sudo dnf install libX11-devel libXmu-devel motif-devel
XercesC 安装

XercesC在AmlaLinux中并不可以直接安装(也可能是我没找到),这里通过源码进行编译安装。

-
到终端使用命令
wget download-link进行下载 -
使用命令解压
tar -zxvf 文件名.tar.gz对文件进行解压 -
cd 下载后的文件夹 -
执行
./configure命令 -
执行
make -j线程数,如make -j8 -
执行
sudo make install
这样就是安装好了。
安装Geant4
这里说一下,我一开始编译的是最新版的Geant4-11.1.2(截止到2023.10.10),但是报错,这里我就降低一个版本。
下载Geant4源码压缩文件与数据压缩文件

可以看到,最新版的是11.1.2,所以我就下载11.1.1,这里对11.1.1 进行点击,打开网页页面如下图,这里获取下载链接方法与XercesC安装获取下载链接方法相同,不再过多赘述。

然后就在终端进行wget下载。
注意:这里我把Geant4的源码压缩包与dataset文件在同一文件夹下
这里对于数据集的下载我是mkdir dataset一个文件夹,然后进入dataset文件夹中,对数据集文件进行wget,这里数据集的下载链接获取同上。

这里可以使用解压命令对Geant4的压缩文件进行解压。
看上图可以发现我也创建了一个data文件夹,这时候我把dataset里面的数据集压缩文件复制到data文件夹中,这里dataset文件夹是做备份用的,防止以后用。这里之所以创建一个data文件夹是因为后面编译好的Geant4还需要data文件夹存放数据集,这里我就直接创建,到时候复制就好了。
bash
# 把dataset中的数据集压缩文件复制到data文件夹
cp -r /path/to/dataset/*tar.gz /path/to/data
# 批量解压tar.gz文件
for file in *.tar.gz; do tar -zxvf "$file"; done
# 批量删除tag.gz文件
rm -rf *tar.gz
编译Geant4
注意都是在Geant-v11.1.1-build内操作
- cmake
当解压好Geant4压缩文件后,创建一个Geant-v11.1.1-build文件夹(可以根据自己的文件创建,甚至创建为Geant4-build都可以,没有要求),然后使用下面命令进行编译(cd到Geant-v11.1.1-build文件夹内进行执行)。
ini
cmake -DCMAKE_INSTALL_PREFIX=/path/to/geant4-v11.1.1-build -DGEANT4_BUILD_MULTITHREADED=ON -DGEANT4_USE_GDML=ON -DGEANT4_USE_QT=ON -DGEANT4_USE_OPENGL_X11=ON -DGEANT4_USE_RAYTRACER_X11=ON -DGEANT4_USE_XM=ON /path/to/geant4-v11.1.1
注意/path/to是geant4-v11.1.1-build文件夹的父路径,需要自己替换/path/to/geant4-v11.1.1-build为源码文件夹,/path/to/geant4-v11.1.1-build为要安装的位置,这里pwd一下自己进行路径替换。如geant4-v11.1.1-build在/home/admin/app下,那么path/to就是/home/admin/app,下面遇到的所有情况同理。

cmake成功后的示例,只要中间不爆红,不退出编译就行。
- make -j
再执行 make -j(j为并行核数),如make -j8

-
make install 最后执行
make install,就会将安装文件写入,指定的安装文件夹中。 -
将数据包copy到Geant中
bash
cp -r /path/to/data /path/to/geant4-v11.1.1-build/share/Geant4
以上就编译好了
配置环境变量
- 执行
vi ~/.bashrc命令,把下面内容添加到结尾。
bash
# Geant4配置
export GEANT4=/path/to/geant4-v11.1.1-build
source $GEANT4/bin/geant4.sh
- 执行
source ~/.bashrc命令
测试
进入存放例子的文件夹,复制一个例程。
我的存放路径是/path/to/geant4-v11.1.1-build/share/Geant4/examples/basic/B1
这里我复制的是B1,其在/path/to/geant4-v11.1.1-build/share/Geant4/examples/basic路径下。basic文件夹是基本的例程,有B1~B5的5个例程。
测试步骤:
- 进入复制的B1文件夹中
- 创建一个build文件夹并进入build文件夹:mkdir build && cd build
- 运行
cmake ..命令

- 运行
make -j

可以看到已经生成一个exampleB1文件。
- 运行
./exampleB1命令

ROOT安装
命令:
sudo dnf install root python3-root
这里无法使用jupyter,发现其依赖gui,暂时不可用,但是可以在python上使用ROOT,运行python3就可以import ROOT,对于在该系统下的jupyter使用ROOT,后面解决了再出文章。
示例:
ini
from ROOT import TH1D,TCanvas
# 创建一个叫c1的画布,标题为Histograms Exmple,画布宽600,高900
c1 = TCanvas("c1", "Histograms Exmple", 800, 600)
# 创建一个叫h1d1,标题为TH1D Exmple,把[-10,10]区间分为200个小区间的直方图
h1d1 = TH1D("h1d1", "TH1D Exmple", 200, -10, 10)
# FillRandom 用于高斯分布、泊松分布等填充。
h1d1.FillRandom("gaus", 10000) # 使用gaus,并填充10000个数据
h1d1.Draw()

个人感觉如果使用python来写root没有docker里面构建jupyter环境方便,而且在jupyter中可以写C++的ROOT代码。(需要Docker文件构建jupyter环境的私我)
直接使用root也是可以的。

END
好了,本期到此结束,我们下期再见