반응형

공용으로 사용하는 서버에서 리눅스에 설치된 tool들의 환경변수 변경은 버전관리가 까다롭다.

 

Environment Modules을 설치하면 이런 부분을 상당히 쉽게 처리할 수 있다.

 

관리자(또는 유저가 직접 해도 상관없다)가 프로그램들의 경로를 미리 설정해놓고 그때 그때 필요한 버전을 로드하여 환경 변수를 변화시킨다.

 

https://modules.readthedocs.io/en/latest/index.html

 

Environment Modules — Modules documentation

© Copyright 1996-1999 John L. Furlani & Peter W. Osel, 1998-2017 R.K.Owen, 2002-2004 Mark Lakata, 2004-2017 Kent Mein, 2016-2020 Xavier Delaruelle Revision 0e43e359.

modules.readthedocs.io

다운로드는 https://github.com/cea-hpc/modules git hub에서 다운받아 진행한다.

 

cea-hpc/modules

Environment Modules: provides dynamic modification of a user's environment - cea-hpc/modules

github.com

압축을 풀고 아래처럼 설치한다.

$ ./configure --prefix=/usr/share/Modules \
              --modulefilesdir=/etc/modulefiles
$ make
$ make install

modulfilesdir은 path가 설정되어 있는 파일이 위치하는 폴더이다. 

 

/etc/modulefiles/gcc/9.2.0 파일을 만들고 아래처럼 내용을 채운다.

#%Module1.0######################################################################
##
## GCC modulefile
##
proc ModulesHelp { } {
    puts stderr "\tThe GCC Module\n"
    puts stderr "\tThis module adds GCC directory to your path."
}

module-whatis   "adds `.' to your PATH environment variable"

conflict gcc

module load mpfr mpc gmp
#prereq gmp

prepend-path    PATH    /data/Tools/gcc/gcc-9.2.0/bin
prepend-path    PATH    /data/Tools/gcc/gcc-9.2.0/include
prepend-path    PATH    /data/Tools/gcc/gcc-9.2.0/share
prepend-path    LD_LIBRARY_PATH /data/Tools/gcc/gcc-9.2.0/lib
prepend-path    LD_LIBRARY_PATH /data/Tools/gcc/gcc-9.2.0/lib64
prepend-path    LD_LIBRARY_PATH /data/Tools/gcc/gcc-9.2.0/libexec

 

홈페이지 메뉴얼을 참고하면 되지만 필요한 부분만 언급하자면

 

modulefiles폴더 하위폴더로 gcc가 모듈의 이름이며 9.2.0이 버전이다.

 

module load gcc 또는 module load gcc/9.2.0 으로 로드 할 수 있으며 버전을 명시하지 않을 경우 숫자가 가장 높은 버전을 자동으로 로드한다.

 

conflict는 해당 모듈이름과 동시에 로드 할 수 없는 것으로 동일 프로그램의 여러 버전이 로드되는 것을 방지할 수 있다.

module load는 gcc 모듈을 사용하기위해 dependency가 있는 다른 모듈을 로드하는 것이다.

prereq는 해당 모듈이 있지 않으면 에러가 난다. 

prepend-path는 PATH의 앞에 해당 경로를 추가하는 것이다. 

반응형

'Computer Science > linux' 카테고리의 다른 글

hostname 변경  (0) 2020.07.14
Google Cloud SDK linux 설치  (0) 2020.05.26
계정, 그룹 생성, 추가 및 삭제  (0) 2020.02.24
Zip 압축하기 / 압축 해제하기  (0) 2020.02.24
crontab 사용하기  (0) 2020.02.21

+ Recent posts