대부분의 생명정보학 도구는 리눅스용으로 출시된다. 따라서 의생명정보학 연구를 위해서는 리눅스 환경에서의 작업이 필수적이다. 이는 리눅스 환경이 고성능 컴퓨팅과 대용량 데이터 처리에 최적화되어 있기 때문이며, 주로 다음과 같은 이유로 생명정보학 분야에서 널리 사용된다:
생명정보학을 공부하고 실무에 적용하기 위해서는 리눅스를 공부하는 것이 매우 중요하다.
자유 소프트웨어 재단은 1985년 리처드 스톨만(Richard Stallman, 일명 “RMS”)에 의해 창설되었다. 이 재단의 핵심 철학은 “자유(Free) 소프트웨어”의 개념이다. 여기서 말하는 “자유”란 누구나 자유롭게 소프트웨어를 공부하고, 변경하고, 배포할 수 있도록 그 소스 코드가 공개된 소프트웨어를 의미한다.
이는 소프트웨어를 무료로 제공해야 한다는 의미가 아니다. 리처드 스톨만의 유명한 말에 따르면 “자유 소프트웨어는 언론의 자유와 같은 자유를 의미하는 것이지, 무료 맥주를 의미하는 것이 아니다(Free in the sense of free speech, not free beer).”
자유 소프트웨어 재단은 일반 공중 사용 허가서(General Public License, GPL)를 통해 자유 소프트웨어의 권리를 보호한다. GPL은 자유 소프트웨어를 사용하여 개발한 소프트웨어도 반드시 자유 소프트웨어가 되어야 한다는 조건을 포함한다.
GNU(GNU is not UNIX!)는 자유 소프트웨어 재단의 주요 프로젝트 중 하나이다. 이 프로젝트의 목표는 당시 가장 인기 있었던 운영체제인 유닉스(UNIX)의 “클론”을 제작하는 것이었다. 유닉스는 커널(Kernel)과 다양한 유틸리티로 구성되어 있었다.
리처드 스톨만은 이를 위해 수많은 유틸리티를 개발했다:
한편, 지구 반대편 핀란드에서는 리누스 토발즈(Linus Torvalds)가 “재미로(just for fun)” 운영체제 커널을 개발하고 있었다. 이 커널은 후에 GNU 프로젝트의 일부로 편입되게 된다.
Figure 18.1 리누스 토발즈가 리눅스를 처음 발표한 역사적 순간 (1991년)
GNU 프로젝트의 유틸리티와 리눅스 커널의 결합으로 GNU/Linux 시스템이 탄생했다. 이 시스템은 유닉스와 완전히 호환되는 POSIX 준수 시스템으로, 현재 99% 이상의 서버 시스템이 리눅스를 채택하고 있다.
Figure 18.2 리처드 스톨만과 리누스 토발즈
현재는 이 시스템을 간단히 “리눅스”라고 부르는 것이 일반적이다. 이는 시스템에 포함된 모든 소프트웨어가 GPL을 따르는 것은 아니기 때문이다. 물론 리처드 스톨만은 리눅스라는 명칭보다는 GNU/Linux라는 명칭을 선호한다.
리눅스 배포판은 각자의 취향과 목적에 맞는 소프트웨어를 기본으로 포함하는 리눅스 운영체제이다. 다양한 배포판이 존재하며, 이들은 웹사이트 https://distrowatch.com/ 에서 확인할 수 있다.
가장 널리 사용되는 두 카테고리의 배포판은 다음과 같다:
배포판의 주요 차이점 중 하나는 패키지 매니저이다:
이들은 비슷한 활용법을 가지고 있다:
apt install 패키지명
(데비안 계열)yum install 패키지명
또는 dnf install 패키지명
(레드햇 계열)패키지 매니저는 “루트(root)” 권한이 있는 사용자만 활용할 수 있다.
리눅스에서 “루트”는 두 가지 의미를 가진다:
디렉토리는 파일 및 다른 디렉토리를 포함할 수 있는 논리적 공간을 의미한다. 윈도우의 “폴더”와 같은 개념이다.
Figure 18.3 리눅스 파일 시스템의 경로 구조와 절대경로/상대경로
쉘은 커널과 사용자 간의 인터페이스 역할을 한다. 주로 CUI(Command-Line User Interface) 기반으로, 키보드를 통해 명령어를 입력하고 화면에 그 결과를 확인할 수 있다.
주요 쉘의 종류:
Conda는 프로젝트별로 분리된 가상 환경을 구축할 수 있게 해주는 도구이다. 이는 서로 다른 프로젝트에서 서로 다른 버전의 소프트웨어를 사용해야 할 때 특히 유용하다.
예를 들어, project1
에서는 Python 3.4가 필요하고, project2
에서는 Python 3.10이 필요한 경우, Conda를 사용하면 두 프로젝트의 환경을 분리하여 서로 다른 버전의 파이썬을 설치할 수 있다.
Conda는 처리 속도가 느린 편이므로, 더 빠른 속도로 동작하는 Conda의 클론인 Micromamba를 설치하는 것을 추천한다. Micromamba는 https://mamba.readthedocs.io/en/latest/user_guide/micromamba.html 에서 설치할 수 있다.
다음은 두 가지 가상환경을 생성하고, 서로 다른 버전의 Python을 설치하는 예제이다:
{@html `# project1 환경 생성 (Python 3.9)
$ micromamba create -n project1 python=3.9
$ micromamba activate project1
(project1) $ python --version
Python 3.9.x
# 필요한 패키지 설치
(project1) $ micromamba install -c conda-forge numpy pandas matplotlib
(project1) $ python -c "import numpy; print(numpy.__version__)"
1.xx.x
# 환경 비활성화
(project1) $ micromamba deactivate
# project2 환경 생성 (Python 3.13)
$ micromamba create -n project2 python=3.13
$ micromamba activate project2
(project2) $ python --version
Python 3.13.x
# 필요한 패키지 설치 (동일한 패키지, 다른 버전)
(project2) $ micromamba install -c conda-forge numpy pandas matplotlib
(project2) $ python -c "import numpy; print(numpy.__version__)"
2.xx.x
# 환경 비활성화
(project2) $ micromamba deactivate
# 설치된 환경 목록 확인
$ micromamba env list
`}
이 예제에서는 micromamba를 사용하여 두 개의 독립된 가상환경(project1과 project2)을 생성하고, 각각 Python 3.9와 Python 3.13을 설치했다. 각 환경에서는 동일한 패키지(numpy, pandas, matplotlib)를 설치했지만, Python 버전이 다르기 때문에 패키지 버전도 다를 수 있다. 각 환경은 완전히 독립적이므로, 한 환경에서의 변경이 다른 환경에 영향을 주지 않는다. 이는 서로 다른 버전의 패키지가 필요한 여러 프로젝트를 동시에 진행할 때 매우 유용하다.
Rosalind는 생명정보학 문제풀이 웹사이트(https://rosalind.info/)로, 생명정보학을 코딩테스트처럼 공부할 수 있게 해준다. 생명정보학 개념을 실습을 통해 배우고 싶다면 Rosalind의 문제를 풀어보는 것이 좋은 방법이다.
Figure 18.4 pwd 명령어를 통한 현재 작업 디렉토리 확인
cp 소스파일 {대상파일 또는 대상디렉토리}
cp -r 소스디렉토리 대상디렉토리
mv 소스파일 {대상파일 또는 대상디렉토리}
mkdir 디렉토리명
rmdir 디렉토리명
rm 파일명
rm -r 디렉토리명
Figure 18.5 htop을 이용한 시스템 리소스 모니터링
Figure 18.6 nano 텍스트 에디터의 인터페이스와 기본 사용법
리눅스는 생명정보학에서 필수적인 도구이다. 대부분의 생명정보학 소프트웨어와 데이터베이스는 리눅스 환경에서 개발되고 운영된다. 또한, 대용량 데이터 처리, 병렬 컴퓨팅, 자동화된 워크플로우 구축 등 생명정보학 연구에 필요한 다양한 작업을 리눅스 환경에서 효율적으로 수행할 수 있다.
리눅스의 명령줄 인터페이스(CLI)는 반복적인 작업을 자동화하고, 복잡한 데이터 처리 파이프라인을 구축하는 데 유용하다. 또한, 서버 환경에서의 원격 작업 및 배치 작업 실행에도 리눅스의 기능이 필수적이다.