# 2023.02.13-在超算上搭建Singularity环境并配置Geant4
# I. 制作singularity包
# 1. 进入fakeroot节点
ssh <user_id>@162.105.133.209
# 2. 制作并进入sandbox镜像
搭建ubuntu
singularity build --fakeroot --sandbox Geant4 docker://ubuntu:22.04
进入Geant4环境(sandbox)
singularity shell --fakeroot -w Geant4
# 3. 配置geant4环境
安装基本环境
apt-get install build-essential apt-get install wget
下载geant4
mkdir geant4 wget https://geant4-data.web.cern.ch/releases/geant4-v11.1.0.tar.gz tar -xzvf geant4-v11.1.0.tar.gz
安装依赖包(若报错,则分别单独安装)
sudo apt-get install -y cmake libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev libhdf5-serial-dev hdf5-tools sudo apt-get install -y libexpat1-dev sudo apt install -y qt5*
编译安装
mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/root/Geant4/home/geant4 /root/Geant4/home/geant4-v11.1.0 cmake -DGEANT4_INSTALL_DATA=ON . make -jN # N表示处理器数量,需修改为实际值 make install
配置环境变量
cd /root/Geant4/etc/skel/ vim .bashrc
将下列内容添加到
.bashrc
source /root/Geant4/home/geant4/bin/geant4.sh source /root/Geant4/home/geant4/share/Geant4/geant4make/geant4make.sh
配置
cp /root/Geant4/etc/skel/.bashrc /root/Geant4/home cd /root/Geant4/home source .bashrc
检验geant4是否配置成功
cd /root/Geant4/home/geant4/share/Geant4/examples/basic/B1 mkdir build && cd build cmake .. make ./exampleB1 run1.mac
若无报错则配置成功
退出
exit
# 4. 打包
singularity build --fakeroot s-Geant4.sif Geant4/
# II. 配置go&singularity
# 1. 配置go环境
# 超算Data节点
export VERSION=1.17.2 OS=linux ARCH=amd64
wget https://dl.google.com/go/go$VERSION.$OS-$ARCH.tar.gz
tar -xzvf go1.17.2.linux-amd64.tar.gz
rm -f go1.17.2.linux-amd64.tar.gz
export PATH=/lustre/home/<user_id>/go/bin:$PATH
# 2. 安装singularity
module load singularity/3.11.3
# 3. 环境变量
cd $HOME
vim .bashrc
# 将下列语句添加到.bashrc中
# export PATH=/lustre/home/<user_id>/go/bin:$PATH
source .bashrc
# III. 启用singularity
# 1. 将SIF镜像下载到常规节点
scp -r <user_id>@162.105.133.209:/home/<user_id>/s-Geant4.sif /gpfs/share/home/<user_id>/
# 2. 转换成sandbox镜像并启用
singularity build --sandbox Geant4 s-Geant4.sif
singularity shell -w Geant4
# 3. 配置环境变量
cd Geant4/home
vim .bashrc
# 将下列语句添加到文件末尾
# source /lustre/home/2201210084/singularity/Geant4/home/geant4/bin/geant4.sh
# source /lustre/home/2201210084/singularity/Geant4/home/geant4/share/Geant4/geant4make/geant4make.sh
source .bashrc
看见如下字样表示成功
# IV. 附录
# 1. SIF容器与sandbox相互转换
# 1. 将SIF格式的容器转换成sandbox;
singularity build --sandbox XXX XXX.sif
# 2. 将sandbox容器镜像转化成SIF格式;
singularity build XXX.sif XXX
# 2. 在fakeroot节点上删除sandbox镜像
# 假设要删除的为文件夹名为molspin的sandbox镜像
# 首先,以可读的模式进入要删除的镜像
singularity shell --fakeroot -w molspin
# 删除掉容器中,基于fakeroot创建的所有文件
rm -rf /* 1>/dev/null 2>&1
# 退出镜像
exit
# 将创建好的软件镜像上传到高性能计算集群,加载singularity软件环境
# 删除掉剩下的
rm -rf molspin