我正在第一次修补模块。我已经安装了lmod和easybuild,并构建了一个包含依赖项的包(SAMtools)。
运行module av
显示模块可用。它将它们列出两次,一次在“所有”类别中,另一次在其相关类别中。如果我试图加载一个像bio/SAMtools
这样的模块,它会抱怨找不到依赖项。我假设这是因为它在需要查找all/ncurses
或devel/ncurses
时,却在查找ncurses
。
我知道我可以只更改modulepath直接指向all
目录,而不是包含类别目录的目录,但我想知道这是否是正确的方法,或者我做错了什么,module
应该能够定位模块依赖项。
1条答案
按热度按时间iecba09b1#
module
(无论是Environment Modules还是Lmod)在启用的modulepath下查找作为目录的模块名称。因此,如果您启用的modulepath是/path/to/modulefiles
,如果您尝试加载devel/ncurses
,它将查看/path/to/modulefiles/devel/ncurses
目录下的版本文件。由于easybuild生成的模块将依赖项定义为
ncurses
,而不是all/ncurses
或devel/ncurses
,这意味着要启用的模块路径应该是/path/to/modulefiles/all
或/path/to/modulefiles/devel
。定位modulefile(4)手册页中的modulefile节提供了如何搜索模块的详细信息。这是环境模块的文档,但Lmod的机制非常相似。