http://mirr.springnote.com/pages/3528593
Yum Repository Build for RHEL
1. 개요
작성자 : 미르 ( Mirr@linuxdata.co.kr )
문서버전 : 1.0 ( final )
본 문서는 RHEL 4 이하 버젼에서 패키지 관리를 위하여 내부적으로 Repository 를 구성하여
관리하는 방법에 대해서 기술한다.
준비사항 : RHEL 씨디 혹은 이미지, Repository (저장소) 서버, yum package, createrepo package,
python-sqlite, sqlite , python-urlgrabber, python-elementtree, Hotdog & Beer
실습환경 : RHEL4 AS Update 4 (개발도구정도만 선택된 최소설치버젼), Fedora Core 10 ( Repository )
2. Yum 이 뭥미???
yum 이 무엇인지 모르는가?? 당신은 레드햇계열 사용자가 아니던가, 아주아주 구버젼 사용자이다..
혹은 상상못할정도로 아주 부지런한 사람일 수도 있겠다....
yum 은 레드햇 기반 시스템에 매우 큰 혁명을 가져다준 패키지 관리자 이다..
패키지 관리자라는 것은 시스템에 설치되는 각종 패키징된 프로그램들 ( RPM ) 을 원격 혹은 로컬에서
매우 편하고 빠르게 관리하기 위한 툴인것이다....
이제껏 당신은 당신의 시스템을 업그레이드 하거나 추가적인 RPM 을 설치, 제거하기 위하여
어떤 식으로 작업을 해 왔는가???
소스 컴파일?? rpm --force 또는 rpm --nodeps ??
당신은 당신 스스로 이런 명령들이 당신의 시스템을 매우 엉망으로 만들고 있다고 생각해 본적 없는가??
뭐...이런거 다 차치하고서라도 나는 당신이 어떤 한가지의 패키지를 설치하기 위하여,
수만가지의 의존성 삽질 ( 오반가?? ) 을 했었음을 장담한다.. 백프롬니다~ 백프로...
이 의존성들을 알아서 찾아 해결 해 줄 수 있는 도구가 있다면?????
게다가 외부로의 네트워크가 되지 않는 환경 (RHN 사용이 힘든 환경) 에서 패키지의 관리를 하고자 한다면??
그럼 지체없이 yum 패키지를 설치하여라....
이 패키지는 RHEL5 버젼에선 정식으로 포함되어 패키지관리를 하며, RHEL5 이하 시스템들에서도
충분히 무리 없이 잘 돌아감을 자신하고 있다...
참고 : yum 소개 - wiki 백과 ( http://ko.wikipedia.org/wiki/Yum )
3. yum repository 구축하기
자 일단 yum repository 를 구성해야 겠다.. repository 란 RPM들이 저장된 패키지 저장소를 뜻하며,
이 저장소를 각 서버의 yum client 들이 접속하여 사용 할 수 있게만 하면 되는 것이다.
그러기 위해서 필요한 패키지는 단 두가지다. 바로 createrepo 패키지와 python-urlgrabber 패키지..
저장소에선 이 두가지만 있으면 된다. (사실 ftp나 http도 가능해야 하지만 대충 좀 넘어가자 쫌...)
- root @rhel4]# rpm -Uvh python-urlgrabber-2.9.8-0.3.el4.noarch.rpm \
- createrepo-0.4.6-1.el4.rf.noarch.rpm
- Preparing... ########################################### [100%]
- 1:python-urlgrabber ########################################### [50%]
- 2:createrepo ########################################### [100%]
자 설치 되었으면 실제 RHEL 의 RPM 들을 적절한 디렉토리에 복사한다.
- root @rhel4 ]# mkdir /data/repo
- root @rhel4 ]# mount -o loop /data/ISO/rhel4u4/rhel4u4_32dvd.iso /mnt
- root @rhel4 ]# rsync -avzH /mnt/RedHat/RPMS /data/repo
-
....
준비한 repo 디렉토리를 yum 에서 repository 로 인식하도록 정보를 생성해 준다.
씨디 혹은 이미지에서 다른 것들 필요 없이 실제 RPMS 들만 있으면 된다.
- root @rhel4 ]# createrepo /data/repo
- ........
- 1485/1485 - RPMS/initscripts-7.93.25.EL-1.i386.rpm
Saving Primary metadata
Saving file lists metadata
Saving other metadata - root @rhel4 ]#
/data/repo 라는 디렉토리를 ls 등으로 확인해 보면 repodata 라는 디렉토리와 각종 헤더파일들이
생성되어있음을 확인할 수 있다.
자 이제 yum repository 로 접속하기 위한 설정이 필요하다.
yum 에서 서버로 접속하는 프로토콜로는 ftp, http 를 지원한다.
아까 설정한 /data/repo 로 http 구성이든, ftp 구성이든 anonymous 로 접근 할 수 있는
서버 환경만 만들어 놓으면 되므로 이 문서에선 생략하도록 하겠다.
4. Yum Client 설정
앞서 차례들에선 repository 를 구성 했고, 이제 관리되게 하고자 할 서버에 yum client 를 설치해줘야 한다.
- root @rhel4]# rpm -Uvh python-sqlite-0.5.0-1.2.el4.rf.i386.rpm \
- python-elementtree-1.2.6-7.el4.rf.i386.rpm python-urlgrabber-2.9.8-0.3.el4.noarch.rpm \
- sqlite-2.8.17-1.el4.rf.i386.rpm yum-2.4.2-0.4.el4.rf.noarch.rpm
- Preparing... ########################################### [100%]
- 1:yum ########################################### [20%]
- 1:python-sqlite ########################################### [40%]
- 1:python-urlgrabber ########################################### [60%]
- 1:python-elementtree ########################################### [80%]
- 1:sqlite ########################################### [100%]
위의 패키지들이 yum 설치를 위한 기본적인 의존 패키지들이다.
준비물 항목에서 링크된 페이지를 통해 자신의 서버에 맞는 DAG 패키지를 다운받아 설치하면 된다.
이것으로 끝일까?? 아니다 이제 어떤 서버로 접속해야 할지 설정파일 작성을 해줘야 한다.
/etc/yum.repos.d 디렉토리에 rhel_priv.repo 라는 파일을 생성해 준다.
파일 내용은 다음과 같다.
- [rhel4_priv]
name=RHEL4_4 AS - $basearch
baseurl=ftp://저장소주소/
enabled=1
gpgcheck=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY
간단하지 않은가?? 핵심은 저장소 이름과 baseurl 이다.
baseurl 은 역시 저장소로 접속하기 위한 실제 프로토콜 및 주소이며,
createrepo 로 생성된 repodata 디렉토리의 헤더들을 읽을 수 있어야 한다.
위 설정만 저장해 준뒤, yum repolist 명령을 내려보자.
아주 심플하게 yum 저장소 리스트가 나오며, yum list 명령을 내릴 경우 설치된 패키지와
저장소에서 설치가 가능한 패키지들이 나열된다.
5. 후기
yum 을 이용해 관리하기 위한 작업들이 어렵거나 번거로운가???
번거롭게 여길 수도 있겠지만 오히려 up2date 보다 유연하게 yum 패키지를 통해 여러대의 서버를
패키지 의존성 문제 없이 관리가 가능해 진다는 장점이 있다.
그동안 몇십대의 서버들에 씨디 혹은 이미지를 직접 마운트하여 package들을 설치 하였을때의
그 수고스러움을 생각해 보라..이 방법은 한 서버에만 씨디이미지를 부어 넣으면 내부 네트워킹이 되는
모든 서버들에서 단 한줄의 명령으로 ( yum install or yum upgrade ) 시스템패키지들을 손쉽게
관리 할 수 있게 된다. 매우 편리해 진다는 것은 명약관화 한 일인 게다 ( 문자 써봤는데 맞나?? )
참고로 RHL 7, 9 에서 RHEL2 또는 3 버젼으로 yum 을 이용해 손쉽게 업그레이드 할 수 있다는 것도 염두해 두자.
물론 3버젼에서 4버젼으로의 업데이트는 glib 문제등으로 인해 많이 힘들다 ( 커널 메이져 버젼의 차이등 )
반면 4버젼에서 5버젼으로의 유연한 업데이트도 가능하다.
프록시 서버등을 이용하여 단순 레포지토리뿐만 아니라 내부 로드벨런서로써의 역할도 병행하는 식의
각종 응용방법은 넘쳐난다....
어떻게든 편하게, 그리고 간단하고 강력하게 하지만 그 힘의 위력을 조심스럽게 사용 할 줄 아는 엔지니어...
그게 궁극적인 엔지니어의 자세이진 않을까??
끝으로 항상 나쁜 것으로 이용하려는 사람들이 있기 마련이므로 말해 두겠지만,
이 방법이 서브스크립션의 갱신 문제를 완벽히 해결 해 주는 것은 아님을 명심하길 바란다.
서브스크립션의 문제를 해결하기 위해 이 방법을 사용하겠다 한다면,
그냥 차라리 다른 RedHat 계열의 공개 배포본을 써라... 제발 쫌.....리눅스는 공짜라는 생각은 접자....
오타 및 잘못된 내용은 언제든지 수정해서 보관하여라.
이 문서는 초기에 말했듯이 탄생 자체가 완성본이며 수정은 없다.....핫도그도 없다...
'UNIX > Redhat' 카테고리의 다른 글
12/08/27 2장 네트워크 관리 (0) | 2012.08.27 |
---|---|
12/08/27 1 (0) | 2012.08.27 |
Linux 학습, 기초 과정: RPM 및 YUM 패키지 관리 (0) | 2012.07.26 |
RPM이란? (0) | 2012.07.26 |
YUM 이란 (0) | 2012.07.26 |