'rpmbuild'에 해당되는 글 2건

  1. 2006.12.21 RPM 유용한 문서
  2. 2006.10.18 RPM packaging (1)
Edward C. Bailey, "Maximum RPM" :
RPM을 다룬 문서(책) 중 가장 상세함... 하지만 좀 오래됨...
http://www.redhat.com/docs/books/max-rpm/max-rpm-html/index.html
http://www.rpm.org/max-rpm/

Eric Foster-Johnson, "RPM Guide" :
좀더 쉽게 쓰여진 편이고 예제도 풍부함
Python-RPM 모듈을 사용할 때도 좋음...
http://fedora.redhat.com/docs/drafts/rpm-guide-en/

Paul Nasrat, "RPM Python(and friends)" :
Python-RPM 모듈과 펄등에서의 활용을 다룬 문서
http://people.redhat.com/pnasrat/rpm-python/rpm-python-slides/frames.html
신고
Posted by freezn
주 :
- 레드헷 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