当尝试为我的实验室研究运行更新的 docker 容器时,我在使用的一个包中收到一个错误,该错误涉及缺少名为“run”的 shell 命令。特别是,它位于 MIRTK 包的 DrawEM 脚本中,可以在此处找到其中之一:https://github.com/DevelopmentalImagingMCRI/MCRIBS/blob/master/MIRTK/MIRTK/Packages/DrawEM/scripts/preprocess.sh
(第 41 行是第一个调用该命令的地方run mirtk convert-image T2/$subj.nii.gz N4/${subj}_rescaled.nii.gz -rescale 0 1000 -double
:)
考虑到我们之前的 docker 镜像和派生容器使用相同的包,但没有这个问题,并且安装了相同的依赖项,这对我来说很奇怪。为此,我们使用 bash shell。
我无法在我的系统或 docker 容器上看到此命令或相应的手册页,但可以在此处找到在线手册页: https://linux.die.net/man/1/run
此外,这让我看到了一些创建者的邮件列表对话: https://lkml.org/lkml/2001/12/10/226
除了一个(损坏的)链接,指向他们在该工具上的工作正在更新的位置: http://www.ccur.com/realtime/oss
检查 WayBack 机器 (https://archive.org)对于该网站,我没有找到获取这些旧包或备用链接的方法。
此外,我在网上找到的唯一暗示这个问题的其他线程是: https://www.linuxquestions.org/questions/linux-newbie-8/bash-run-command-not-found-316132/
其中一位新用户错误地认为在 Linux 上运行命令的标准过程是“run”,一些用户解释说这是不必要的,甚至有人指出实际上不存在这样的命令。
最后,搜索该工具的可用版本来下载,
apt-cache search run
会得到许多名称或描述中带有“运行”的工具,但没有基本运行命令。
我不认为自己是 Linux 新手,但这确实让我摸不着头脑。不是一小部分,因为我在研究中可以找到对该工具的稀疏引用,并且搜索诸如“bash run 命令”、“bash run 未找到”、“run 命令未找到”等关键字的事实。给出大量不相关的查询。此外,对我们正在使用的特定软件包的支持非常有限。
如果有人知道手动安装/下载此工具的方法,或者告诉我的容器/系统识别它,或者可能是我没有想到的替代解决方法/解决方案,我们将不胜感激!
谢谢
答案1
感谢@JeffSchaller 和@G-ManSays'ReinstateMonica':
我发现这个问题是由于工具本身使用的各个下标中定义的 bash 函数“run”缺乏单独的定义引起的。看来我们收到的构建缺少脚本中的这些定义(因此“命令:未找到运行”),因此我将它们添加回来并能够继续进行测试。我通过参考我们使用的工具的先前版本并看到那些先前包含的定义曾一度存在但已被删除,从而弄清楚了这一点。我现在收到了一些其他缺少工具/路径的问题,但我通过调试过程已经很好地解决了这个问题。不过,该线程发起的问题已得到解决!
对于将来的人:检查 bash 函数的脚本内定义,否则您可能会错过/忽略这些定义。