我正在使用 PLINK v 1.9(一种遗传学软件,而不是 PuTTY 界面,https: //www.cog-genomics.org/plink/1.9/dev )制作一个奇点容器。我能够在容器中成功编译软件,并且当我进入容器时可以看到 PLINK 文件和函数。为了让我的最终用户更轻松,我正在尝试将软件的主文件夹添加到奇点 $PATH 以便他们可以从命令行调用 plink ,但我无法实现这一点。
到目前为止,我已经尝试过:
- 在我的奇点配方文件的 %runscript 部分分配 SINGULARITYENV_APPEND_PATH=path/to/plink。
- 将 Plink 的源代码文件夹移动到 Singularity 的 /usr/local/bin
- 设置变量 PLINKDIR=/path/to/plink 并将其导出到我的配方文件的 %environment 部分,类似于他们在此处所做的。
这些方法都不起作用。我可以访问这个包的唯一方法是在我的奇异 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 从命令行调用它们?任何帮助,将不胜感激!