티스토리 뷰

CentOS 강좌 PART 1. 9 YUM 소개와 YUM repository mirror 사이트 구축

[ Yum - Yellowdog Update Manager]

Yum은 RPM의 의존성 문제를 해결하고자 제공되는 도구이다. RPM의 경우에는 의존성 이슈로 인해 필요한 도구들을 사용자가 일일히 설치과정을 진행해야 한다.
하지만 Yum은 패키지의 의존성이 존재할 때 , 다른 패키지들을 알아서 자동으로 먼저 설치해 주는 매우 유용한 리눅스 설치도구이다. 우분투의 apt와 매우 유사한 도구이다.
Yum은 공개 또는 사설 Repository 에서 설치에 필요한 RPM 및 의존성이 존재하는 RPM파일을 모두 함께 설치하게 된다.
또한 설치, 검색, 삭제 , 그룹화된 패키지 정보까지 일괄 알아 볼 수 있도록 편리한 명령어 세트를 제공한다.
yum install “패키지 이름"
패키지를 설치한다.
-y 옵션을 실행하며, 설치 여부를 물어보지 않고, 인스톨 한다.
yum remove “패키지 이름”
yum erase “패키지 이름"
패키지를 제거한다.
yum update
설치된 패키지를 업데이트한다.
yum upgrade
설치된 패키지를 업데이트한다.
update와 차이는 더 이상 사용되지 않는 관련된 파일이나 패키지를 삭제한다.
우분투의 update,upgrade와는 차이가 있다.
yum list
패키지 리스트 확인.
yum check “패키지 이름"
현재 설치된 패키지 체크
yum check-update “패키지 이름"
패키지 업데이트 필요성 체크
yum clean 
캐쉬 삭제
yum clear all
모든 패키지 헤더, 메타데이터, DB 캐쉬제거
yum downgrade “패키지 이름"
설치된 패키지 다운그레이드
yum info 
서버에 존재하는 패키지 정보 출력
yum search 
패키지 정보 검색



초기에 CentOS를 구성하고 다양한 패키지를 업데이트 받거나 , 필요한 파일을 업데이트 받으려면 네트워크 환경에 따라 이슈가 있을 수 있다.
이때 좋은 방법 중 하나가, 로컬에 Yum Repo를 구축해 두는 것이다.
아래에 Yum repo구축 방법을 소개한다.

[Step1. Nginx 서버 설치]

Repo 서버에 HTTP Server를 구동하기 위해 nginx, apache 등 웹서버 서비스를 구성한다.
[whchoi@centrepo253 ~]$ yum -y install epel-release
[root@centrepo253 whchoi]# yum -y install nginx
# nginx server 설치

[root@centrepo253 whchoi]# systemctl start nginx
[root@centrepo253 whchoi]# systemctl enable nginx
[root@centrepo253 whchoi]# systemctl status nginx
# nginx server 활성화

[root@centrepo253 whchoi]# firewall-cmd --zone=public --permanent --add-service=http
[root@centrepo253 whchoi]# firewall-cmd --zone=public --permanent --add-service=https
[root@centrepo253 whchoi]# firewall-cmd reload
# 방화벽에서 http, https 허용 및 재구동

Repo Server로 Nginx가 정상 구동하는 지 확인한다.




[Step2. YUM Local Repository 생성]

이제 실제 yum repo 유틸리티를 서버에 설치한다.
[root@centrepo253 whchoi]# yum -y install createrepo  yum-utils
# yum util 설치

[root@centrepo253 whchoi]# mkdir -p /var/www/html/repos/{base,centosplus,extras,updates}

# yum repo가 설치될 디렉토리를 생성.

[root@centrepo253 whchoi]#reposync -g -l -d -m --repoid=base --newest-only --download-metadata --download_path=/var/www/html/repos/
[root@centrepo253 whchoi]#reposync -g -l -d -m --repoid=centosplus --newest-only --download-metadata --download_path=/var/www/html/repos/
[root@centrepo253 whchoi]#reposync -g -l -d -m --repoid=extras --newest-only --download-metadata --download_path=/var/www/html/repos/
[root@centrepo253 whchoi]#reposync -g -l -d -m --repoid=updates --newest-only --download-metadata --download_path=/var/www/html/repos/
[root@centrepo253 whchoi]# reposync -g -l -d -m --repoid=base --newest-only --download-metadata --download_path=/var/www/html/repos/

# reposync 도구 기반으로 CentOS YUM repo를 생성된 로컬 디렉토리에 다운로드 설치
# 네트워크 상황에 따라 시간이 상당히 오래 걸림. 
# -g : 다운로드 GPG 서명 확인에 실패한 패키지의 제거
# -l : yum 플러그인 지원
# -d : Repo 존재하지 않는 로컬 패키지 삭제
# -m : comps.xml 다운로드.
# --newest-only : repo에서 최신버전만 다운로드.
# --download-metadata : 모든 메타데이터 다운로드

[root@centrepo253 whchoi]#ls -l /var/www/html/repos/base/Packages/
[root@centrepo253 whchoi]#ls -l /var/www/html/repos/centosplus/
[root@centrepo253 whchoi]#ls -l /var/www/html/repos/centosplus/
[root@centrepo253 whchoi]#ls -l /var/www/html/repos/centosplus/
[root@centrepo253 whchoi]#ls -l /var/www/html/repos/centosplus/
[root@centrepo253 whchoi]#ls -l /var/www/html/repos/centosplus/
[root@centrepo253 whchoi]#ls -l /var/www/html/repos/centosplus/
# 정상적으로 local에 설치가 완료되었는지를 확인한다.

[root@centrepo253 whchoi]#createrepo -g comps.xml /var/www/html/repos/base/ 
[root@centrepo253 whchoi]#createrepo /var/www/html/repos/centosplus/
[root@centrepo253 whchoi]#createrepo /var/www/html/repos/extras/ 
[root@centrepo253 whchoi]#createrepo  /var/www/html/repos/updates/  
# 생성된 위의 모든 디렉토리에 comps.xml 파일이 생성되어야 하며, 만들어 지지 않은 경우 touch 명령을 통해 comps.xml을 생성 

[root@centrepo253 whchoi]# vi /etc/nginx/conf.d/repos.conf

server {
        listen   80;
        server_name  centrepo.cisko-dc.com;
        root   /var/www/html/repos;
        location / {
                index  index.php index.html index.htm;
                autoindex on;
        }
}

# 웹기반을 통해 Repository , Package를 볼 수 있도록  nginx 구성 정보를 수정한다.
# server name 에는 Repo 서버의 hostname을 넣는다.

정상적으로이제 실제 yum repo 유틸리티를 서버에 설치한다.



웹으로 Repo에 접속이 정상적으로 되어야 하며, 접속이 불가능한 경우에는 Directory 권한 여부를 체크해 보고, 또한 앞서 지정한 HostName으로 정상 접속되는 지 확인하다.
또한 SELinux 보안 설정으로 접속이 불가능한 경우가 발생할 수 있으므로, setenforce 설정을 disable 하고 시험해 본다. (setenforce 0)


[Step3. 로컬 Repo 자동 업데이트 설정]

자동으로 로컬 Repo를 자동으로 업데이트 하도록 설정해 둔다.
[whchoi@centrepo253 ~]$  vim /etc/nginx/conf.d/repos.conf 
#!/bin/bash
##specify all local repositories in a single variable
LOCAL_REPOS=”base centosplus extras updates”
##a loop to update repos one at a time
for REPO in ${LOCAL_REPOS}; do
reposync -g -l -d -m --repoid=$REPO --newest-only --download-metadata --download_path=/var/www/html/repos/
createrepo -g comps.xml /var/www/html/repos/$REPO/
done

[whchoi@centrepo253 ~]$ chmod 755 /etc/cron.daily/update-localrepos
# 권한 설정을 755로 변경하여 하루에 업데이트 실행파일이 한번씩 업데이트 할 수 있도록 구성한다.


[Step4. CentOS Client에서 Yum Repository 구성]

CentOS 클라이언트들이 신규 생성된 로컬의 Repo로 접속하여 사용할 수 있도록 yum config를 생성한다. 
[root@centos151 whchoi]#   vim /etc/yum.repos.d/local-repos.repo 
[local-base]
name=CentOS Base
gpgcheck=0
enabled=1
[local-centosplus]
name=CentOS CentOSPlus
gpgcheck=0
enabled=1
[local-extras]
name=CentOS Extras
gpgcheck=0
enabled=1
[local-updates]
name=CentOS Updates
gpgcheck=0
enabled=1
[root@centos151 whchoi]# yum clean all
[root@centos151 whchoi]# yum repolist all
                                                                                                                                                                                                        
# 권한 설정을 755로 변경하여 하루에 업데이트 실행파일이 한번씩 업데이트 할 수 있도록 구성한다.

실제 yum repolist를 실행하여 정상적으로 repo list를 가져오는지 확인하고, yum install을 실행해 본다. 


공지사항