본문 바로가기

Server

소스 코드 컴파일을 이용한 소프트웨어설치

개요

RPM 패키지가 훨씬 편리하나 RPM설치시의 의존성문제, 프로그램 버그패치 적용곤란, 소스코드에 비해 느린 업데이트

등으로 소스코드 업데이트를 직접 컴파일 하여 설치하여야합니다.

단점으로는 시스템 환경에 따라 시간이 오래걸리고, gcc 또는 make 와 같은 컴파일러 도구나 라이브러리 패키지 등 컴파일이 가능한 환경이 준비되지않거나 컴파일 환경이 갖춰져 있더라도 소스 개발자의 시스템 환경과 달라 컴파일이 실패하는 난관이있습니다.

소스코드 컴파일상 간단한 오류가 발생시 프로그래밍 능력 대처가 없다면 소스코드컴파일은 더욱 힘든 작업이 될 수도 있습니다.

 

1. 컴파일러설치

컴파일을위해 gcc컴파일러나 make컴파일러, 그리고 glibc 라이브러리, 각종라이브러리 등이 설치되어야 합니다.

컴파일러 설치여부는 rpm 명령으로 확인

# rpm -q gcc make

gcc-4.5.2-~~

make -3.81~~~

 

미설치시에는 다음명령어로 설치합니다.

# apt-get install -y gcc make

(centOS 경우 다를 수 있습니다.)

yum install gcc make

 

2. 소스코드설치

프로그램 소스 코드는 RPM 패키지 형태로 제공되는 경우가 있으나, 대부분 tar 아카이브파일로 배포

 

# mkdir /src_tmp <-src_tmp 라는 디렉토리생성

# wget -0- http://apache.mirror.cdnetworks.com//httpd/httpd-2.2.24.tar.bz2 | tar xvfj - -C /src_tmp 

<- 해당소스코드를 받아 /src_tmp에 tar를 해제합니다.

 

3. 설치문서 

소스코드에 어떤 옵션을 부여해서 어떻게 컴파일 하여야 하는지는 컴파일 방법에 대한 자세한 정보가 있는 설치문서인

README or INSTALL 파일이 소스 파일내에 포함되어 있으므로, 컴파일하기 전에 이러한 문서를 잘 읽어 보고 컴파일 하는것이 좋습니다.

 

4. 컴파일 환경 설정 configure

대부분 소스의 컴파일순서는 configure->make->make install 로 진행됩니다.

configure작업은 컴파일 하는데 필요한 컴파일러 존재 여부 확인, 컴파일 환경 옵션지정, 컴파일에 필요한 라이브러리 검색 등 전반적인

컴파일 환경을 준비하는과정으로 configure 명령에 의해 컴파일을 수행해주는 Makefile 파일을 만드는 과정입니다.

Makefile 파일은 make 명령으로 컴파일될 때 이용되는 파일로 이 파일이 생성되지 않으면 컴파일되지 못하며, 컴파일 환경 설정 작업에 잘못 되었거나 수정해야 할 경우 configure 명령을 재실행하지 않고서도 이파일의 설정값을 vi 에디터로 수정하여 할 수 있습니다.

명령을 모르거나 옵션지원을 확인하려면 ./configure --help 를 참조

 

가장많이 사용되는 옵션인 --prefix= 소스 컴파일 후 컴파일된 프로그램이 설치될 경로를 지정해 줄 수 있고, 컴파일된 프로그램을 제거할 때 --prefix= 옵션으로 명시한 디렉토리를 통째로 삭제해 주므로써 쉽게 프로그램을 제거 할 수 있는 이점이 있습니다.

 

아파치 소스 설치시의 환경 설정

# ./configure --prefix=/usr/local/apache --enable-modes-shared=all --enable-so --with-mpm-worker

 

명령 수행후 로그는 config.log 에 저장되며 환경설정에 쓰인 명령과 오류 등을 분석할 수 있습니다.

 

5. 컴파일 make

#make로 컴파일합니다.

 

6. 컴파일된 파일 설치 make install

make 명령으로 컴파일된 파일들은 make install 명령에 의해서 --prefix= 옵션으로 명시된 경로(/usr/local/apache)로 설치됩니다.

보통  make, make install 명령을 다음과 같이 한 번에 내릴 수 있지만, make 컴파일 과정에서 오류가 발생되면 make install 명령이

수행되지 않으며, 어떤 문제점이 발생되었는지를 알 수 없으므로 각각 명령을 실행하는 것이 좋습니다.

make install 명령이 완료되었을 때 --prefix= 옵션으로 명시한 경로로 컴파일된 파일이 보이질 않는다면 make 명령으로

어떤 문제점이 있었는지를 체크해 보아야 합니다.

 

7. 컴파일후의 작업

소스를 컴파일하여 설치한 후 소스는 어떻게 할 것인가를 고민할 수 있습니다. 하드 디스크의 용량에 구애를 받질 않는다면

소스 그대로 보관하는 것이 향후에 버그 패치 적용이나 재설치 시 유리한 점이 있습니다. 

만일 소스를 재설치 해야 하는 경우 옵션 값을 변경할 경우 configure 명령으로 옵션을 재지정해주면 되지만

소스에 따라 기존의 cnfig.h 파일이 존재하여 새로운 옵션을 적용한 config.h 파일이 재생성되지않습니다.

이러한 겨우 config.h 파일을 제거해 주거나 "make disclean" 명령을 실행해 주면 소스가 초기화되므로 다시 configure 명령으로 컴파일 환경을 재설정 하면 됩니다.

 

8. 컴파일 한 프로그램 제거

컴파일하기 전에 환경 설정시 --prefix= 옵션을 사용하였다면 

--prefix= 옵션으로 지정한 경로만 모두 제거해 주면 쉽게 삭제가 가능합니다.

그러나 --prefix= 사용하지않고 컴파일 했다면 Makefile 파일을 열어 설치되는 경로를 파악하여 링리히 삭제해야 하는 불편함이 따릅니다.

일부 소스에서는 이러한 불편함을 덜어 주기 위해서 make uninstall 또는 make clean, make disclean 명령을 지원하는 경우도 있습니다.