文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【服务器管理】Ubuntu20.04安装包管理工具module配置并且使用

2023-09-05 06:26

关注

【服务器管理】Ubuntu20.04安装包管理工具module并且使用

什么Module

module是一个专门管理环境变量的工具,全称是module environment,一般应用于软件或运行库等设备有多个版本,且需要分别配置这些环境变量。其官网为:
https://modules.readthedocs.io/en/latest/index.html

通常,对于多版本的软件包,我们可以通过修改~/.bashrc文件,通过修改PATHLD_LIBRARY_PATH等全局环境变量来修改。这是最简单粗暴的方法,但是需要熟悉各个软件包的安装位置,在。当软件包数量多的时候,服务器的用户可能不清楚软件包的安装路径,也不清楚具体有那些版本的包可以使用,这就导致软件版本切换非常麻烦。而module则让我们摆脱了这种麻烦。

安装Module

Module 工具可以使用二进制编译安装(过程比较复杂,参考:Installing Modules on Unix),也可以使用 yum/apt 快速安装,如下所示:

sudo yum install environment-modules
sudo apt-get install environment-modules

注意:本文是在Ubuntu20.04下进行工具安装和管理的,使用的是sudo apt-get install environment-modules,所以安装路径是/usr/share/modules,如果是使用源码安装,则安装路径是由./configure --prefix=/usr/local/tools/modules ...命令的–prefix指定,这个时候,下文相应的路径也得修改为对应的安装位置!

安装 module 工具后,你会发现它并不是一个可执行的二进制文件,你需要对 module 工具进行一次初始化。在 /usr/share/modules/init (注意此处,可能是 module 也可能是 modules) 内部你可以找到针对各个脚本的二进制初始化文件,找到你当前的脚本,source 这个二进制文件,例如你是 bash 脚本,source /usr/share/modules/init/bash之后,你就可以使用 module 工具了。

cd /usr/share/modules/initlssource /usr/share/modules/init/bash

为了避免每次打开终端的时候都需要source /usr/share/modules/init/bash,你需要把该命令添加到/etc/profile文件当中,如下所示:

sudo vim /etc/profile
if [ -f /usr/share/modules/init/bash ]; then   source /usr/share/modules/init/bashfi

配置Module

Module 工具依托于 MODULEPATH 这个环境变量来查找配置信息目录,也就是说你在设置好目录结构,配置好环境变量后,只需要设置这一个 module 的环境变量,那么 module 工具就会自动去查找这个路径下的所有配置信息。

echo $MODULEPATH

返回如下结果:

/etc/environment-modules/modules:/usr/share/modules/versions:/usr/share/modules/$MODULE_VERSION/modulefiles:/usr/share/modules/modulefiles

**注意:**一般情况下,我们安装完module后,就会自动配置好 MODULEPATH 这个环境变量,不需要我们进行额外配置。

当我们希望某个软件包能通过module模块调用时,在安装完软件包之后,需要在/usr/share/modules/modulefiles路径下增加相应的Modulefile文件。因此,我们需要知道如何编写Modulefile文件。

我们可以看一个例子来理解Modulefile文件:
查看/usr/share/modules/modulefiles路径下当前有那些

cd /usr/share/modules/modulefilesls

返回如下结果:

dot  module-git  module-info  modules  null  use.own

我们使用module avail命令查看有那些包可以用

module avail

返回如下结果:

---------------------------------------- /usr/share/modules/modulefiles -----------------------------------------dot  module-git  module-info  modules  null  use.own

我们查看其中的modules文件,

cd /usr/share/modules/modulefilesvim modules

可以看到如下代码:

#%Module1.0######################################################################### modules modulefile##proc ModulesHelp { } {        global version prefix        puts stderr "\tmodules - loads the modules software & application environment"        puts stderr "\n\tThis adds $prefix/* to several of the"        puts stderr "\tenvironment variables."        puts stderr "\n\tVersion $version\n"}module-whatis   "loads the modules environment"# for Tcl script use onlyset     version         4.4.1set     prefix          /usr/share/modulessetenv          MODULESHOME     $prefixprepend-path    PATH            /usr/binprepend-path    MANPATH         /usr/share/man# enable module versioning modulepath#module use /usr/share/modules/versions

这里简单解释一下常用的命令:

具体各个命令可以参考https://modules.readthedocs.io/en/latest/modulefile.html

特别地,如果一个软件有多个版本,我们可以在/usr/share/modules/modulefiles目录下为这个软件构建一个子目录,然后在子目录下构建多个版本的子目录,在

例如,我这里有两个版本的cuda,安装路径分别是/usr/local/cuda-11.6/usr/local/cuda-12.0,则需要进行以下操作:
1、在/usr/share/modules/modulefiles路径下创建cuda的专属文件夹

cd /usr/share/modules/modulefilessudo mkdir cudacd cuda

在cuda文件夹下撰写不同版本cuda对应的Modulefile文件:

(a) 撰写cuda-11.6的Modulefile文件:

sudo vim 11.6

(b) 添加以下代码并保存:

#%Module1.0#####################################################################setenv CUDA_HOME /usr/local/cuda-11.6prepend-path PATH /usr/local/cuda-11.6/binprepend-path LD_LIBRARY_PATH /usr/local/cuda-11.6/lib64

© 撰写cuda-12.0的Modulefile文件:

sudo vim 11.6

(b) 添加以下代码并保存:

#%Module1.0#####################################################################setenv CUDA_HOME /usr/local/cuda-12.0prepend-path PATH /usr/local/cuda-12.0/binprepend-path LD_LIBRARY_PATH /usr/local/cuda-12.0/lib64

新打开一个终端,测试可用的软件包:

module avail

返回如下结果:

---------------------------------------- /usr/share/modules/modulefiles -----------------------------------------cuda/11.6  cuda/12.0  dot  module-git  module-info  modules  null  use.own

可以发现,module工具已经可以使用cuda/11.6cuda/12.0两个版本

其他多版本的软件的配置流程同上,这里总结一下:
1、安装多个版本的软件包;
2、在/usr/share/modules/modulefiles目录下为这个软件构建一个子目录;
3、在该子目录下为每个版本创建一个Modulefile文件,使用setenvprepend-path等命令配置相应的全局变量(这得参考软件本身的全局变量配置);
4、使用source /usr/share/modules/init/bash命令刷新module模块。

使用Module

这里列举一下常用命令:
1、显示可以使用的模块

module avail

加载模块

module load/add [模块名称]

卸载模块

module unload/rm [模块名称]

显示已经加载的模块

module list

本文简单测试一下CUDA的版本切换:

module load cuda/11.6module list

返回如下结果:

Currently Loaded Modulefiles: 1) cuda/11.6

查看设置是否生效:

nvcc -V

返回如下结果:

nvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2022 NVIDIA CorporationBuilt on Tue_Mar__8_18:18:20_PST_2022Cuda compilation tools, release 11.6, V11.6.124Build cuda_11.6.r11.6/compiler.31057947_0
module unload cuda/11.6module load cuda/12.0module list

返回如下结果:

Currently Loaded Modulefiles: 1) cuda/12.0

查看设置是否生效:

nvcc -V

返回如下结果:

nvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2023 NVIDIA CorporationBuilt on Fri_Jan__6_16:45:21_PST_2023Cuda compilation tools, release 12.0, V12.0.140Build cuda_12.0.r12.0/compiler.32267302_0

参考:
https://modules.readthedocs.io/en/latest/INSTALL.html
https://www.fasteda.cn/post/22.html
https://blog.csdn.net/Michael177/article/details/121152904

来源地址:https://blog.csdn.net/m0_37201243/article/details/129632603

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯