利用奇异配方解决问题

问题描述

我是Singularity的初学者,我想在菜谱制作方面有所帮助。

我想使用GARM一个基因组组装对帐工具)对我组装的两个基因组进行对帐。由于我正在使用HPC服务器,因此我无权安装此工具所需的perl软件包(分别为Parallel::ForkManagerList::MoreUtils)和R。我发现有两种可能的解决方案为此(请告诉我我是否做错了或者还有其他事情可以做):

  1. 在本地安装R和perl模块(但在这种情况下,我应该更改所有对它们的脚本引用)

  2. 构建一个包含所有必需依赖项和GARM的奇异容器,因为服务器已安装Singularity 2.6

我选择了第二个解决方案,并决定使用配方来构建容器,如下所示:

Bootstrap: docker

From: ubuntu

%files 
    GARM_0.7.4

%post -c /bin/bash
    apt-get update
    apt-get install -y --force-yes perl build-essential cpanminus r-base

    cpanm Parallel::ForkManager List::MoreUtils
    export GARMBIN=/GARM_0.7.4/bin
    export GArmlIB=/GARM_0.7.4/lib
    export MUMBIN=/GARM_0.7.4/MUMmer3.22
    export AMOSBIN=/GARM_0.7.4/amos-3.0.0/bin
    export AMOSLIB=/GARM_0.7.4/amos-3.0.0/lib

%runscript
    exec perl /GARM_0.7.4/GARM.pl

其中GARM_0.7.4是下载的文件夹,其中包含软件需要的所有内容,R和perl模块除外。

我使用sudo singularity build garm.simg recipe-garm来构建容器。

然后使用singularity run garm.simg --help查看容器是否正常工作,结果如下:

Can't open perl script "/GARM_0.7.4/GARM.pl": Permission denied

现在,即使在服务器上我无法使用sudo,在PC上无论如何我都用sudo singularity run garm.simg --help尝试过,输出为:

Empty compile time value given to use lib at /GARM_0.7.4/GARM.pl line 12.
Can't locate GARM_main.pm in @INC (you may need to install the GARM_main module) (@INC contains:  /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.30.0 /usr/local/share/perl/5.30.0 /usr/lib/x86_64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /GARM_0.7.4/GARM.pl line 13.
BEGIN Failed--compilation aborted at /GARM_0.7.4/GARM.pl line 13.

我不知道怎么了。如果问题是garm文件夹未复制到容器内,从而无法运行garm脚本,或者配方中存在sintax问题,并且容器未运行脚本,我将无法获得。

编辑:从该工具的建议中将导出添加为README.txt,但情况没有改变。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)