강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급: rpm 패키지제작 기능

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: rpm 패키지제작 기능




 

 RPM 제작

 

 

시스템 관리를 하다보면 직접 RPM을 만들어서 사용하는 것이 관리에 도움이 되기도 한다.

 

 

 

RPM 제작의 기본적인 절차는 다음과 같다.

 

 

 

 

 

rpmbuild 패키지가 설치되어 있는지 확인한다.

 

 

 

 

/usr/lib/rpm/rpmrc(또는 /etc/rpm/rpmrc)가 있는지 확인한다.

 

 

 

RPM을 만들고자 하는 소스코드를 구한다.

 

 

 

정확하게 빌드하기 위해서 소스에 필요한 패치를 가한다.

 

 

 

패키지에 대한 명세(spec) 파일을 만든다.

 

 

 

(SRPM 파일은 소스코드, 패치 및 명세를 포함하고 있다)

 

 

 

모든 것이 정확한 위치에 있는지 확인한다.

 

 

 

RPM을 사용하여 패키지를 만든다(RPMSRPM 파일).

 

 

 

RPM을 만들기 위해서는 기본적으로 foobar-1.1-1.tar.gz과 같은 프로그램 소스(또는 tar.bz2)foobar-1.1-1.spec과 같은 spec 파일이 필요하다.

 

 

 

RPM 제작은 spec 파일을 읽어서 소스(Tar)를 풀고 컴파일 하는 과정이 있기 때문이다.

 

 

 

따라서 기본적으로 두 가지 파일이 필요한데, 이것들은 SRPM 파일을 구해서 RPM 명령으로 풀면,

 

그것이 /usr/src/sulinux (리눅스 배포판에 따라 마지막 부분의 디렉토리명이 다르다) 아래의 SOURCESPECS 디렉토리 아래 풀리면서 그 두 가지의 파일이 생기게 된다.

 

 

 

그리고 위와 같은 소스 파일만 있다면 직접 spec 파일을 편집하여 사용하면 된다.

 

 

 

물론 이 경우에 직접 파일들을 언급한 디렉토리에 넣어 주어야 한다(SRPM은 소스코드 CDROM이나 FTP 등에서 구할 수 있다).

 

다음과 같이 명령행에서 명령을 내리면 PRM 바이너리 파일과 RPM 소스파일(SRPM)이 만들어진다.

 

 

 

 

 

 

 

 

# rpmbuild -ba foobar-1.0.spec

 

 

 

 

 

 

 

 

여기에는 유용한 -b 스위치와 함께 다른 옵션이 있다.

 

 

 

이것은 -bO 형태로 사용된다.

 

 

 

 

 

-bp : spec 파일의 %prep 단계를 실행한다.

 

 

 

보통 소스를 풀고 패치를 가하는 작업이다.

 

 

 

 

-bl : 목록 점검을 한다.

 

 

 

%files 섹션은 확장 매크로이다.

 

 

 

이 파일들이 존재하는지 여부를 알아본다.

 

 

 

 

-bc : prep 단계를 한 후 %build 단계까지 수행한다.

 

 

 

보통 make에 해당하는 일을 해낸다.

 

 

 

이것은 어떠한 소스를 빌드해야 할 지 정확하지 않을 때 유용하다.

 

 

 

소스를 빌드하고 RPM을 사용하기 시작할 때까지는 소스만 가지고 작업할 지도 모르기 때문에 쓸모 없게 보인다.

 

 

 

그렇지만 RPM을 사용하는데 익숙해지면, 이것을 사용할 때. 실례로써 찾을 수 있을 것이다.

 

 

 

-bi : prep, build 단계를 거친 후 %install 단계까지 수행한다.

 

 

 

보통 make install 에 해당하는 일을 한다.

 

 

 

 

-bb : prep, build, install 단계를 수행한 후 바이너리 패키지를 만든다.

 

 

 

 

-ba : prep, build, install 단계를 수행한 후 바이너리와 소스 패키지를 만든다.

 

 

 

 

 

그리고 -b 스위치에는 몇 가지 수정 옵션이 있다.

 

 

 

이것은 다음과 같다

 

 

 

--buildroot : 패키지를 빌드할 때 이 옵션 뒤에 지정한 디렉토리로 원래의 BuildRoot를 대체한다.

 

 

 

--short-circuit : 특정한 단계를 바로 건너뛴다.

 

 

 

(ci에서만 쓸 수 있다.)

 

 

 

--clean : 작업이 끝나면 빌드 디렉토리를 지운다.

 

 

 

--nobuild : 어떤 빌드 단계도 실행하지 않는다.

 

 

 

spec 파일을 테스트할 때 유용하다.

 

 

 

 

--rmsource : 빌드 이후에 소스 파일을 제거한다.

 

 

 

 

--rmspec : 빌드 이후에 spec 파일을 제거한다.

 

 

 

--sign : 패키지에 GPG 사인을 삽입한다.

 

 

 

 

이외에도 --rebuild--recompile 옵션들은 SRPM 패키지에서 spec 파일과 소스코드 파일을 직접 읽어 들여서 RPM 패키지를 생성하여 설치하고 /usr/src/sulinux/RPM 디렉토리에 생성된 RPM 파일을 저장한다.

 

 

 

 

 

 

 

 

 

# rpmbuild --rebuild vte-0.11.11-6.src.rpm

 

 

# rpmbuild --recompile vte-0.11.11-6.src.rpm

 

 

 

 

 

 

 

 

 

패키징에 대한 정보

RPM의 공식 사이트는 http://www.rpm.org/이다.

 

 

 

이 사이트에는 Maximum RPMRed Hat RPM Guide 라는 책의 온라인 버전, RPM 튜토리얼, Fedora RPM 가이드 등의 다양한 사용자 문서, 개발자 문서 등의 다양한 정보를 제공한다.

 

 

 

그리고 각종 리눅스 배포판을 위한 RPM 파일들을 찾을 수 있는 사이트로 http://www.rpmfind.net 라는 사이트가 있다.

 

 

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  78 명