본문 바로가기
IT운영/리눅스

리눅스 CentOS 8 로컬 YUM Repository 구성하기

by Torobeen 2023. 3. 5.
반응형

리눅스에서 패키지를 설치하는 대표적인 명령어는 yum과 rpm이다. yum은 특정 패키지를 설치할 때 요구되는 의존성 패키지를 자동으로 설치해주는 명령어이고, rpm은 개별 패키지를 설치, 제거해주는 명령어이다.

 

따라서 rpm으로 어떤 패키지를 설치하려면 그 패키지와 의존성 관계인 다른 패키지에 대해서도 알아야 하고, 이를 찾는 과정에서 패키지 설치 작업 시간이 길어질 가능성이 있는 반면, yum은 의존성 문제를 자동으로 처리해주니 패키지 설치 시간을 훨씬 단축시킬 수 있다.

 

하지만 기본적으로 yum은 인터넷이 연결되어 있는 환경에서만 사용할 수 있다. yum이 패키지를 설치할 때 인터넷 패키지 저장소를 참조하도록 구성되어 있기 때문이다. 그래서 폐쇄망에서는 리눅스 내부에 로컬 패키지 저장소를 만들고 이걸 참조하도록 설정을 해야 한다. 이 로컬 패키지 저장소가 이 포스트에서 구성할 로컬 YUM Repository이다.

 

여기서 사용한 OS 버전은 CentOS 8 버전이다.


1. 리눅스 ISO 마운트

ISO가 인식되었는지 확인하고 마운트한다. 그냥 /mnt에 마운트해도 되고, 예시처럼 /mnt/iso 디렉토리를 만들어도 된다.

# df -h
# mkdir /mnt/iso
# mount /dev/sr0 /mnt/iso

 

2. 패키지 및 repodata 복사

CentOS 7 버전에서는 패키지 파일이 /Packages 디렉토리에 통합되어 있었는데, CentOS 8 버전에서는 /BaseOS/Packages 디렉토리와 /AppStream/Packages 디렉토리로 나뉘어 있다. BaseOS에는 시스템 기본 패키지가 들어있고, AppStream에는 다양한 애플리케이션과 서비스 패키지가 들어있다. CentOS 8 버전은 이렇게 리포지토리를 분리하여 패키지 간 충돌을 예방할 수 있게 되었다.

 

복사할파일

Packages는 실제 패키지들이 들어있는 디렉토리고, repodata는 yum이 패키지 정보를 검색하고 업데이트하는 데 필요한 메타데이터가 들어있는 디렉토리다. 이 repodata가 없으면 yum이 패키지를 찾을 수 없다.

 

AppStream과 BaseOS 안의 파일을 각각 복사한다.

# mkdir /BaseOS
# mkdir /AppStream
# cp -r /mnt/iso/BaseOS/* /BaseOS/
# cp -r /mnt/iso/AppStream/* /AppStream/

 

복제가 완료되면 ISO는 언마운트한다.

# umount /dev/sr0

 

3. 로컬 Repository 파일 생성

먼저 backup 디렉토리를 만들고 기존 repo 파일들을 정리한다.

# mkdir /etc/yum.repos.d/backup
# mv /etc/yum.repos.d/CentOS-Linux-* /etc/yum.repos.d/backup/

 

vi로 BaseOS 및 AppStream repo 파일을 각각 생성한다.

# touch /etc/yum.repos.d/Local-BaseOS.repo
# touch /etc/yum.repos.d/Local-AppStream.repo

 

vi로 Local BaseOS 파일에 들어가서 다음 내용을 추가한다.

# vi /etc/yum.repos.d/Local-BaseOS.repo
[Local-BaseOS]
name=Local BaseOS
baseurl=file:///BaseOS
enabled=1
gpgcheck=0

 

:wq로 저장 후 나오고, 마찬가지로 vi로 Local AppStream 파일에 들어가서 다음 내용을 추가한다.

# vi /etc/yum.repos.d/Local-AppStream.repo
[Local-AppStream]
name=Local AppStream
baseurl=file:///AppStream
enabled=1
gpgcheck=0

 

입력 후 :wq로 저장하고 나온다. 각 baseurl 경로는 2번 절차에서 생성한 디렉토리 경로에 맞게 입력해야 한다.

 

4. yum Repository 목록 확인

# yum repolist all

 

 

5. yum으로 패키지 확인

# yum clean all
# yum list

 

yum clean all은 yum의 캐시를 삭제하는 명령어로, 이전에 다운로드한 패키지 파일이나 메타데이터를 삭제하여 저장 공간을 확보하거나 새로운 패키지 정보를 받아온다. 이는 불필요한 캐시 파일이나 오래된 정보가 쌓여서 성능 저하가 발생할 경우를 미리 방지하기 위한 명령어로, 평상시에도 사용할 수 있다.

 

yum list는 현재 설치된 패키지나 yum 저장소에 있는 패키지를 조회하는 명령어다.

 

yum-list-결과

yum list 명령어를 쳤을 때 뭔가 다운로드하는 듯한 내용이 보이면 성공이다.

 

만약, Errors during downloading metadata for repository 메세지가 보이면 위 절차대로 맞게 구성했는지 다시 확인해본다.

 

6. yum으로 패키지 설치 테스트

테스트 삼아 인터넷이 안 되는 시스템에서 yum을 이용하여 sendmail 패키지를 설치했다.

 

폐쇄망에서-yum사용
폐쇄망에서-yum사용-성공

잘 설치된다.

반응형