[Linux] RHEL Local YUM Repository 구성

RHEL(Redhat Enterprise Linux)에 Local YUM Repository 구성하는 방법에 대하여 설명합니다. 레드햇 리눅스 같은 경우 기업환경의 인터넷이 되지 않는 환경에서 사용되는 경우가 많은데 Local YUM Repository를 구성하여 패키지를 쉽게 설치할 수 있습니다.

 

테스트 환경

• Red Hat Enterprise Linux (RHEL)

 

Local YUM Repository 구성 목적

Local YUM Repository를 구성하는 방법에 여러 가지가 있지만 가장 간단한 방법인 설치 CD를 이용해 구성하는 방법에 대해 소개합니다. 주로 이 방법은 OS 엔지니어가 RHEL을 설치 후 사용하며, local repo를 서버에 구성한 뒤 철수합니다. 그러면 애플리케이션 측에서 추가 패키지를 요청하여도 서버 관리자분들이 yum 명령어를 사용하여 쉽게 서버에 설치할 수 있습니다.

 

Local YUM Repository 설정

레드햇 설치 CD에는 기본 RHEL 서브 스크립션 에서 제공하는 rpm 패키지를 설치할 수 있는 패키지 파일이 모두 포함되어 있습니다. 먼저 설정을 위해 RHEL을 설치한 버전과 동일한 ISO 파일이 준비되어 있어야 합니다.

레드햇 이미지

 

  • VMware Workstation 기준으로 다음과 같이 VM 머신에 RHEL ISO 파일을 마운트 합니다.

 

Local YUM Repository 구성을 위한 CD 마운트

 

CD가 서버에 삽입되면 우리가 사용할 수 있도록 /dev/sr0에 장치를 생성하게 되는데 그 역할을 udev가 합니다. 장치를 삽입하기 전 “udevadm monitor” 명령을 사용하여 이벤트를 모니터링하면 다음과 같이 /dev/sr0 장치가 생성되는 걸 볼 수 있습니다.

# udevadm monitor 
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[592.801663] change   /devices/pci0000:00/0000:00:11.0/0000:02:03.0/ata4/host3/target3:0:0/3:0:0:0/block/sr0 (block)
UDEV  [592.889240] change   /devices/pci0000:00/0000:00:11.0/0000:02:03.0/ata4/host3/target3:0:0/3:0:0:0/block/sr0 (block)

 

  • 장치가 생성되었으므로 서버에 접속해서 마운트 진행합니다. 기본으로 생성되어 있는 /media 디렉터리에 임시로 마운트를 진행합니다.
# mount -o loop /dev/sr0 /media

# df -h /media
Filesystem      Size  Used Avail Use% Mounted on
/dev/sr0         12G   12G     0 100% /media

 

  • CD가 없어도 동작하는 repo 서버 설정을 위해 /iso 디렉터리를 만들어서 CD에 있는 모든 파일을 복사합니다.
ansible]# mkdir /iso
ansible]# cp -a /media/* /iso/

 

  • local.repo 파일을 /etc/yum.repos.d 디렉터리 아래 추가합니다. 파일 이름은 아무거나 해도 되지만 파일 확장자는 .repo로 끝나야 합니다.

        1) RHEL 8 이상 REPO 설정:

RHEL8부터 OS에 포함된 패키지 파일이 BaseOS와 AppStream으로 분리되어 있어 두 개를 잡아야 합니다.

ansible]# cat /etc/yum.repos.d/local.repo
[BaseOS]
name=BaseOS repo
baseurl=file:///iso/BaseOS
gpgcheck=0
enabled=1

[AppStream]
name=AppStream repo
baseurl=file:///iso/AppStream
gpgcheck=0
enabled=1

        2) RHEL7 이하 REPO 설정:

# cat /etc/yum.repos.d/local.repo
[local]
name=localrepo
baseurl=file:///iso
gpgcheck=0
enabled=1

 

확인

  • RHEL8

아래와 같이 AppStream과 BaseOS 두 개의 레포가 정상적으로 출력되는지 확인합니다.

# dnf repolist -v
...
BaseOS repo                                                                                              59 MB/s | 2.4 MB     00:00    
AppStream repo                                                                                           83 MB/s | 7.8 MB     00:00    
Repo-id            : AppStream
Repo-name          : AppStream repo
Repo-revision      : 1665640599
Repo-updated       : Thu 13 Oct 2022 02:56:41 PM KST
Repo-pkgs          : 6,786
Repo-available-pkgs: 5,446
Repo-size          : 9.2 G
Repo-baseurl       : file:///iso/AppStream
Repo-expire        : 172,800 second(s) (last: Wed 08 Feb 2023 10:42:17 PM KST)
Repo-filename      : /etc/yum.repos.d/local.repo

Repo-id            : BaseOS
Repo-name          : BaseOS repo
Repo-revision      : 1665640687
Repo-updated       : Thu 13 Oct 2022 02:58:08 PM KST
Repo-pkgs          : 1,720
Repo-available-pkgs: 1,718
Repo-size          : 1.3 G
Repo-baseurl       : file:///iso/BaseOS
Repo-expire        : 172,800 second(s) (last: Wed 08 Feb 2023 10:42:17 PM KST)
Repo-filename      : /etc/yum.repos.d/local.repo
Total packages: 8,506

 

  • RHEL7 이하

RHEL7 이하의 경우는 다음과 같이 하나의 REPO만 확인하면 됩니다.

# yum repolist -v
...
Config time: 0.223
Yum version: 3.4.3
Setting up Package Sacks
pkgsack time: 0.003
Repo-id      : local
Repo-name    : localrepo
Repo-revision: 1582647003
Repo-updated : Wed Feb 26 01:10:03 2020
Repo-pkgs    : 5,231
Repo-size    : 3.6 G
Repo-baseurl : file:///iso
Repo-expire  : 21,600 second(s) (last: Wed Jun 14 18:34:09 2023)
  Filter     : read-only:present
Repo-filename: /etc/yum.repos.d/local.repo

 

DNF 와 YUM 명령어

RHEL8 이상부터 yum 명령을 대체하는 dnf라는 패키지가 지원됩니다. 따라서 RHEL7 까지는 yum 명령만 사용이 가능했는데 RHEL8 이상부터는 yum과 dnf 패키지 명령어 모두 사용 가능합니다. RHEL8에서 yum 명령어 “/usr/bin/yum” 파일을 보면 dnf-3을 가리키고 있습니다. 이는 yum 명령이 사라지고 dnf 명령으로 대체되었음을 나타냅니다. 다행히도 dnf 명령은 yum 명령과 호환이 되기 때문에 기존에 사용하던 명령어를 그대로 사용할 수 있습니다.

# which yum
/usr/bin/yum

# ls -al /usr/bin/yum
lrwxrwxrwx. 1 root root 5 Mar  9  2021 /usr/bin/yum -> dnf-3

 

마치며

LOCAL REPO 설정은 운영환경뿐만 아니라 테스트 환경에서도 유용하게 사용되는 방법입니다. 하지만 DVD에 있는 패키지를 이용하기 때문에 최신 버전의 패키지가 아니라는 단점이 있습니다. 최신 패키지로 업데이트하기 위해선 서브 스크립션을 등록하거나 최신 버전의 패키지를 다운로드해서 HTTP REPO로 서버를 운영하는 방법 등이 있습니다.

 

Reference

https://access.redhat.com/documentation/ko-kr/red_hat_enterprise_linux/6/html/installation_guide/sn-switching-to-gui-login

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top