在Windows 10的Linux子系统(WLS)中安装singularity(version=2.6.0),并创建镜像。
在之前多次尝试中发现,在直接创建.simg镜像时会报告错误(Error: no more available loop devices.),导致创建失败。尝试发现可以通过添加–sandbox参数解决。完整命令如下:
sudo singularity build --sandbox image_name library/recipes其中,image_name为镜像的名称,library/recipes可以为shub,docker链接或符合singularity语法的配置文件(config.def)。如果在wsl中,输入上述命令后,提示无法找到此命令,而直接输入singularity可以正常显示相关信息。那么可以为singularity创建链接文件解决。
sudo ln -s /usr/local/singularity/bin/singularity /usr/bin/singularit配置文件实例:
Bootstrap: yum
OSVersion: 7
MirrorURL: http://mirror.centos.org/centos-%{OSVERSION}/%{OSVERSION}/os/$basearch/
Include: yum
%labels
Python version: 3.9.5
R version: 4.1.0
%post
yum -y update
yum -y groupinstall "Development Tools"
yum install -y gcc gcc-c++ gcc-gfortran java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64
yum install -y readline-devel bzip2-devel libXt-devel fonts-chinese tcl tcl-devel tclx tk tk-devel mesa-libGLU mesa-libGLU-devel libcurl libcurl-devel xz-devel.x86_64 libjpeg-devel pcre2-devel libtiff-devel libicu-devel which vim
%environment
export LC_ALL=C奇怪的是,如果把配置文件的名称改为demo.def或test.def,则无法创建镜像。
等创建完成,可以在运行命令中添加–writable参数运行镜像,并在镜像中安装相关的软件。
singularity shell --writable image_name软件安装完成后,可以通过如下命令将镜像重新打包为.simg文件。
singularity build image_name.simg image_name/