삽질기행/잡다정보2006. 10. 18. 23:45
주 :
- 레드헷 8.0 이후 rpm 에 build관련 옵션이 사라졌다고 한다. (rpmbuild로 나뉘었다.)
- fedora core4에 기본으로 준비된 패키징용 디렉토리는 /usr/src/redhat 이었다 =_=
- 부요는 /usr/src/booyo에 있다.
- 빌드디렉토리에는 BUILD, RPMS, SOURCES, SPECS, SRPMS이 있어야 할듯하다.


Source RPM 을 재 패키징하려는 경우 :
그냥 막연히 src.rpm이니 rpm -Uvh xxx.src.rpm을 해줬더니 진짜 설치가 되더라. -_-;
/usr/src/redhat에서.
SOURCE에는 tarball소스와 적용된 패치, 추가로 필요한 파일들이 들어가있다.
SPECS에는 .spec로 끝나는 rpm설정(?)파일이 들어가 있다.
tar.gz같은 소스가 rpm으로 바뀌는데 가장 중요한 녀석이라고 생각한다.
----------
새로운 RPM을 만들어내려는 경우 :
SPEC파일을 직접 만들어야한다.
이에 대한 내용은 KLDP의 RPM_Guide 를 참고하면 된다.
아니면 다른 spec파일(src.rpm에 포함된)을 참고해도 좋다.

SOURCES디렉토리에는 프로그램의 소스인 tar.gz를 비롯한 파일들을 넣으면 된다.
SPECS에 xxx.spec파일을 만들어서 넣는다.

2008-05-20 추가 : src.rpm 일 경우 설치해버면 자동으로 위 경로들에 각각의 파일들이 배치된다.

-----------------------------------------------

위와 같은 준비가 되었으면 빌드하자.

rpmbuild -ba xxx.spec

spec에 작성한대로 컴파일되고 지지고 볶아서 xxx.i386.rpm과 xxx.src.rpm, xxx-debuginfo.i386.rpm등이 생성된다.

xxx.src.rpm은 SRPMS에 생성된다
xxx.rpm과 debuginfo.rpm은 RPMS/i386에 생성된다.

이제 SRPMS만 있으면 나중에 또 할 수 있다.
- 나머진 버려도 되는건가?

------------------------------------------------
기타 :
debuginfo는 뭔지 모르겠다.

spec에서 define한 릴리즈와 버전대로 파일명이 생성된다.
예를 들어
%define name xxx
%define version 1.1.0
%define release fz1-0
으로 했다면
xxx-1.1.0-fz1-0.i386.rpm
으로 생성될 것이다.
------------------------------------------------
기타 2 :
rpmbuild시 --target=옵션을 추가로 사용할 수 있다.
ex) rpmbuild -ba --target=i686 xxx.spec
이렇게하면 RPMS/i686안에 rpm파일들이 생길 것이다.
------------------------------------------------
기타 3 :
KLDP의 RPM_Guide에 따르면 rpmrc에서 빌드디렉토리도 설정한다고 하는데 안보인다.
어디에 숨었니 -_-;;
그리고 여러가지 타겟들이 적혀있다.
- 설마 정의된 타겟이라면 별다른 과정없이 타겟지정만으로 크로스컴파일도 지원하는걸까?
-> 설마가 사람잡았다. target=arm-linux라고 줬더니 arm.rpm이 생성됐다. -_-;;
--> 빌드메세지를 캡쳐해보니 이런 메세지가 나왔다. checking target system type... i686-pc-linux-gnu
---> 그러므로 엉터리였다. 당연히도 spec파일을 크로스컴파일용으로 작성해야겠지...

----> 그렇다면 i686 같은 패키지를 만들려고 해도 마찬가지라는 것??
------------------------------------------------

어지간히 정리되면 문서도 정리해야겠다.
언제 정리하나...
Posted by freezn

댓글을 달아 주세요

  1. 오유

    DebugInfo 패키지는 시스템 분석 도구와 프로파일러가 어플리케이션을 완전 디버그하고 추적 가능하도록, 개별 패키지 라이브러리에 대한 완전 디버깅 심볼 바이너리를 제공합니다. DebugInfo 패키지는 이 바이너리들을 /usr/lib/debuginfo 디렉토리에 설치합니다.

    -debuginfo RPM을 설치하시면 다음과 같은 다양한 분석 도구를 제대로 활용하실 수 있습니다:

    * gdb를 사용한 프로그램 디버깅
    * 크래시를 이용한 커널 코어 덤프 디버깅
    * systemtap 및 oprofile을 사용한 성능 분석 및 프로파일링

    로... 쓰입니다. ㅎㅎ..

    2009.07.17 11:25 [ ADDR : EDIT/ DEL : REPLY ]