YUM(Yellow dog Update Modified) Repository
우리가 리눅스(RHEL 계열)에서 프로그램의 설치/삭제를 도와주는 패키지 관리 도구이다.
여기서 '도와주는' 이라고 표현을 했는데, 그 이유는 저 수준(Low Level) 패키지 관리 도구인
'RPM(Redhat Package Manager)'의 경우 패키지 종속성의 문제로 인해
내가 만약 "Game" 이라는 패키지를 설치하겠다고 하면,
"Game" 이라는 패키지 하나만 설치하면 되는 것이 아닌
종속되어 있는 패키지들을 전부 설치해야 하는 것이다.
.. 이게 맞는 비유일지는 모르겠으나 "책상" 이라는 물체를 이루려면
"책상다리", "못", "받침대" 등이 서로 연결되어 책상을 이루는 것과 비슷하다.
이렇듯 우리가 하나의 패키지를 손수 설치하려면 그 과정이 짧을 수도 있겠지만
대부분의 패키지는 갖가지 다른 패키지(요소)들로 이루어져 매뉴얼로
설치하기는 굉장히 귀찮고 어려울 수도 있는 일이다.
이런 점을 보완해 원하는 패키지만 설치를 요청하면 그에 종속된 패키지까지
전부 설치를 도와주는 "YUM" 이라는 패키지 관리 툴이다.
▼ yum 명령어의 사용 방식으로는 아래 코드블럭을 참고하자
yum
# Yellow dog Update Modified
yum ~ install
# 패키지를 설치
yum ~ check-update
# 설치된 패키지 중에서 업데이트 가능한 패키지를 출력
yum update ~
# 패키지를 업데이트 해주는 명령어
# 전체 업데이트도 가능하나, yum update -x [package] 처럼
# 특정 패키지를 제외하고 나머지를 업데이트 하는 것도 가능
yum search ~
# Repository 에서 설치될 수 있는 가용한 패키지를 검색
yum list ~
# 패키지의 설치 여부 등을 학인할 때 사용
● YUM Repository
yum에 패키지 연결경로를 추가시킬 때 소스 패키지와 이와 관련된 패키지들을 모아놓은 곳을
"리포지터리(Repository)" 라고 칭한다, "저장소"의 의미를 가지고 있다.
몇 가지 대표적인 방법으로 리포지터리를 사용해서 필요한 패키지를 설치할 수 있다.
1. CentOS 설치 시 자동으로 생성되는 "BASE"와 같은 리포지터리를 사용
2. CentOS 설치 시 DVD 등을 리포지터리로 사용
3. "EPEL"이나 "REMI"와 같은 별도의 리포지터리 설치해서 사용
'CentOS-7-x86_64-DVD-2009' 이미지를 가상머신에 마운트 후
Packages 디렉토리 안의 내용을 확인해보면 약 4070개의 rpm 패키지가 있는 것을 확인할 수 있다.
내부 저장소 설정을 위해 필요한 패키지 ftp, createrepo를 다운로드
sudo mkdir /var/ftp/pub/local-repo
sudo cp -arp /[Mount Point]/Packages/* /var/ftp/pub/local-repo
ll /var/ftp/pub/local-repo
total 4000996
-rw-rw-r--. 1 root root 1818404 Oct 15 2020 389-ds-base-1.3.10.2-6.el7.x86_64.rpm
-rw-rw-r--. 1 root root 730568 Oct 15 2020 389-ds-base-libs-1.3.10.2-6.el7.x86_64.rpm
-rw-rw-r--. 1 root root 152952 Aug 10 2017 abattis-cantarell-fonts-0.0.25-1.el7.noarch.rpm
-rw-rw-r--. 1 root root 550448 Oct 15 2020 abrt-2.1.11-60.el7.centos.x86_64.rpm
-rw-rw-r--. 1 root root 199288 Oct 15 2020 abrt-addon-ccpp-2.1.11-60.el7.centos.x86_64.rpm
.
.
.
위의 명령어를 참조하여 DVD에 들어있는 약 4070개의 ~.rpm 패키지를
내부 저장소로 사용할 디렉토리에 복사해준 뒤 내용을 확인해본다.
** 패키지 파일의 개수는 CentOS 이미지 파일의 버전에 따라 상이할 수 있다.
주석을 제외한 후 해당 파일을 확인해보면
전부 웹 사이트로 연결되는 것을 확인할 수 있다. 즉 yum을 이용하여 패키지를 다운 받으려면
인터넷에 필히 연결이 되어있어야 한다는 뜻. 이 때, ftp나 http의 경우에는 '://' 로 사용되지만,
웹 상에서 파일을 지정할 때에는 ':///' 식으로 사용된다는 차이점이 존재한다.
외부망(웹 사이트)으로 접근하는 것이 아닌 내부 저장소(Local Repository)를 통해
패키지 다운로드를 관리하는 실습을 진행
** 실습을 위해 CentOS7 머신(1) 과 머신(2)를 이용하였다.
▼ 방화벽 설정
sudo firewall-cmd --permanent --zone=public --add-sercive=ftp
sudo firewall-cmd --reload
sudo firewall-cmd --list-services
sudo systemctl restart vsftpd && sudo systemctl status vsftpd
▼ 원활한 실습을 위해 Selinux = Permissive로 진행
setenforce 0
# SELinux의 보안 설정을 임시적으로 비활성화
getenforce
# 현재 SELinux의 상태를 출력
Permissive
# 해당 상태로 표시되면 비활성화 되었음을 확인할 수 있다.
** 여기서 한 가지 빼먹은 부분이 있었는데 현재 상태로는 아마 클라이언트 PC에서 패키지
다운로드를 시도하면 Mirror Site를 찾을 수 없다 등의 오류가 발생할 수 있다.
'SELinux'의 보안설정에 의한 차단 같은데, 이 부분도 SELinux의 정책을 변경하면
굳이 비활성화를 하지 않더라도 연결에 지장이 없을 것으로 예상된다.
현재는 정확한 매커니즘을 이해하지 못 하고 있으므로,
** 추후에 SELinux에 대해서 학습할 때 추가적인 방안을 포스팅
이제 내부 저장소 서버에서의 설정은 거의 끝났다.
▼ 클라이언트 머신(2)에 접속하여 실습을 마무리 해본다.
내부 저장소 연결을 위한 ftp 패키지를 설치
Local Repository 설정이 완료되기 전 yum 명령어를 통해 패키지 다운로드를 시도했을 때,
시스템 디폴트 설정인 "base" 리포지터리를 통해서 패키지를 다운하는 것을 확인해볼 수 있다.
'baseurl'의 경우 서버의 입장인 머신(1) 에서는 "/var/vsftpd/pub/server"라는 경로에 설정되어 있지만,
클라이언트 입장의 머신(2)에서는 머신(1)의 IP주소와 연결될 디렉토리의 경로까지 설정을 해줘야한다.
** 'gpgcheck'란 외부에서 받아오는 파일의 무결성을 인증해주는 키로 인증하는 것을 의미,
기본 값으로는 각종 패키지들을 외부의 ftp 서버에서 파일을 받아오는 형식이기에
인증을 활성화 시켜줬지만, 현재는 내부 저장소에서 패키지를 받아올 것이기에
굳이 활성화시키지 않은 것이다.
리포지터리의 동작여부를 직관적으로 느낄 수 있도록 임의로 디폴트 리포지터리를
전부 옮기고 해당 디렉토리에 새로 생성하여 설정해 둔 "client.repo"파일만 남겨 놓았다.
** 이 부분도 원래는 각각의 리포지터리에 우선순위(Priority) 값을 줘서 우선순위 지정이 가능함
sudo yum erase -y nmap
# remove가 아닌 erase로 종속파일 제외 앞에서 설치한 'nmap'만을 삭제
sudo yum clean all
# yum 캐시 데이터를 삭제(오류를 피하기 위함)
sudo yum repolist all
# Repository 목록을 출력
이 외의 것들을 모조리 다른 디렉터리에 옮겨뒀으니 당연히 한 가지만 활성화가 되어있다.
ftp를 통해 내부 서버에 있는 패키지를 받아오는 과정이다.
'Linux_System' 카테고리의 다른 글
[Linux]Process(1)_ps (0) | 2022.11.05 |
---|---|
[Linux]Software_Compile (0) | 2022.10.31 |
[Linux]Basic_Command(2) (0) | 2022.10.10 |
[Linux]Basic_Command(1) (0) | 2022.10.06 |
[Linux]LVM (1) | 2022.09.22 |