经过一段时间的调研,必须要有root才能用apt安装一些依赖包。缺了它们无法正常使用。
一、安装
1. 安装依赖
conda install -y build uuid squashfs libseccomp cryptsetup
这里只是能安装的依赖包,有些安装不上。
如果有root的话
sudo apt-get update && sudo apt-get install -y \
build-essential uuid-dev libgpgme-dev squashfs-tools \
libseccomp=dev wget pkg-config git cryptsetup-bin
2. 安装 GO 语言
wget https://golang.org/dl/go1.14.12.linux-amd64.tar.gz
tar -C /pub/software -xzvf go1.14.12.linux-amd64.tar.gz
rm go1.14.12.linux-amd64.tar.gz
我是翻墙之后直接访问https://golang.org/dl/go1.14.12.linux-amd64.tar.gz下载,再Filezila回来解压的。
添加环境变量等等
3. 下载 singularity
wget https://github.com/hpcng/singularity/releases/
download/v3.7.2/singularity-3.7.2.tar.gz
tar -xzf singularity-3.7.2.tar.gz
cd singularity
apt安装不上最新版本,不过无所谓,没有root也用不成apt
4. 安装 singularity
./mconfig
cd builddir
make
sudo make install
./mconfig --prefix=/PATH/
加上具体路径可以安装,否则会默认到一个什么乱七八糟的地方,后期不利于管理。
二、使用
1.下载image
singularity pull --arch amd64 library://library/default/ubuntu:20.04
singularity pull docker://ncbi/blast
singularity pull blast.tif docker-deamon:blast
可以从https://cloud.sylabs.io/library里面找,也可以去Docker Hub里面找images,接下来把docker本地镜像转换成singularity
2.运营沙箱
singularity build --sandbox blast ubuntu_20.04.sif
singularity shell -w -f blast/
singularity build blast/sif blast
singularity会自动挂载home和pwd目录,这点非常顺手。
shell进入交互界面 -w进入可写模式 -f成为fakeroot
容器的优势是你之前下载好的image里面已经有pipeline所需的环境了,如果还需要另外安装的话需要以上套路。
3.运行容器
singularity exec blast.sif blastp -h
$ singularity shell blast_latest.sif bash
Singularity> id
uid=1491(ug1051) gid=1001(VIP) groups=1001(VIP)
Singularity> exit
exit
$ singularity shell -f blast_latest.sif bash
INFO: Converting SIF file to temporary sandbox...
Singularity> id
uid=0(root) gid=0(root) groups=0(root)
exec直接运行sandbox里面的命令,不需要进入
网友评论