Server & OS

src.rpm build 하기

페이지 정보

본문

kernel-2.6.17-1.2462.fc6.src.rpm 은 fedora에서 패치들을 쉽게 설치할 수 있도록 rpm으로 패키징해서 제공하는 것이다.
다운 로드 받을 수 있는 곳은 
http://download.fedora.redhat.com/pub/fedora/linux/core/development/source/SRPMS/
에서 최신 버전을 받을 수 있고,
http://download.fedora.redhat.com/pub/fedora/linux/core/
에서 원하는 fedora 버전에 따라 디렉토리를 찾아가 받으면 된다.

xxx.src.rpm형태의 파일은 xxx.rpm 파일처럼  # rpm -ivh(또는 -Uvh) xxx.rpm  명령어로는 간단히 설치 할 수가 없다.
rpm 개발자가 사용자들이 자신의 시스템에 맞게 리빌드 해서  사용 할 수 있도록  rpm 파일을 만드는데 사용된 소스를
함께 제공하는 형태다.  따라서 xxx.src.rpm은  자신의 시스템에 맞게 리빌드 해서 xxx.rpm 형태로 바꾼 후 설치를 해주
면 된다. 리빌드 방법에는 두가지가 있는데

1. 소스를 수정하지 않고 리빌드 해서 설치하기
2. 소스를 수정한 후 리빌드 해서 설치하기

첫번째 방법은 아주 간단하다. spec 파일이나 rpm 빌드 방법에 대해서 몰라도 다음 명령어들만 쳐주면 된다.
먼저 kernel-2.6.17-1.2462.fc6.src.rpm을 다운로드 받은 디렉토리도 이동한 후

# rpmbuild --rebuild kernel-2.6.17-1.2462.fc.6.src.rpm --target=i686 

명령을 실행시키면 i686 시스템에 맞는 RPM을 Redhat 리눅스 일경우  /usr/src/redhat/RPMS/i686 디렉토리에
kernel-2.6.17-1.2462.i686.rpm 파일명으로 만들어 준다. 그리고 이 디렉토리로 이동해서

# rpm  -ivh kernel-2.6.17-1.2462.i686.rpm

을 실행해주면 설치가 된다.  재부팅을 해보면 커널 선택 매뉴에 추가된것을 확인 할 수 있을 것이다.

두번째 방법은 조금 복잡한데 자세한 내용은 참고 문서와 책을 참고하기 바란다.   먼저

# rpm -ivh  kernel-2.6.17-1.fc6.src.rpm


  명령을 실행해 압축을 풀면(설치한다고도 한다) Redhat 리눅스 일경우  /usr/src/redhat/ 아래 SPECS와 SOURCES
디렉토리에 kernel.2.6.spec 파일과 소스파일들이 생성된 것을 확인 할 수 있다.
이렇게 했는데.. 디렉토리가 없니 어쩌니 라고 나오면.. 패키지를 하나 더 설치해야 한다. 우선 src.rpm이 설치 되야 하는
디렉토리가 있어야 하는데 없을경우 다른 곳에서 찾아야 한다. 그 필요한 디렉토리를 만들어주는 패키지가 rpm-build
패키지이다.  가지고 있는 시디에서 rpm-build 로 시작하는 패키지를 찾아서 설치하거나 인터넷에서 찾아서 설치하면 된다.
그런 후에 다시 다운로드 받은 src.rpm 을 설치하고
/usr/src/redhat/ 아래 SPECS와 SOURCES에 가보면 파일들을 볼 수 있다.
자기가 필요한 패치를 추가하거나 필요없는 것은 뺀 다음  spec파일을 수정해주었으면 SPECS 디렉토리로 이동해 다음
명령어로  rpm을 빌드해준다.

# rmpbuild -ba  kernel-2.6.spec --target=i686

빌드가 정상적으로 끝나면 ./RPMS/i686/ 과  ./SRPMS 디렉토리에
kernel-2.6.17-1.2462.i686.rpm 파일과 kernel-2.6.17-1.2462.i686.src.rpm  파일이 만들어 진것을 볼 수 있을 것이다.
첫번째 방법과 같이 ./RPMS/i686/이동해서 설치해주면 된다. 끝.

출처 : Tong - mahyun님의 Redhat통

관련자료

등록된 댓글이 없습니다.
Today's proverb
해가 들면 어떻고, 바람이 불면 어떻고, 눈이 오면 어떠랴. 해가 들어주어도 고맙고, 바람이 불어주어도 고맙고, 눈이 와주어도 고마울 뿐. 그렇다, 고맙지 않은 것이 없다. 밤은 밤이어서 고맙고, 새벽은 새벽이어서 고맙고, 낮은 낮이어서 고맙다. 아, 고마운 삼라만상이여! (정채봉)