我正在用PLINK v 1.9(遗传软件,而不是PuTTY接口https://www.cog-genomics.org/plink/1.9/dev)制作一个奇异容器。我能够成功地在容器中编译软件,并且当我将其装入容器时,可以看到PLINK文件和功能。为了使最终用户更轻松,我尝试将软件的主文件夹添加到奇异$ PATH中,以便他们只能从命令行调用plink,但是我无法实现。
到目前为止,我已经尝试过:
这些方法都不起作用。我访问此软件包的唯一方法是在我的奇异exec命令中拼出完整路径。
singularity exec test.simg /path/to/plink/plink --version
我只想运行
singularity exec test.simg plink --version
我的奇异配方文件的内容:
BootStrap: docker
From: ubuntu:16.04
%labels
Plink Version 1.9
%runscript
# Allows us to run the versions of the packages installed in the post
# section
exec plink19 "$@"
%environment
export SINGULARITYENV_PLINKDIR="/plink-ng-b15c19f/1.9/"
%post
# Make some directories for storage
mkdir /new_folder_1 /new_folder_2
apt-get update
apt-get -y upgrade
apt-get install -y --no-install-recommends \
software-properties-common \
build-essential \
apt-transport-https \
curl \
git \
wget \
libfreetype6-dev \
pkg-config \
python \
python-dev \
dh-autoreconf \
libarchive-dev \
libatlas-dev \
libatlas-base-dev \
zlib1g-dev
# Install PLINK
wget https://github.com/chrchang/plink-ng/archive/b15c19f.tar.gz
tar xvf b15c19f.tar.gz
cd /plink-ng-b15c19f/1.9/
./plink_first_compile
ln -s plink plink19
%test
echo $PLINKDIR
echo语句不输出任何内容。我如何将这样的自定义软件包(意味着未使用apt-get安装)添加到奇异环境中,以便可以使用奇异exec从命令行调用它们?任何帮助,将不胜感激!
答案 0 :(得分:0)
您应该可以将其添加到您的路径中:
%environment
PATH=$PATH:/path/to/plink/
此外,编辑您的运行脚本:
%runscript
exec "$@"
然后您可以运行:
singularity run test.simg plink --version
答案 1 :(得分:0)
您的消息的第一部分提到“以便他们只能从命令行调用plink,但我无法实现这一点。”在这种情况下,为什么不只是:
apt-get install -y plink1.9
在您的定义文件中?
就我而言,如果我尝试singularity exec imgfile.sif plink --version
,则显然不起作用,因为您必须致电plink1.9
,所以:singularity exec imagfile.sif plink1.9 --version
。