2

我一直在尝试在我的容器中设置一些别名,但我无法成功。在构建我放入的容器alias python3=python3.6%post,一切正常;别名已正确声明并在整个容器构建过程中使用。

但是,在构建容器并执行它之后,使用singularity exec中的别名声明%environmentor%runscript不起作用。我还尝试将别名声明命令放在容器中的 bash 脚本中并运行 bash 脚本,但它仍然不起作用。基本上,我认为我看起来像Docker 中的ENTRYPOINT for Singularity。有谁知道我做错了什么以及如何在容器中设置别名?

我正在使用奇点 2.6。

这是我正在使用的定义文件:

BootStrap: docker
From: ubuntu:16.04

%post
# Set up some required environment defaults
apt-get -y update && apt-get -y install software-properties-common && yes '' | add-apt-repository ppa:deadsnakes/ppa
apt-get -y update && apt-get -y install make \
                                        cmake \
                                        vim \
                                        curl \
                                        python3.6 \
                                        python3.6-dev \

curl https://bootstrap.pypa.io/get-pip.py | python3.6

alias python3=python3.6 #Here's where I declare the alias

python3 -m pip install -U pip
python3 -m pip install --upgrade pip
python3 -m pip install -U setuptools
python3 -m pip install  scipy \
                        numpy \
                        transforms3d \
                        matplotlib \
                        Pillow

# I also create a file containing a bash script to declare the alias
cd /
mkdir bash_aliases && cd bash_aliases
echo "alias python3=python3.6">bash_aliases.sh
chmod +x bash_aliases.sh


%runscript
alias python3=python3.6

# bash /bash_aliases/bash_aliases.sh # You may uncomment this as well
4

1 回答 1

1

虽然exec在使用容器时无法为模式设置别名,但可以run使用以下脚本为模式设置别名:

%runscript
    alias python3='python3.6'
    eval ${@}

exec和之间的区别在于,runexec直接运行您编写的命令,但run将您编写的任何内容传递给您编写的脚本%runscript

资源

于 2018-11-04T00:30:16.960 回答