生信人

找回密码
立即注册
搜索
热搜: 活动 交友 discuz
发新帖

0

收听

12

听众

321

主题
发表于 2024-3-1 10:22:07 | 查看: 1472| 回复: 0

背景

在生信分析中,我们常有不同的任务需要处理,使用到的软件也多到数不胜数,多数小伙伴,使用到conda创建虚拟环境,用起来也算方便,但使用久了,目录文件繁多不说,有时候也会出现意想不到的bug,网络错误或是依赖冲突等。

今天给大家带来的是一款更加优秀的软件管理工具,简单来说就是加载了就添加软件的路径到你的环境变量中去,移除了就删除该环境变量。无其余任何负担。

大概描述下具体使用场景如下:比如你已经有了conda环境1包含了软件1,2,3;conda环境2包含了软件2,3,4。此时,我们想同时使用软件1,2,3,4,要么我们在conda1中安装4或是conda2中安装1,总是要改变一个conda环境,或是新增conda环境(又要多一个conda环境目录了,不考虑)。从“一些都是文件”的概念出发:多数conda环境总是有一些重复的文件的,时间长起来,服务器上会占用很多不必要的空间。

而换到Module上,每个软件都仅出现一次,就是软件自己的目录,要用就加载。可以理解为把上述情况conda1环境拆分了conda1.1,conda1.2,conda1.3;conda2环境变为conda2.2,conda2.3,conda2.4.再合并,最后仅有conda.1,conda.2,conda.3,conda.4软件,同时使用就一起调用,因为每个软件都是手工编译好的软件目录,这样的理念更进一步。

部署步骤

1 准备

1.1 文件准备

不使用yum install,版本较老且有bug。 选择最新版本

#查看最新版本
[https://sourceforge.net/projects/modules/files/](https://sourceforge.net/projects/modules/files/)

下载5.4.0到本地

1.2 服务器准备

1.2.1 用户新增

新增sysop用户,id为2000(注意id占用,新的服务器可以1000),专用于module管理。

1.2.2 目录新增

使用root

mkdir -p /opt/tools/modules/src /opt/tools/modules/installed /opt/tools/modules/modulefiles

/opt/tools/modules/src 这里放安装包/源文件 /opt/tools/modules/installed 这里是工具安装路径 /opt/tools/modules/modulefiles 这里放 modulefiles -- 各个软件的版本文件

1.2.3 依赖检查

需要tcl>=8.5

echo puts \$tcl_version | tclsh
# 8.5

tcl-devel需要安装 首先使用 whereis 找到 tclConfig.sh 的位置:

whereis tclConfig.sh
# tclConfig:

如果没找到说明 tcl-devel 没安装, yum 安装即可:

yum -y install tcl-devel

再次查找就可以找到了:

whereis tclConfig.sh
# tclConfig: /usr/lib64/tclConfig.sh

2 安装

2.1 下载解压

本地上传到/opt/tools/modules/src

cd /opt/tools/modules/src
tar -zxvf modules-5.4.0.tar.gz
cd modules-5.4.0

2.2 编译安装

./configure --prefix=/opt/tools/modules/installed --modulefilesdir=/opt/tools/modules/modulefiles
make && make install

2.3 全局加载

因为是root环境,我们直接写入/etc/profile最后一句

source /opt/tools/modules/installed/init/profile.sh

当普通用户登入ssh,自动载入/etc/profile就可以使用module了。

3 配置软件

3.1 移交权限给sysop

前面我们提到了使用sysop用户配置,避免root使用出错 那么我们有了module目录,再建立一个软件安装目录

mkdir /share/apps/repos

repos:软件目录 /opt/tools/modules/modulefiles:module连接软件的配置目录

两个目录,我们都使用root将所有权交给sysop,后就可以退出root了

chown -R sysop:sysop /share/apps/repos
chown -R sysop:sysop /opt/tools/modules/modulefiles
exit #退出root用户

3.2 sysop示例安装

以samtools安装为例

3.2.1 下载编译

cd /share/apps/repos
mkdir samtools;cd samtools
wget [https://github.com/samtools/samtools/releases/download/1.18/samtools-1.18.tar.bz2](https://github.com/samtools/samtools/releases/download/1.18/samtools-1.18.tar.bz2)
tar -xjvf samtools-1.18.tar.bz2
mv samtools-1.18 1.18
cd 1.18
# yum install ncurses-devel ncurses #或需要root安装
./configure --prefix=/share/apps/repos/samtools/1.18
make && make install 

3.2.2 添加进module

cd /opt/tools/modules/modulefiles
mkdir samtools;cd samtools
vi 1.18 #添加以下内容保存

版本文件内容如下,即让module识别到软件未知并添加进path变量的。

#%Module
module-whatis   "samtools 1.18"
prepend-path    PATH                    /share/apps/repos/samtools/1.18/bin

3.2.3 普通用户使用

我们使用 zhangsan 用户登录ssh;

#检查环境变量
$ ml av #可用的module
----------------------------------- /opt/tools/modules/modulefiles ------------------------------------
dot  module-git  module-info  modules  null  samtools/1.18  use.own  

Key:
modulepath  

$ echo $PATH #当前环境变量
/share/home/zhangsan/.local/bin:/share/home/zhangsan/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

$ ml load samtools/ #加载samtools

$ echo $PATH #改变了环境变量
/share/apps/repos/samtools/1.18/bin:/share/home/zhangsan/.local/bin:/share/home/zhangsan/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

$ samtools --version #是否可用samtools
samtools 1.18

#卸载不用
$ ml rm samtools #卸载samtools

$ echo $PATH #改变了环境变量
/share/home/zhangsan/.local/bin:/share/home/zhangsan/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

$ samtools --version #是否可用samtools
bash: samtools: command not found...

后记

后续我们写脚本命令前就可以使用ml load软件了 这个时候等同了写R脚本前的library,写python时的import了。 非常方便。

收藏回复 显示全部楼层 道具 举报

您需要登录后才可以回帖 登录 | 立即注册

QQ|Archiver|手机版|小黑屋|生信人 ( 萌ICP备20244422号 )

GMT+8, 2024-12-12 06:05 , Processed in 0.095922 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表