공용으로 사용하는 서버에서 리눅스에 설치된 tool들의 환경변수 변경은 버전관리가 까다롭다.
Environment Modules을 설치하면 이런 부분을 상당히 쉽게 처리할 수 있다.
관리자(또는 유저가 직접 해도 상관없다)가 프로그램들의 경로를 미리 설정해놓고 그때 그때 필요한 버전을 로드하여 환경 변수를 변화시킨다.
https://modules.readthedocs.io/en/latest/index.html
다운로드는 https://github.com/cea-hpc/modules git hub에서 다운받아 진행한다.
압축을 풀고 아래처럼 설치한다.
$ ./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 |