- LINUX

[Rocky] Environment modules






1. 개요

Environment modules을 설정하고 사용합니다.







2. 버전

Rocky 9.5







3. 내용





3-1. Environment modules이란?

소프트웨어 환경을 동적으로 관리하고 사용자 세션에서 필요한 프로그램이나 라이브러리의 버전을 설정할 수 있게 해주는 Unix/Linux 시스템의 유틸리티입니다.




3-2. Environment modules 주요 특징

  1. 동적 환경 설정
    • 소프트웨어의 실행 환경을 동적으로 설정합니다.
    • 특정 소프트웨어의 설치 경로나 버전을 쉽게 전환할 수 있습니다.
  2. 버전 관리
    • 동일한 소프트웨어의 여러 버전을 한 시스템에서 사용할 수 있으며, 사용자가 필요한 버전을 명시적으로 로드할 수 있습니다.
  3. 독립적인 환경 제공
    • 사용자가 서로 간섭 없이 독립적인 소프트웨어 환경을 설정할 수 있습니다.
  4. 간단한 명령어
    • 텍스트 기반으로 module 명령어를 사용하여 손쉽게 환경을 로드하거나 언로드할 수 있습니다.




3-3. Environment modules 설정 파일

  1. 설정 파일 경로
    • /etc/environment-modules
  2. modulespath
    • 모듈 파일 검색 경로를 정의하는 파일입니다.
  3. initrc
    • Environment Modules의 초기화 파일로, 모듈 시스템의 기본 설정을 정의합니다.
    • 사용자별 초기 설정 파일로, 일반적으로 모듈 시스템이 시작될 때 로드됩니다.
  4. siteconfig.tcl
    • 전역 설정을 위한 Tcl 스크립트, 환경 모듈 동작을 세부적으로 조정합니다.

3-4. Environment module 명령어 옵션




3-4-1. 모듈 관리 옵션

  1. module avail
    설명: 현재 시스템에서 사용 가능한 모든 모듈을 표시합니다.
    예제: module avail
  2. module list
    설명: 현재 로드된 모듈을 나열합니다.
    예시: module list
  3. module load <module>
    설명: 지정한 모듈을 로드합니다.
    예시 : module load python/3.12.8
  4. module unload <module>
    설명: 로드된 모듈을 언로드합니다.
    예시: module unload python/3.12.8
  5. module purge
    설명: 로드된 모든 모듈을 언로드합니다.
    예시: module purge
  6. module swap <mod1> <mod2>
    설명: <mod1> 모듈을 언로드하고 <mod2> 모듈을 로드합니다.
    예시: module swap python/3.12.8 python/3.13.1



3-5-2. 모듈 정보 확인 옵션

  1. module show <module>
    설명: 지정한 모듈이 설정하는 환경 변수 및 설정을 자세히 표시합니다.
    예제: module show python/3.12.8
  2. module display <module>
    설명: module show와 비슷하지만 간략하게 표시.
    예제: module display python/3.12.8
  3. module whatis <module>
    설명: 지정한 모듈의 간략한 설명(whatis 메시지)을 표시.
    예제: module whatis python/3.12.8
  4. module help <module>
    설명: 모듈 로드 시 제공되는 도움말(ModulesHelp)를 표시.
    예제: module help python/3.12.8



3-5-3. 모듈 경로 관리 옵션

  1. module use <dir>
    설명: 새로운 모듈 파일 디렉터리를 경로에 추가합니다.
    예제: module use /home/user/modules
  2. module unuse <dir>
    설명: 경로에서 특정 디렉터리를 제거합니다.
    예제: module unuse /home/user/modules
  3. module path
    설명: 현재 사용 중인 모듈 파일 경로를 표시합니다.
    예제: module path



3-5-4. 캐시 및 환경 관리 옵션

  1. module refresh
    설명: 모듈 캐시를 새로 고침합니다.
    예제: module refresh
  2. module initadd <module>
    설명: 특정 모듈을 로그인 시 자동으로 로드되도록 설정합니다. 예제: module initadd gcc/9.3.0
  3. module initrm <module>
    설명: 자동 로드에서 특정 모듈을 제거합니다.
    예제: module initrm gcc/9.3.0
  4. module initlist
    설명: 자동 로드 설정된 모듈 목록을 표시합니다.
    예제: module initlist




3-5. Environment module 파일 옵션

  1. set
    설명: 모듈 파일 내부 변수 설정합니다. (환경 변수는 아님)
    예제: set python_root /apps/python/3.12.8
  2. setenv
    설명: 환경 변수 설정합니다.
    예제: setenv PYTHONHOME $python_root
  3. unsetenv
    설명: 환경 변수 제거합니다.
    예제: unsetenv PYTHONHOME
  4. prepend-path
    설명: 지정된 환경 변수에 경로를 앞에 추가합니다.
    예제: prepend-path PATH $python_root/bin
  5. append-path
    설명: 지정된 환경 변수에 경로를 뒤에 추가합니다.
    예제: append-path LD_LIBRARY_PATH $python_root/lib
  6. module load
    설명: 다른 모듈 파일을 로드합니다.
    예제: module load python/3.12.8
  7. module unload
    설명: 특정 모듈 파일을 언로드합니다.
    예제: module unload python/3.12.8
  8. conflict
    설명: 충돌하는 모듈이 로드되어 있으면 에러 발생합니다.
    예제: conflict other_module
  9. module-whatis
    설명: 모듈 설명 추가합니다.
    예제: module-whatis “Loads Python 3.12.8”
  10. proc ModulesHelp
    설명: 모듈 도움말 추가합니다.
    예제: proc ModulesHelp { } { puts stderr “…”}
  11. if
    설명: 조건문 조건에 따라 다른 설정 적용합니다.
    예제: if { [info exists env(PYTHONHOME)] } {}
  12. puts stderr
    설명: 디버깅 또는 상태 메시지 출력합니다.
    예제: puts stderr “Loading Python”







4. Environment modules





4-1. 설치

# dnf -y install environment-modules




4-2. 확인

# module avail

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

Key:
modulepath







5. modulespath





5-1. Module 파일 검색 경로 확인

# echo $MODULEPATH

/usr/share/Modules/modulefiles:/etc/modulefiles:/usr/share/modulefiles




5-2. Module 파일 검색 경로 변경

# mkdir /apps/modulefiles
# vim /etc/environment-modules/modulespath

#/usr/share/Modules/modulefiles:/etc/modulefiles:/usr/share/modulefiles
/apps/modulefiles




5-3. Module 파일 검색 경로 변경 확인

# su –
# echo $MODULEPATH

/appss/modulefiles







6. Environment Module 설정





6-1. 모듈 파일 생성

# mkdir /apps/modulefiles/python
# vim /apps/modulefiles/python/3.12.8

#%Module

# Module description
proc ModulesHelp { } {
    puts stderr "This module sets up the environment for Python 3.12.8."
}

module-whatis "Sets up Python 3.12.8 environment."

# Set PYTHONHOME
setenv PYTHONHOME /apps/python/3.12.8

# Prepend to PATH
prepend-path PATH $env(PYTHONHOME)/bin

# Prepend to LD_LIBRARY_PATH
prepend-path LD_LIBRARY_PATH $env(PYTHONHOME)/lib


# vim /apps/modulefiles/python/3.13.1

#%Module

# Module description
proc ModulesHelp { } {
    puts stderr "This module sets up the environment for Python 3.13.1."
}

module-whatis "Sets up Python 3.13.1 environment."

# Set PYTHONHOME
set PYTHONHOME /apps/python/3.13.1

# Append to PATH
append-path PATH $PYTHONHOME/bin

# Append to LD_LIBRARY_PATH
append-path LD_LIBRARY_PATH $PYTHONHOME/lib




6-2. 모듈 설정 확인

# module avail python

-------------------- /apps/modulefiles --------------------
python/3.12.8  python/3.13.1




6-3. 모듈 help 확인

# module help python/3.12.8

-------------------------------------------------------------------
Module Specific Help for /apps/modulefiles/python/3.12.8:

This module sets up the environment for Python 3.12.8.
-------------------------------------------------------------------


# module help python/3.13.1

-------------------------------------------------------------------
Module Specific Help for /apps/modulefiles/python/3.13.1:

This module sets up the environment for Python 3.13.1.
-------------------------------------------------------------------




6-4. 모듈 whatis 확인

# module whatis

-------------------- /apps/modulefiles --------------------
       python/3.12.8: Sets up Python 3.12.8 environment.
       python/3.13.1: Sets up Python 3.13.1 environment.




6-5. 모듈 로드




6-5-1. prepend-path

# module load python/3.12.8
# module list

Currently Loaded Modulefiles:
 1) python/3.12.8


# which python

/apps/python/3.12.8/bin/python



6-5-2. append-path

# module load python/3.13.1
# module list

Currently Loaded Modulefiles:
 1) python/3.12.8   2) python/3.13.1


# which python

/apps/python/3.12.8/bin/python


# echo $PATH

/apps/python/3.12.8/bin:/root/.local/bin:/root/bin:/usr/share/Modules/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/apps/python/3.13.1/bin




6-6. 모듈 언로드

# module unload python/3.12.8
# module list

Currently Loaded Modulefiles:
 1) python/3.13.1




6-7. 모듈 purge

# module load python/3.12.8
# module list

Currently Loaded Modulefiles:
 1) python/3.13.1   2) python/3.12.8


# module purge
# module list

No Modulefiles Currently Loaded.







6. initrc





6-1. 설정

# vim /etc/environment-modules/initrc

+ module load python/3.12.8




6-2. 확인

# su – seuheu

Loading python/3.12.8


# python –version

Python 3.12.8







7. siteconfig.tcl





7-1. 설정

# vim /etc/environment-modules/siteconfig.tcl

prepend-path PATH /apps/python/3.13.1/bin
prepend-path LD_LIBRARY_PATH /apps/python/3.13.1/lib




7-2. 확인

# su – seuheu
$ echo $PATH

/home/seuheu/.local/bin:/home/seuheu/bin:/usr/share/Modules/bin:/apps/python/3.12.8/bin:/apps/python/3.13.1/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin



seuheu

최근 게시물

[Linux] Rocky Linux 9.5 LVM 스냅샷 실습 ext4/XFS 스냅샷 생성·변경·병합(롤백) 가이드[Linux] Rocky Linux 9.5 LVM 스냅샷 실습 ext4/XFS 스냅샷 생성·변경·병합(롤백) 가이드

1. 개요 본 글은 LVM의 스냅샷(snapshot) 기능으로 복구 지점 생성 → 파일 변경 → 스냅샷 병합(rollback) 과정을 실습합니다. 동일한…

%일 전

[Linux] Rocky Linux 9.5 LVM PV/VG/LV 구축, 온라인 확장, ext4 오프라인 축소

https://youtu.be/ZcxB7akkDKs 1. 개요 두 개의 디스크(/dev/vdb, /dev/vdc)로 LVM을 구성하고, ext4·XFS 파일시스템 생성 → 마운트 → VG/LV 확장 → ext4 축소(오프라인)까지 전체…

%일 전

[Linux] Rocky Linux 9.5 Parted로 GPT 파티셔닝: ext4/XFS 포맷과 fstab 자동 마운트

https://youtu.be/XYBR1ZFrV9s 1. 개요 parted를 사용해 새 디스크에 GPT 라벨 생성 → 파티션 생성(ext4/XFS) → 포맷/마운트 →…

%일 전

[Linux] Rocky Linux 9.5 FDISK MBR 파티셔닝 : ext4/XFS 포맷과 fstab 자동 마운트

https://youtu.be/yYV8RQKCFzA 1. 개요 이 문서는 fdisk를 사용해 MBR(DOS) 디스크에 파티션을 생성하고, ext4/XFS 파일시스템을 포맷·마운트, /etc/fstab에 등록했다가, 안전하게 해제·삭제하는 전…

%일 전

[Linux] MBR vs GPT : 리눅스 파티션 방식 쉽게 비교

1. 개요 Linux에서 디스크 파티션 스타일은 MBR(Master Boot Record) 와 GPT(GUID Partition Table)에 대해 설명합니다. 2. MBR이란? 디스크…

%일 전

[WindowsServer] Windows Server 2025 설치

https://youtu.be/CNd1bJV4wGY 1. 개요 Windows Server를 새로 설치할 때의 설치 과정을 단계별로 정리하였습니다. Windows Server 설치…

%일 전