티스토리 뷰
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 baseurl=http://repos.test.lab/base/ gpgcheck=0 enabled=1 [local-centosplus] name=CentOS CentOSPlus gpgcheck=0 enabled=1 [local-extras] name=CentOS Extras baseurl=http://repos.test.lab/extras/ gpgcheck=0 enabled=1 [local-updates] name=CentOS Updates baseurl=http://repos.test.lab/updates/ gpgcheck=0 enabled=1 [root@centos151 whchoi]# yum clean all [root@centos151 whchoi]# yum repolist all # 권한 설정을 755로 변경하여 하루에 업데이트 실행파일이 한번씩 업데이트 할 수 있도록 구성한다. |
실제 yum repolist를 실행하여 정상적으로 repo list를 가져오는지 확인하고, yum install을 실행해 본다.
'운영체제 > CentOS 강좌' 카테고리의 다른 글
CentOS 강좌 PART 2. 1 SSH Server 구축과 운영 (0) | 2019.03.19 |
---|---|
CentOS 강좌 PART 1. 10 VI 에디터 소개와 사용법 (0) | 2019.03.18 |
CentOS 강좌 PART 1. 8 스토리지 관리 LVM (1) | 2019.03.14 |
CentOS 강좌 PART 1. 7 네트워크 구성 (0) | 2019.03.08 |
CentOS 강좌 PART 1. 6 시스템 프로세스와 자원 (0) | 2019.03.07 |
공지사항