IT/Tips

rpmbuild options and centos kernel source rpm build

싸후이 2010. 11. 10. 11:27

보통 작업디렉토리가 위치하는 곳은 /usr/src 이고, /etc/rpmrc 파일에서 바꿔줄수 있다고 한다.


> yum install rpm-build redhat-rpm-config unifdef

> cd 

> mkdir -p rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

> echo '%_topdir %(echo $HOME)/rpmbuild' > .rpmmacros


- kernel download

find the kernel source rpm 

http://mirror.centos.org/centos/5/updates/SRPMS/ (Current Updates/SRPMS)

http://mirror.centos.org/centos/5/os/SRPMS/ (Current OS/SRPMS)


 - once you have located the source file, you caninstall int by running, for example:

* cent 5

> rpm -i http://mirror.centos.org/centos/5/updates/SRPMS/kernel-2.6.18-194.17.4.el5.src.rpm 2>&1 | grep -v mockb


* cent 4

> rpm -i http://mirror.centos.org/centos/4/updates/SRPMS/kernel-2.6.9-89.31.1.EL.src.rpm 2>&1 | grep -v mockb


- now that the cource rpm is installed, unpack and prepare the source files:

> cd ~/rpmbuild/SPECS

> rpmbuild -bp --target=`uname -m` kernel-2.6.spec

- the kernel source tree will now be found in the directory ~/rombuild/BUILD/



<vender_name_dir> : 각 벤더 마다 디렉토리가 다르다.

/usr/src/<vender_name_dir>/BUILD : rpm 파일을 만들기 위한 작업 디렉토리.

/usr/src/<vender_name_dir>/SOURCES : 소스 압축파일이나 패치파일을 위치시킨다.

/usr/src/<vender_name_dir>/SPECS : spec 파일을 위치시킨다.

/usr/src/<vender_name_dir>/RPMS : 만들어진 rpm 파일이 저장되는 곳.

/usr/src/<vender_name_dir>/SRPMS : 만들어진 src.rpm 파일이 저장되는 곳 .

 

#rpmbuild -bp <packge_name.SPCE>

  : /usr/src/<vender_name_dir>/BUILD 디렉토리에 패치가 적용된 상태까지만 빌드 된다.

    주로 diff를 이용하여 patch 파일 제작시 많이 이용되는 옵션.

 

#rpmbuild -ba <packge_name.SPCE>

  : /usr/src/<vender_name_dir>/RPMS/<arch>/ 에 rpm 바이너리 생성.

    /usr/src/<vender_name_dir>/SRPMS/ 에 source RPM 생성.

 

#rpmbuild -ba --rmspec <packge_name.SPCE>

  : 빌드를 마치고 SPCE 파일을 제거 한다.

 

#rpmbuild -ba --rmsource <packge_name.SPCE>

  : 빌드를 마치고 /usr/src/<vender_name_dir>/SOURCES/ 의 소스를 지운다.

 

#rpmbuild -ba --clean <packge_name.SPCE>

  : 빌드는 마치고 /usr/src/<vender_name_dir>/BUILD/ 의 빌드과정중 생겨난 디렉토리를 지운다.

 

#rpmbuild -ba --rmspec --rmsource --clean <packge_name.SPCE>

  : 빌드는 마치고 SPEC 파일과 소스, 빌드디렉토리를 비운다. RPM 과 SRPM 파일만 생성.

'IT > Tips' 카테고리의 다른 글

python 문자열 제어  (0) 2010.11.23
gdb 반복문 for while  (0) 2010.11.12
database 용어  (0) 2010.09.29
Linux USB Guide  (0) 2010.06.16
linux 패키지 설명  (0) 2010.06.10