YUM repository 구축 – online

폐쇄망, 사내 활용 등을 위한 yum repository를 구축한다.
local repository 구축과 특별히 다른 점은 없다. 단지 웹(http, https) 을 통한 접근을 허용하는 경로를 추가하는 것으로 구축이 가능하다.
웹 서버가 구축 되어있어야 한다.

http 디렉토리를 확인하고 그곳에 리포지터리 파일을 복사한다.

[root@class14 ~]# vi /etc/httpd/conf/httpd.conf
 # 다음 내용을 찾는다.
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"

#
# Relax access to content within /var/www.
#
<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

생성한 repodata 디렉토리가 있는 디렉토리를 /var/www/html 에 복사한다.
이전 포스트에서 /home/repo-data/ 에 rpm 패키지를 넣고 repodata를 생성했었다.

[root@class14 ~]# cp -r /home/repo-data /var/www/html
 # 또는 심볼릭 링크를 만들어준다.
[root@class14 ~]# ln -s /home/repo-data /var/www/html/repo-data

repo 파일 생성
※ local repository에 대한 repo 파일을 만드는 것과 다르지 않다. url만 다를 뿐이다.

[centos:/home:]# vi /etc/yum.repos.d/haedongg_net.repo
 #여기부터 붙여넣기 한다.
[haedong_net-repo]
name=haedongg_net-repo
baseurl=http://www.haedongg.net/repo-data
 # createrepo 명령으로 생성된 repodata 가 있는 디렉토리를 지정한다.
 # http로 시작하는 것에 유의하자. 
enabled=1
gpgcheck=0

YUM repository 구축 – local

이전 포스트에서 설명 한 것처럼 설정된 repository에서 패키지를 다운로드하고 설치하는데 도움을 준다.
이를 위해서는 언급 한 것과 같이 RPM패키지들과 이들 정보를 가진 repository가 필요하다.
일반적인 환경에서는 공용 repositoy (Kakao, naver, KAIST)등에서 제공하는 mirror 사이트를 이용하면 되지만, 폐쇠망 이나, 네트워크 상태가 좋지 않은 경우를 대비해 로컬(서버에 저장)이나, 내부망에 repository를 구축 할 수도 있다.

생각보다 구축 방법은 단순하다.
1. RPM패키지 파일 다운로드
2. repository 정보 생성
3. repo 파일 생성(구축된 repository 서버 정보 기록)
4. 네트워크 접근을 허용할 경우위한 http 서버 구축

로컬 리포지터리 생성

※CentOS7.8 (모든 패키지 포함) 미디어 파일을 이용한 구축의 예

필요 패키지 설치

 # repository 구축을 위한 필수 패키지 다운로드
[centos:/home:]# yum install createrepo yum-utils
Loaded plugins: fastestmirror, langpacks
중략
 * updates: mirror.kakao.com
base                                                                                                                                       | 3.6 kB  00:00:00
중략
(5/5): updates/7/x86_64/primary_db                                                                                                         | 4.5 MB  00:00:01

==================================================================================================================================================================
 Package                               Arch                               Version                                       Repository                           Size
==================================================================================================================================================================
Updating:
 yum-utils                             noarch                             1.1.31-54.el7_8                               updates                             122 k

Transaction Summary
==================================================================================================================================================================
Upgrade  1 Package
후략

설치미디어 파일 다운로드

 # 설치 미디어 파일 다운로드
[centos:/home:]#  wget http://mirror.navercorp.com/centos/7.8.2003/isos/x86_64/CentOS-7-x86_64-Everything-2003.iso

iso 파일 마운트

[centos:/home:]# mkdir /mnt/centos
[centos:/home:]# mount CentOS-7-x86_64-Everything-2003.iso /mnt/centos
mount: /dev/loop0 is write-protected, mounting read-only

repodata 생성

[centos:/home:]# mkdir /home/repo-data
 # 패키지 파일을 복사할 디렉토리 생성.
 # 마운트 한 ISO 파일 경로를 직접 지정할 수도 있지만, 이 경우 마운트 정보를 변경 해야 한다.
[centos:/home:]# cp /mnt/centos/Packages/*.rpm /home/repo-data/
 # 패키지 파일 복사 centos 7.8.2003 iso 기준으로 10070개 rpm 파일이 존재한다.

[centos:/home:]# createrepo /home/repo-data/
Spawning worker 0 with 2518 pkgs
Spawning worker 1 with 2518 pkgs
Spawning worker 2 with 2517 pkgs
Spawning worker 3 with 2517 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

repo 파일 생성

[centos:/home:]# vi /etc/yum.repos.d/local.repo
 #여기부터 붙여넣기 한다.
[haedongg_local-repo]
name=haedongg_local-repo
baseurl=file:////home/repo-data
 # createrepo 명령으로 생성된 repodata 가 있는 디렉토리를 지정한다.
enabled=1
gpgcheck=0

YUM 기본 패키지

‘필수’ 의미의 기본이 아니라 이래저래 많이 사용되는 패키지들이다.
필요할 때마다 하나씩 선택해서 설치해도 되고, 귀찮음을 줄이기 위해 일단 설치 해도 되는 패키지들이다.

sudo yum -y install  wget vim setup gdb setuptool nfs-utils autofs rdate gcc iotop ntp curl traceroute unzip lsof tree net-tools nmap it compat-libcap1 gcc-C++ glibc glibc-devel ksh libaio compat-libstdc++-33 libaio-devel libgcc libstdc++ libstdc++-devel libXi libXi libXtst libXtst make sysstat xorg-x11-apps xrdp epel-release maven telnet bind-utils nmap htop tmux

YUM (Yellow-dog Updater Modified)

1. 개요
Yum은 Yellow dog Updater, Modified의 약자로 RPM 기반의 시스템을 위한 자동 업데이터 겸 패키지 설치/제거 도구이다. 듀크 대학교의 Linux@DUKE 프로젝트의 일부분으로 개발되었다. yumex 같은 GUI 기반 확장 도구도 있다.
Yum 이전에 있었던 Yellowdog Updater (YUP) 도구를 대체하며, 듀크 대학교 물리학부에서 사용되었던 레드햇 리눅스 시스템 관리를 위해서 등장하였다. 그 이후로 페도라, CentOS 등 많은 RPM 기반 리눅스 배포판에서 사용되었다. 레드햇의 패키지 관리자 up2date에서도 Yum 저장소에 접근할 수 있다.
현재 GNU 일반 공중 사용 허가서 버전 2 이상으로 사용 가능하다.
Yum은 페도라 22 버전 이후부터 DNF로 전환되고 있다. 그러나 여전히 Yum의 전신인 rpm, 그리고 후신인 DNF와 같이 사용 가능하다.

rpm 패키지들에 대해 검색, 다운로드, 설치 기능을 편리하게 해 주는 것이 가장 큰 역할이지만, 가장 큰 장점은 의존성 1‘A’라는 패키지 설치를 위해 ‘가’ 라는 패키지가 필요할 경우 ‘A’에 대한 설치 명령만 수행해도 ‘가’ 패키지를 함께 다운로드하고 설치 해 준다. 문제를 자동으로 해결 해준다는 점이다.

2. Repository 파일
/etc/yum.repo.d/ 아래에 존재한다.
※ CentOS Base repository 예

[CentOS-repo]
name=CentOS-7- Base
 # 리포지터리 이름 (단지 이름이다.) 
baseurl=http://mirrorlist.centos.org
 # 패키지를 다운로드할 수 있는 미러 목록이 포함된 URL 또는 저장소 자체 지정
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
 # 리포지터리 주소
enabled=1
 # 활성화 여부
gpgcheck=0
 # gpg key 검증 여부
 # 리포지터리에 있는 패키지 파일이 정상적인 파일인지확인한다. (변조 여부 등)
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 #gpg key 위치 

3. 사용법 : 검색 관련

[HOSTNAME:/root]# yum clean all
 # Yum cache 삭제

[HOSTNAME:/root]# rm -rf /var/cache/yum
 # yum clean all 명령의 에러 발생 등의 경우

[HOSTNAME:/root]# yum repolist
 # /etc/yum.repo.d/ 아래의 모든 리포지터리 정보를 갱신한다.

[HOSTNAME:/root]# yum search PACKAGE_NAME
 # PACKAGE_NAME 이라는 이름을 포함한 패키지를 검색한다.

[HOSTNAME:/root]# yum provides LIBRARY_NAME
 # LIBRARY_NAME 이라는 라이브러리를 포함한 패키지를 검색한다.

[HOSTNAME:/root]# yum list 
 # 패키지 리스트를 출력한다.

 [HOSTNAME:/root]#  yum list installed 
 # 현재 설치된 패키지 리스트를 출력한다.

[HOSTNAME:/root]#  yum list PACKAGE_FULL_NAME --show duplicate
 # PACKAGE_FULL_NAME 패키지의 중복 여부 정보를 출력한다.

[HOSTNAME:/root]# yum list PACKAGE-VERSION
  # PACKAGE 란 이름의 패키지 중 VERSION 에 해당하는 버전의 목록을 출력한다. 

4. 사용법 : 패키지 설치

[HOSTNAME:/root]# yum install PACKAGE_NAME
 # PACKAGE_NAME 패키지를 설치한다.

[HOSTNAME:/root]# yum install PACKAGE_NAME*
 # PACKAGE_NAME으로 시작하는 이름의 패키지들을 설치한다.

[HOSTNAME:/root]# yum install PACKAGE_1 PACKAGE_2 PACKAGE_3
 # PACKAGE_1, PACKAGE_2, PACKAGE_3 세개의 패키지를 설치한다.

[HOSTNAME:/root]# yum -y install PACKAGE_NAME
 #  명령어 수행 시 사용자의 확인이 필요한 경우('진짜로 설치 하시겠습니까? 등 ')자동으로 y 가 입력되는 것과 같다

5. 사용법 : RPM 패키지 설치

 [HOSTNAME:/root]# yum install /tmp/PACKAGE_1.rpm
 # /tmp/PACKAGE_1.rpm 을 설치한다. 의존성 패키지가 필요한경우 리포지터리에서 자동으로 다운로드 하고 함께 설치 된다.

 [HOSTNAME:/root]# yum install /tmp/*
 # /tmp 디렉토리 내에 모든 rpm 을 설치한다.

※ yum 명령은 관리자 권한(root)으로 수행 해야 한다.