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 명령어를 사용할 수 있다.
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명령어를 통해 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' 카테고리의 다른 글
RHEL8 - yum or dnf import Error (0) | 2024.04.03 |
---|---|
CentOS 7 DVD Repository - yum (0) | 2024.04.03 |
CentOS 7/8 SSH Port 변경 (feat firewalld, selinux) (0) | 2024.04.03 |