Wisdom’s Cloud

[Linux] [CentOS] YUM Repository 본문

LINUX/Advanced

[Linux] [CentOS] YUM Repository

지혜로운지혜쓰 2022. 9. 9. 23:26

 

 

 

YUM Repository란?

 

YUM Repository는 Package를 모아놓은 저장소로, Package 설치 시 활성화된 Repository에서 Package를 다운로드하여 설치한다.

/etc/yum.repos.d 디렉터리에 기본 Repository가 있으며, 아래의 형식대로 작성하여 추가할 수 있다.

[리포지토리 ID]
name=리포지토리 이름
baseurl=리포지토리 주소 or 리포지토리 절대경로
enabled=리포지토리 활성화 여부
gpgckeck=GPG 서명키 사용 여부
gpgkey=GPG 서명키를 사용한다면 서명키 주소

 

하지만 YUM Repository는 인터넷으로 연결된 저장소로 접근하기 때문에 보안 정책 등으로 외부 인터넷이 차단된 환경에서는 사용할 수 없다.

물론 RPM으로 Package 설치나 업데이트를 할 수 있지만, 의존성이 있는 Package가 있을 수 있기 때문에 관리가 매우 까다롭다.

이럴 때는 로컬이나 내부 네트워크에 YUM Repository를 만들면 간편하게 문제를 해결할 수 있다.

 

따라서 이번 시간에는 Local YUM Repository를 만든 후, 같은 네트워크에 있는 서버에서도 이 Repository를 사용할 수 있도록 해보자.

 

 

1. Local YUM Repository 생성

먼저 createrepo를 설치한 후, Repository로 사용할 디렉터리를 생성한다.

[root@server-1-lab ~]# yum install createrepo
[root@server-1-lab ~]# mkdir /jhpark20repo

 

생성한 디렉터리에 php를 설치하지 않고 Packagea만 다운로드한다.

[root@server-1-lab ~]# yum install php --downloadonly --downloaddir=/jhpark20repo

 

그리고 createrepo 명령어를 통해 Repository를 생성한다.

createrepo 명령어를 실행하면 해당 Repository에 저장된 Package의 metadata가 있는 repodata 디렉터리가 생성된다.

repodata 디렉터리에 Package들이 어느 경로에 있고, 의존 Package는 무엇인지 등이 담겨있기 때문에 이 metadata를 통해 Package가 설치되는 것이다.

[root@server-1-lab ~]# createrepo /jhpark20repo
Spawning worker 0 with 4 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

 

 

2. Local YUM Repository 등록

이제 생성한 Repository를 등록하자.

[root@server-1-lab ~]# cat /etc/yum.repos.d/jhpark20.repo
[jhpark20repo]
name=jhpark20repo
baseurl=file:///jhpark20repo
enabled=1
gpgcheck=0

 

yum repolist 명령어를 통해 활성화된 Repository 리스트를 확인할 수 있다.

 

그리고 yum info 명령어를 통해 해당 Package가 생성한 Repository로 조회되는 것을 확인할 수 있다.

 

 

3. Local YUM Repository 사용

다른 서버에서 http를 통하여 Repository를 사용할 수 있도록 httpd를 설치한 후, VirtualHost를 등록한다.

아래와 같이 httpd 설정 파일에 추가하면, 8080 포트로 들어오는 모든 IP 주소들이 Repository 디렉터리를 불러올 수 있도록 한다.

이때 모든 액세스를 허용해야 Repository 디렉터리에 있는 metadata에 접근할 수 있다.

[root@server-1-lab ~]# yum install httpd
[root@server-1-lab ~]# tail -6 /etc/httpd/conf/httpd.conf
<VirtualHost *:8080>
    DocumentRoot /jhpark20repo
  <Directory "/jhpark20repo">
    Require all granted
  </Directory>
</VirtualHost>

 

그리고 8080 포트를 열어준 후, 방화벽을 해제한다.

[root@server-1-lab ~]# cat /etc/httpd/conf/httpd.conf | grep 8080
Listen 8080
[root@server-1-lab ~]# systemctl restart httpd
[root@server-1-lab ~]# firewall-cmd --add-port=8080/tcp --permanent
success
[root@server-1-lab ~]# firewall-cmd --reload
success

 

이제 Repository가 있는 서버의 주소와 포트를 등록하면, 다른 서버에서도 해당 Repository를 사용할 수 있다. 😃

[root@master1 ~]# cat /etc/yum.repos.d/jhpark20.repo
[jhpark20repo]
name=jhpark20repo
baseurl=http://server1:8080
enabled=1
gpgcheck=0

 

 

 

[참고 문서]

https://www.lesstif.com/system-admin/centos-rhel-iso-yum-local-yum-repository-7634963.html

 

CentOS, RHEL에 ISO 파일로 로컬 yum 저장소(Local yum repository) 만들기

외부 인터넷이 차단된 서버(off-line server) 에 설치 ISO Image 파일을 업로드해서 yum 저장소를 만들고 패키지 설치 및 업데이트하는 방법을 설명합니다.

www.lesstif.com

 

'LINUX > Advanced' 카테고리의 다른 글

[Linux] [CentOS] 보안 설정  (0) 2022.09.16
[Linux] [CentOS] 패스워드 정책 설정  (1) 2022.09.15
[Linux] [CentOS] swap  (0) 2022.09.08
[Linux] [CentOS] LVM(2)  (0) 2022.09.07
[Linux] [CentOS] LVM(1)  (1) 2022.09.06