본문 바로가기

Linux

RedHat8 (RHEL8) Local DVD Repository 만들기 - createrepo

반응형

Local Repository Overview

Redhat 계열 리눅스에서는 yum 이라는 강력한 명령어를 통해서 rpm 패키지 의존성을 해결하며 자동으로 설치를 진행할 수 있다. 패키지 의존성이란 패키지를 설치하기 위해서 필요한 다른 패키지가 먼저 설치가 되어있지 않으면 설치할 수 없는 문제점이며, yum 명령어는 이런 패키지를 자동으로 찾아서 함께 설치해준다. 오늘 이 문서에서는 RHEL 8 DVD를 가지고 Local Repository를 구축해서 인터넷이 되지 않는 환경에서 yum 명령어를 통해 각종 패키지를 설치할 수 있도록 해볼 것이다.

Repository

yum 명령어가 패키지를 자동으로 찾아서 설치해 주는데, 패키지를 검색하고 다운로드해서 설치할 때 패키지가 존재하는 곳을 Repository라고 부른다. Linux 배포판 별로 기본 BaseOS Repository 같은 것들이 존재하고 수많은 mirror가 전세계에 존재한다. 우리나라에서 유명한 RHEL 계열 mirror는 kakao나 naver가 있다. 문제는 인터넷이 불가능한 환경에서 yum 명령어를 통해 패키지를 설치하는 필요성이 있을 때가 있는데, 이때 우리는 Local 서버에 Repository를 생성하고 관리하여 인터넷이 되지 않는 환경에서 동일하게 yum 명령어를 사용할 수 있다.

인터넷 연결이 안된 REHL 서버에서 yum 명령어를 사용했을 때, 사용가능한 repository가 없다는 Error

Createrepo

createrepo 명령어는 yum repository를 쉽게 생성하고 관리해주는 명령어다.

최초 서버에 createrepo 명령어가 존재하지 않을 때, DVD 미디어 안에 있는 createrepo rpm파일을 찾아 인스톨 해준다.

# DVD를 /mnt 디렉토리에 마운트
[root@LocalRepository ~]# mount /dev/sr0 /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.

# AppStream에서 drpm, createrepo_c-libs, createrepo_c 순서대로 설치(의존성 때문)
[root@LocalRepository ~]# cd /mnt/AppStream/Packages/
[root@LocalRepository Packages]# rpm -ivh drpm-0.4.1-3.el8.x86_64.rpm
warning: drpm-0.4.1-3.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:drpm-0.4.1-3.el8                 ################################# [100%]
[root@LocalRepository Packages]# rpm -ivh createrepo_c-libs-0.17.7-6.el8.x86_64.rpm
warning: createrepo_c-libs-0.17.7-6.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:createrepo_c-libs-0.17.7-6.el8   ################################# [100%]
[root@LocalRepository Packages]# rpm -ivh createrepo_c-0.17.7-6.el8.x86_64.rpm
warning: createrepo_c-0.17.7-6.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:createrepo_c-0.17.7-6.el8        ################################# [100%]

# Createrepo 패키지 설치 완료
[root@LocalRepository Packages]# createrepo --version
Version: 0.17.7 (Features: DeltaRPM LegacyWeakdeps )

Local DVD Media 파일 복사

# DVD에 rpm 패키지를 복사할 디렉토리 생성 후 DVD 내 BaseOS, AppStream 디렉토리 복사
[root@LocalRepository ~]# mkdir /LocalRepo
[root@LocalRepository ~]# cp -rp /mnt/BaseOS/ /LocalRepo/
[root@LocalRepository LocalRepo]# cp -rp /mnt/AppStream/ /LocalRepo/

# 잘 복사되었는지 확인
[root@LocalRepository LocalRepo]# ls /LocalRepo/
AppStream  BaseOS

 

Repositroy 생성

# 지금은 상대경로를 입력했는데, /LocalRepo/BaseOS/ 와 같이 풀 경로로 입력해줘도 됨
[root@LocalRepository LocalRepo]# createrepo BaseOS/
Directory walk started
Directory walk done - 1741 packages
Temporary output repo path: BaseOS/.repodata/
Preparing sqlite DBs
Pool started (with 5 workers)
Pool finished
[root@LocalRepository LocalRepo]# createrepo AppStream/
Directory walk started
Directory walk done - 6944 packages
Temporary output repo path: AppStream/.repodata/
Preparing sqlite DBs
Pool started (with 5 workers)
Pool finished

# repo file 작성
# BaseOS.repo 파일
[root@LocalRepository yum.repos.d]# vi /etc/yum.repos.d/BaseOS.repo
[root@LocalRepository yum.repos.d]# cat /etc/yum.repos.d/BaseOS.repo
[BaseOS]
name=BaseOS
enabled=1
gpgcheck=0
baseurl=file:///LocalRepo/BaseOS/
# AppStream.repo 파일
[root@LocalRepository yum.repos.d]# vi /etc/yum.repos.d/AppStream.repo
[root@LocalRepository yum.repos.d]# cat /etc/yum.repos.d/AppStream.repo
[AppStream]
name=AppStream
enabled=1
gpgcheck=0
baseurl=file:///LocalRepo/AppStream/

 

yum repolist를 통해 repository 확인

yum repolist 명령어를 통해 새로 생성한 repository 확인

 

yum명령어를 통해 net-tools 패키지 설치(Local repository를 통해)

[root@LocalRepository yum.repos.d]# yum install net-tools
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

AppStream                                                                                                                                                                      81 MB/s | 8.2 MB     00:00
BaseOS                                                                                                                                                                         66 MB/s | 2.4 MB     00:00
Last metadata expiration check: 0:00:01 ago on Mon 08 Apr 2024 11:14:54 AM KST.
Dependencies resolved.
==============================================================================================================================================================================================================
 Package                                        Architecture                                Version                                                         Repository                                   Size
==============================================================================================================================================================================================================
Installing:
 net-tools                                      x86_64                                      2.0-0.52.20160912git.el8                                        BaseOS                                      322 k

Transaction Summary
==============================================================================================================================================================================================================
Install  1 Package

Total size: 322 k
Installed size: 942 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                      1/1
  Installing       : net-tools-2.0-0.52.20160912git.el8.x86_64                                                                                                                                            1/1
  Running scriptlet: net-tools-2.0-0.52.20160912git.el8.x86_64                                                                                                                                            1/1
  Verifying        : net-tools-2.0-0.52.20160912git.el8.x86_64                                                                                                                                            1/1
Installed products updated.

Installed:
  net-tools-2.0-0.52.20160912git.el8.x86_64

Complete!
[root@LocalRepository yum.repos.d]#

 

반응형

'Linux' 카테고리의 다른 글