>> Delete Reply from No. 52553 article
No. RE: rpm의 spec파일에 관하여

등록 2002-07-12 14:25:00 By localhost     조회 4
이름 KDE 짱    

		흠.. 주석을 달기로 하겠습니다.. :)
 뭐 저두 허접이라.. 많은 부분이 부족하겠지만 이해를 해주시길..
 : rpm으로 패키지를 작성하기 위해 spec파일을 작성중에 있습니다.
: 작성중에 궁금증이 생겨 이렇게 질문을 올립니다.
: www.rpm.org사이트에서 rpm에 관한 정보를 읽어 보았습니다만, 좀 이해가
: 가지 않는 부분과 부족한 내용이 많아서 애로가 있네요.
 우선 spec파일의 기본 구성(보통 세부분이라고 말합니다) :)
 1. rpm 정의부분
어떤 파일이 있는지 출처가 어디인지, 어떤 패치를 쓸것인지
설치할때 필요한 package는 어떤게 있고 컴파일(빌드)할때 필요한것은
어떤건지, 그리고 rpm 가상 루트는 어디로 할것인지 등등들 지정하는 부분
입니다.
 2. rpm build section
1번에서 정의한 파일들을 풀고, patch하고, make한 후 1번에서
지정한 가상 루트에 설치하는 것까지..
 3. file list
빌드된 파일 리스트를 모두 rpm으로 만들고 설치에 이용한 directory를 삭제하고
설치할때 해줘야하는 동작 등등을 지정하는 단계..
 뭐 대충 크게 보면 이렇게 되어 있습니다.
 그럼 세부적인 답변으로..
 :
: === 궁금 내용 ===
: 1.spec파일중에서 여러 section이 있는데 %build인가 %prep인가에서
:   소스를 빌드하는 내용을 추가한다라고 되어 있는데, 여기서 빌드란 무엇을
:   의미하는 건지 궁금합니다. 참고로 제가 패키지화 하고자 하는 소스는
:   몇개의 디렉토리로 되어 있는데.. 여기에는 제가 이미 컴파일하여 생성된
:   바이너리 파일과 라이브러리 그리고 일반 쉘 스크립트와 텍스트 파일이 들
:   어 있습니다. 따로 빌드할 필요가 없는 것 같은데...여기서는 다른 의미의
:   빌드인지 잘 모르겠군요.
  build란 간단히 ./configure하고, make 하는것을 말합니다.
%prep는 우선 rpm 패키징을 하기 위한 동작이며 %setup에서는 위에서 언급한
rpm file을 푸는 동작입니다. (소스 일경우)
그리고나서 소스를 푼 다음에 patch를 시도하고, patch가 올바르게 되어 있으면
./configure를 실행합니다.
 ./configure가 끝난 후에는 make를 시도하겠죠? 물론 위의 내용으 사용자가
모두 적어줘야합니다.
 %install 섹션에서는 make 한 후 DESTDIR를 이용하여 rpm 가상 루트
- RPM_BUILD_ROOT 로 설치를 해줍니다.
 만약 바이너리만을 설치한다면 %build는 빼도 되고 그냥 넘어가도 됩니다.
 %install에서 cp 를 쓰셔도 되고 install 를 이용하셔도 됩니다
  :
: 2.유닉스에서는 패키지화하기 위해 prototype, admin, post/pre script등등
:   의 파일들을 정의하는 것이 필요한데, 제가 알기로는 이런 내용들을 spec파
:   일에서 대체하고 있는 것 같습니다. 그런데 도대체 어느 섹션에서 정의를 해
:   야 하는 건지 모르겠습니다. 패키지를 설치시에 설치되는 파일들의 속성
:   과 패스정보를 지정해 주는 부분에 대해서도 유닉스에서는 prototype이라
:   는 파일(pkgproto라는 명령어의 의해 기본적으로 생성해 주고 추가할 내용
:   은 개발자가 따로 추가해서 완성하는 파일)로 정의하는 것 같은데, 이런 내
:   용은 spec파일의 어느 섹션에서 정의해 주는지..또 어떻게 정의해 주는건지
:   궁금합니다.
 저러한 내용들은 우서 prototype , admin등은 위에서 언급한 첫번째 section
에서 해줍니다.
post/pre scripts는 %pre, %post, %preun, %postun 등으로
각각의 섹션을 만들수도 있습니다.
  :
: 3.로컬에서 임의의 디렉토리를 rpm패키지화 해 보았는데...xxxx.src.rpm이라
:   는 것만 생성되었습니다. 제가 원하는 것은 xxxxx.rpm이었는데...맞는 건지
:   틀린건지 헷갈립니다.
:   << 테스트 한 환경은 다음과 같습니다 >>
:   (1) 패키지 하고자 하는 디렉토리를 xxx.tar.gz로 만든다
:   (2) xxx.tar.gz를 /usr/src/redhat/SOURCES로 옮겨 놓는다.
:   (3) spec파일을 작성한다.<스펙파일의 내용은 제일 밑을 참조>
:   (4) spec파일을 /usr/src/redhat/SPECS로 옮겨 놓는다.
:   (5) $rpm -ba spec파일 를 실행시킨다.
:   (결과) /usr/src/redhat/SRPMS/xxx.src.rpm파일이 생성되었다.
  /usr/src/redhat/RPMS/i386디렉토리를 확인해보세요..
   :
 추가할 사항을 적었습니다.
 :   <<<spec file 내용>>>>
:   Summary: aaa
:   Name: swsts
:   Version:2.0
:   Release:1
:   Source0: %{name}-%{version}.tar.gz
:   Copyright: kkk
:   Group: Applications
    Builroot:/var/tmp/%{name}-root
 
:
:   %description
:   a Component
:
:   %prep
:   %setup
:
:   #%build  바이너리이기 때문에 제거..필요없음..
    # $RPM_BUILD_ROOT(/var/tmp/%{name}-root가 /가 됨)
    # directory를 그대로 만들어줌..
     %install
     install -d $RPM_BUILD_ROOT/디렉토리 만들고
     install -m filename $RPM_BUILD_ROOT/usr/bin
    ..
    
    %clean
     rm -rf $RPM_BUILD_ROOT
    %pre
     #설치전 해야할 scripts
    %post
     #설치후 해야할 scripts
    %preun
     #제거하ㄱ 전에 해야할 scripts
    %postun
     #제거한 후에 해야할 scripts
     %files
     /usr/.. #파일 목록들
     /...
    %changelog
* 날짜
- 어쩌구 저쩌구
  그리고 rpm.org에 가보시면 Maxinum RPM이라는 문서가존재합니다
그 문서를 읽어보시면 훨씬 나을것 같군여
 별 허접이 쓸데없이 말이 길어졌군요..
 그럼..
:)
    
 :
: 이상입니다. 꽤 시간을 투자했는데도...머리가 딸려서..이해가 잘 안오는군
: 요. 도움 부탁드립니다.
:
: --
: 011-9086-2726
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved