我已经构建了一个奇异点/apptainer 容器,我正在尝试将其部署在集群计算环境中。该容器是通过使用以下命令从 docker 映像中拉取来构建的:
apptainer build --fakeroot crispresso2.sif docker://pinellolab/crispresso2
构建后,该容器在本地开发环境中运行完美,但在集群上运行时会产生错误(见下文)。无论容器是构建在本地开发环境还是集群上,都会出现同样的错误。
我尝试了多种不同的方法来构建这个容器,但由于某种原因一切都失败了。我想首先弄清楚为什么在一种环境中工作的容器在另一种环境中无法工作,然后从那里开始。任何有关这里出现问题的意见将不胜感激。
产生的错误:
交互运行时:
user@cluster[]node/directory$ apptainer shell crispresso2.sif
Apptainer>CRISPResso -h
产品:
bash: CRISPResso: command not found
非交互运行时:
user@cluster[]node/directory$ apptainer run crispresso2_latest.sif CRISPResso -h
产品:
Traceback (most recent call last):
File "/CRISPResso2/CRISPResso2_router.py", line 20, in <module>
sb.call(["CRISPResso"]+ sys.argv[2:])
File "/usr/lib/python2.7/subprocess.py", line 172, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 394, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1047, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
您是否在集群中使用不同的 shell,并具有不同的环境变量?看来您的
PATH
不包含 /opt/conda/bin
(CRISPResso
的位置,或者 CRISPResso
不知何故没有被放入 /opt/conda/bin
中。
您可以通过获取交互式会话然后运行
echo $PATH
,检查 /opt/conda/bin
来检查它是哪一个。如果存在,那么您只需 ls /opt/conda/bin
并确认 CRISPResso
是否存在。
我猜这两种情况之一会是这种情况,这应该有助于找到问题的原因。