프로그램 수동 설치 (Source Compile)

소프트웨어 컴파일이란, 프로그램을 설치할 때 환경변수를 주면서 설치하는 경우이다.

풀어서 얘기하면 소스파일(Source File)직접 컴파일 하여 프로그램을 설치,

일반적으로 패키지 매니저로 프로그램을 설치하게 되면 기본설정(Default)으로 설치가 진행되지만,

환경변수를 주며 설치하면 목적(환경)에 맞는 설치를 진행할 수 있다.

 

소프트웨어 컴파일을 활용하는 대표적인 예시로

APM(Apache Web Server + PHP Web Programming Language + MySQL Database)을

상호 연동하여 설치한다면 소프트웨어 컴파일로 설치해야 한다.

 

 

● 소프트웨어 컴파일의 순서

./Configure(환경설정) make(사용자 프로그램을 기계어로 변환) → make install(컴퓨터에 프로그램을 설치)

순으로 과정이 진행된다. 

 

 

● Source Compile 실습

'yum list installed' 명령어를 이용해 컴파일러와 설치될 프로그램과 연계시킬 'httpd' 패키지 설치의 유무를 확인

 

wget http://www.dest-unreach.org/socat/download/Archive/socat-1.4.2.0.tar.gz
### download tarball source

** ~.tar.xx / ~.tar 형식 파일의 경우 TAR(Tape ARchiver) 프로그램으로, 

묶여있거나 압축이 된 파일들을 의미한다.

일반적으로 이런 형식의 파일들을 "tarball source" 라고 칭한다.

 

 

외부에서 다운받은 tarball source를 압축해제

** 대부분 배포하려는 파일을 압축할 때에는 압축효율이 가장 좋은 '~.gz' 방식을 사용한다.

'unzip'의 경우 디폴트 설치가 되어있지 않은 리눅스 배포판이 존재하니 확인 후 사용할 것

 

 

▼ 명령어를 이용하여 tarball source를 압축해제 (해당 소스파일의 경우 tar.gz)

tar xvfz ~.tar.gz   # ~.gz 파일의 압축해제 옵션 'z'
tar xvfj ~.tar.bz   # ~.bz 파일의 압축해제 옵션 'j'
unzip ~.zip         # ~.zip 파일의 압축해제 명령어 'unzip'

 

 

압축해제 후 생성된 socat-1.4 디렉토리로 작업 경로를 이동

어느 프로그램을 다운받은 후(압축을 풀고), 보았을 때 configure 파일이 있으면 컴파일하여 설치하라는 의미이고

해당 파일에 대한 정보나 사용법 등이 궁금하면 해당 파일에 있는 README 파일을 읽어보면 된다.

 

** configure 시 사용 가능한 옵션 등을 확인하고 싶은 경우에는 ./configure --help 옵션을 활용하여 

확인해볼 수 있다.

 

** 기본 설정값으로 설치를 진행하고자 한다면, 옵션을 사용하지 않고 ./configure 만 실행해주면 된다.

 

./configure --prefix=/usr/local/apache --enable-ssh --disable-ipv6

● prefix=/usr/local/apache = 연계를 맺을 대상 프로그램을 지정

● --enable-ssh = SSH 접속을 허용할 것

disable-ipv6 = IPv6는 사용하지 않을 것

 

등 간략하게 정책을 설정 해주었다.

 

'make'와 'make install'을 정규표현식을 활용해 동시에 진행

"기계어로 변환시킨 후에 프로그램을 설치해라" 를 한 줄에 입력하여 다중명령을 사용한 예시인데,

; 의 경우 첫 번쨰 명령이 실패해도 두 번째 명령어로 넘어가서 실행되기 때문에

&& 를 사용하는 것을 추천(첫 번째 명령어 실패 시 두 번째 명령어는 실행 X)

 

 

컴파일 하여 설치된 프로그램이 정상적으로 설치 된 것을 확인

 

'Linux_System' 카테고리의 다른 글

[Linux]Process(2)_top  (0) 2022.11.08
[Linux]Process(1)_ps  (0) 2022.11.05
[Linux]YUM_LocalRepository  (0) 2022.10.26
[Linux]Basic_Command(2)  (0) 2022.10.10
[Linux]Basic_Command(1)  (0) 2022.10.06

+ Recent posts