四、在singularity安装举例:安装自己的R(一)
四、本节介绍如何构建自己的虚拟centos7.6,并运用root权限使用yum编译安装软件,这里以R为例
1、拉取并进入新的镜像,推荐使用北极星集群的docker服务器会快些
在login06(比较快):
singularitybuild --sandbox R-4.1.2 docker://bjxdockerfast:5000/centos7.6_bjx:latest
其他登陆节点
singularitybuild --sandbox R-4.1.2 docker://bjxdocker:5000/centos7.6_bjx:latest
或者使用docker自己服务器:
singularitybuild --sandbox R-4.1.2 docker://centos:7.6.1810
注意:
1、上述命令的意思是从服务器中拉取centos7.6镜像到沙盒文件夹R-4.1.2中
2、其中的7.6.1810为所需centos版本的tag,可在https://hub.docker.com/搜索到见二、
mkdir -p R-4.1.2/appsnew # 在镜像内部为宿主路径建立挂载点,方便将来挂载使用。
singularityshell -B /appsnew -w R-4.1.2
注意:-B /appsnew:/appsnew ,B为挂载选项;第一个为系统的/appsnew ,第二个为镜像内部的/appsnew,如果内部和外部文件夹相同,只需要写一个 。
-w 是将沙盒挂载为可写的意思。
安装好必要的软件包
Apptainer> yum install -y gcc gcc-c++ gcc-gfortran readline-devel bzip2-devel libXt-devel fonts-chinese tcl tcl-devel tclx tk tk-devel
Apptainer> yum install -y mesa-libGLU mesa-libGLU-devel libcurl libcurl-devel xz-devel.x86_64 pcre2-devel libicu wget make which perl libgfortran5
2、获取、编译并安装R
在镜像沙盒下创建tar目录,这里养成一个良好的系统,不要让软件太乱
Apptainer>mkdir -p /apps/tar /apps/source
进入目录
Apptainer>cd /apps/tar
获取源安装文件,并解压后进入解压后的目录
Apptainer>wget https://cran.r-project.org/src/base/R-4/R-4.1.2.tar.gz
Apptainer>tar -zxvf R-4.1.2.tar.gz ##忽略警告
Apptainer>cd R-4.1.2/
Apptainer>chmod 777 configure ##添加可执行
3、创建R的安装目录,
Apptainer>mkdir -p /apps/R/R-4.1.2
4、配置环境并编译
Apptainer>./configure --prefix=/apps/R/R-4.1.2 --enable-R-shlib
Apptainer>make -j10 ;make install
5、创建R的source文件
Apptainer>vi /apps/source/R-4.1.2.sh
输入以下红色字体的内容:
#!/bin/bash
export PATH=/apps/R/R-4.1.2/bin:$PATH
也可以:
echo '#!/bin/bash '>/apps/source/R-4.1.2.sh
echo 'export PATH=/apps/R/R-4.1.2/bin:$PATH' >>/apps/source/R-4.1.2.sh
更改权限 chmod 777 /apps/source/R-4.1.2.sh
6、测试是否可以运行:
Apptainer>source /apps/source/R-4.1.2.sh
然后执行
Apptainer>R
7、更新并加到虚拟环境里,虚拟环境的加载文件为/environment,类似/etc/rc.local
#更新
Apptainer>echo 'export PATH=/apps/R/R-4.1.2/bin:$PATH' >>/environment
或者:
Apptainer>echo 'source /apps/source/R-4.1.2.sh'>>/environment
8、输入并执行exit退出虚拟环境
Apptainer>exit
9、打包
singularitybuild R-4.1.2.sif R-4.1.2
##打包的时候出现:"Can't add file 的时候
chmod -R +r R-4.2.0 就可以,或者删除提示中没有用的文件
10、执行
#这里不需要加载/appsnew
singularityrun R-4.1.2.sif R