Cent OS(혹은 RHEL)에서 Yum repo를 구성하는 방법을 알아보고자 함.
폐쇄망 환경에서 외부의(인터넷이 연결 된) yum repository를 접근할 수 없는 상황에서 rpm 설치를 위해 yum repository를 내부에 구성하여 사용할 수 있습니다.
이번 포스팅에서는 local yum repo를 구성하여 폐쇄망 환경에서 외부 repo 접근없이 rpm 패키지를 설치 할 수 있게 구성해 보겠습니다.
다음 절차들은 모두 root 권한으로 진행합니다.
가장먼저 Yum repository를 구성해야합니다. repo에 넣을 패키지들은 미리 외부 통신이 가능한 서버에서 다운을 받습니다.
패키지 다운 받는 방법
1. yum-utils 설치yum install yum-utils
- 패키지 다운로드
yumdownloader --resolve { 받을 패키지 명 } ex) yumdownloader --resolve net-tools --resolve 옵션을 넣으면 해당 패키지의 의존성 패키지도 같이 받을 수 있습니다. (의존성의 의존성의 경우 수동으로 찾아야함..)
- createrepo 패키지 다운로드
yum repo를 만들기 위해 createrepo 패키지가 필요합니다.mkdir createrepo cd createrepo yumdownloader --resolve createrepo
다운 받은 rpm들을 하나의 디렉토리를 만들어 모아줍니다.
여기서는 local-repo라는 이름으로 디렉토리를 만들었습니다.
# 디렉토리 구성
mkdir local-repo
mkdir local-repo/pkgs
# 다운 받은 rpm 옮기기
mv *.rpm local-repo/pkgs
# 다운 받은 createrepo 패키지 옮기기
mv createrepo local-repo/pkgs
이제 files-repo 디렉토리를 ftp나 scp를 이용해 yum repo를 구성할 서버로 옮겨줍니다.
scp -r local-repo { 보낼 서버 주소}:{ 저장할 절대 경로 }
## 예시
scp -r local-repo 192.168.0.11:/root
이제 구성할 서버에 들어가 앞에서 가져온 createrepo 패키지를 먼저 설치해줍니다.
mv /root/local-repo local-repo
cd /local-repo
# createrepo 설치
yum install pkgs/createrepo/*.rpm
이후 다음 절차에 따라 진행합니다.
# local yum repo 구성
pushd /local-repo
createrepo_c ./
popd
# 기존 repo 파일 백업
mkdir /root/repo_bck
mv /etc/yum.repos.d/* /root/repo_bck
# repo 파일 생성
vi /etc/yum.repos.d/local-repo.repo
## local-repo.repo 파일
[local-repo]
name=local-repo
baseurl=file:///local-repo
enabled=1
gpgcheck=0
# repo 구성 확인
yum repolist
repo가 구성됐는지 확인하여 정상적으로 구성이 되었으면 아래와 같은 결과를 확인할 수 있습니다.
넣은 패키지가 잘 조회되는지 확인해보면
yum clean all
yum list | grep local-repo
다음과 같이 조회가 정상적으로 되는것을 확인할 수 있습니다.
local yum repo 구성 후 추가로 필요한 rpm을 넣어주는 방법을 알아보겠습니다.
우선 필요한 rpm을 외부망 통신이 가능한 환경에서 미리 다운받아 준비하여 반입합니다. (다운 방법은 위에서 진행한 방법과 동일)
이후 아래의 방법에 따라 진행합니다.
# rpm 파일 넣기
cp *.rpm /local-repo/pkgs
cd /local-repo
# 추가된 파일 반영
createrepo .
# cache 지워주기
yum clean all
# 추가한 rpm 반영 여부 조회
yum list | grep local-repo
실제 위 절차로 진행하여 다음과 같이 진행되면 정상적으로 반영된 것을 확인할 수 있습니다.
추후 여기서 구성한 local yum repo를 httpd를 사용하여 웹으로 띄운 후 다른 서버(노드)에서 접근하여 사용할 수 있도록 구성하는 방법에 대해 포스팅하겠습니다.