AlmaLinux OS 是一个开源、社区驱动的 Linux 操作系统,它填补了因 CentOS 稳定版本停止维护而留下的空白,同时更加强大。
这个我用的是 windows 子系统进行安装
首先打开微软商店
,然后搜索AlmaLinux
,选择AlmaLinux9
安装。
这里 Cmake 我是直接安装的,并没有自己编译,直接安装的版本完全够用。
sudo dnf install cmake
sudo dnf install expat.x86_64 expat expat-devel
sudo dnf install 'qt5*-devel.x86_64'
sudo dnf install libX11-devel libXmu-devel motif-devel
XercesC 在 AmlaLinux 中并不可以直接安装(也可能是我没找到),这里通过源码进行编译安装。
到终端使用命令wget download-link
进行下载
使用命令解压tar -zxvf 文件名.tar.gz
对文件进行解压
cd 下载后的文件夹
执行./configure
命令
执行make -j线程数
,如make -j8
执行sudo make install
这样就是安装好了。
这里说一下,我一开始编译的是最新版的Geant4-11.1.2(截止到2023.10.10),但是报错,这里我就降低一个版本。
打开Old Geant4 releases
可以看到,最新版的是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
文件夹存放数据集,这里我就直接创建,到时候复制就好了。
# 把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
Geant-v11.1.1-build
内操作当解压好 Geant4 压缩文件后,创建一个Geant-v11.1.1-build
文件夹(可以根据自己的文件创建,甚至创建为 Geant4-build 都可以,没有要求),然后使用下面命令进行编译(cd
到 Geant-v11.1.1-build 文件夹内进行执行)。
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
(j 为并行核数),如make -j8
make install
最后执行make install
,就会将安装文件写入,指定的安装文件夹中。
将数据包 copy 到 Geant 中
cp -r /path/to/data /path/to/geant4-v11.1.1-build/share/Geant4
以上就编译好了
vi ~/.bashrc
命令,把下面内容添加到结尾。# 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 个例程。
测试步骤:
cmake ..
命令make -j
可以看到已经生成一个exampleB1
文件。
./exampleB1
命令命令:
sudo dnf install root python3-root
这里无法使用 jupyter,发现其依赖 gui,暂时不可用,但是可以在 python 上使用 ROOT,运行python3
就可以import ROOT
,对于在该系统下的 jupyter 使用 ROOT,后面解决了再出文章。
示例:
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 也是可以的。
好了,本期到此结束,我们下期再见