IT Technology/Linux

Linux Repository config

by빵수 2023. 11. 27. 15:34
728x90
반응형

Linux Repository config 구성 방법에 대해서 알아보자

 

 

Local YUM Repository 구성하는 이유?

 

Local YUM Repository란?   

  • 말 그대로 Local(해당 지역) 내에서만 돌아가는 YUM 저장소이다.
  • YUM 저장소 안에 구성된 파일은 RPM이라는 확장자를 가지고 있는 패키지이다.
  • 흔히들 이것을 Local Repo(로컬 레포)라고 부른다.
  • 필드에서 누군가가 "레포 잡아주세요"라고 하면 대부분이 Local Repo를 잡아주는 것이다.
  • Local Repo를 잡아주는 이유는 일반적으로 운영중인 서버는 외부 통신이 되지 않는 폐쇄망에서 운영되기 때문에 Local Repository를 구성한다.
     
  • YUM(Yellowdog Updater Modified)이란? 레드햇 계열에서 사용되는 명령어로 RPM 패키지를 관리하는 도구이다.
  • RPM(Redhat Package Manager)이란?  RPM은 레드햇 계열에서 사용되는 패키지로 Windows의 Setup 파일과 비슷하다고 생각하면 된다.

 

 

YUM 명령어 

  • YUM은 크게 패키지관련 설치, 제거, 저장소 업데이트, 원복 등의 작업을 할 때 사용한다. 
  • 물론 추가적으로 더 들어가면 빠른 이용을 위한 캐시 저장 및 설치할 패키지들 다운로드 등도 있다.
  • RHEL 8버전 이상은 yum 대신 dnf 명령어를 이용하면 된다.

 

# yum clean all            (YUM Repository 관련 정보를 전부 지움.)
# yum repolist             ("/etc/yum.repos.d/" 경로에 있는 "~~~.repo"의 확장자의 파일을 읽어서 Repo에 저장)
# yum install               (패키지 설치)

 

 

Local YUM Repository 구성 - LAB

 

 

YUM Repository를 설정하는 경로는 "/etc/yum.repos.d" 이다.

해당 경로에 "~~.repo"와 같이 repo라는 확장자를 가진 파일을 만들어줍니다.  

 

CentOS나 RHEL을 설치하면 기본으로 Repo가 잡혀있는 것들이 있습니다.

RHEL의 경우는 Subscription-manager 명령을 통해 해당 Repo를 enable 시켜줘야 Repo 파일 안에 내용이 채워진다.

하지만, CentOS는 오픈소스이기 때문에 기존 파일에 Repository에 대한 주소가 잡혀져있습니다. 우리는 지금 인터넷이 되지 않는 환경이니까 당연히 오류가 뜨겠죠? 

 

 

 

 

"Could not resolve host http://mirrorlist.centos.org~~~" 라는 현재 mirrorlist.centos.org라는 호스트를 찾아낼 수 없다는 에러가 출력된다.

이 에러가 출력되는 원인은 외부와 통신되지 않거나 외부와 통신되는 nameserver가 설정되어 있지 않기 때문이다.

해당 주소에서 Repo를 가져오려면 외부와 통신되는 DNS 및 네트워크가 필요하다.

 

이 글에서는 외부 통신을 사용하지 않을 것이기 때문에 다음으로 CentOS-7이라는 이름을 가진 Repo 파일을 전부 삭제해주는 작업을 한다.

# ll /etc/yum.repos.d/                              (Repo 파일 확인)
# rm -rf /etc/yum.repos.d/CentOS-*            (CentOS로 시작하는 파일들 모두 삭제)

 

정상적으로 삭제됐는지 확인한다.

 

 

 

 

 

 

 

 

Dafault 레포지토리 경로가 다른 레포지토리의 경로를 잡고 있다면

vi편집기로 enabled 상태를 1 > 0으로 변경하여 Dafault 경로를 Yum Repo로 변경해준다.

 

 

 

 

 

 

주의할 점이 있습니다. 실무에서는 너무 파일이 많지 않는 이상 "-f" 옵션을 사용하지 않는 것을 추천한다.

["-f" 옵션은 지금 하고 있는 행동을 강제로 진행하는 명령어]

 

 

 

Repository를 잡기 위해서 iso 파일을 서버가 인식하게 설정한다.

방법은 CD, USB, iso 파일을 서버에 SCP로 전송 등의 방법이 있다.

VM 기준으로는 그냥 CD를 삽입해주는 것이 가장 간편하고 빠른 방법이다.

 

iso 파일을 삽입했으면 임시 디렉토리에 mount 시켜서 repo 디렉토리에 내용을 복사하는 과정이 필요하기 때문에 2개의 디렉토리를 만들어준다.

# mkdir /root/tmp            (마운트 할 임시 디렉토리 생성)
# mkdir /root/repo           (Repo의 안에 구성될 패키지들이 들어갈 파일들)

 

이제 임시 디렉토리에 마운트하는 작업을 진행한다.

# mount -o loop /dev/sr0  /root/tmp
# ll /root/tmp

 

 

 

정상적으로 마운트가 됐습니다. 

iso 파일을 가져오라는 말만 해서 가져오긴 했는데 왜 가져 올까?
iso 파일 안에는 Packages라는 디렉토리가 있다.
이 안에는 서버를 운영하는데 필요한 가장 기본적인 RPM들이 모여있
다.
그래서 iso 파일을 가져오는 것이다.

 

이제 파일들을 실제로 Repository 구성할 때 땡겨올 경로에 복사를 해준다.

 

# cp -rfvp /root/tmp  /root/repo
# ll /root/repo
왜 "-v" 옵션을 쓸까요? 
v는 verbose의 약자입니다. 현재 진행되고 있는 작업을 눈으로 볼 수 있다.
현재 작업에서는 내 파일들이 정상적으로 잘 복사되고 있는지를 확인하기 위해 사용한다 
(v 옵션은 필수가 아니다.)

 

 

 

정상적으로 복사가 되었다.

이제 임시 디렉토리에 마운트 걸어놓은 것을 마운트 해제하고 VirtualBox에 삽입한 CD도 빼준다.

정상적으로 마운트가 해제된 것을 확인한다.

# umount /root/tmp
# ll /root/tmp

 

 

 

이제  Repo 파일을 작성한다.

# vi /etc/yum.repos.d/local.repo

[local]                                                     
name=CentOS-7.9-Basic
baseurl=file:///root/repo
enabled=1
gpgcheck=0

 

 

위와 같이 작성하고 repo를 불러오는 작업을 한다.

# yum repolist

 

 

 

 

<Repo 파일 내용 형식>

[repo id]
name= repo name
baseurl= package와 repodata가 있는 위치
gpgcheck: 0(GPG 서명 사용 안함), 1(GPG 서명 사용함
enabled: 1(Repo 활성화), 0(Repo 비활

 

 

출처: https://lilo.tistory.com/26 

반응형