YUM(Yellowdog Updater, Modified) 개념

yum은 RPM 기반의 Linux 배포판에서 패키지를 쉽게 설치, 업데이트 및 관리할 수 있도록 도와주는 패키지 관리 도구 중 하나입니다.
yum은 “Yellowdog Updater, Modified”의 약자로, Red Hat Linux에서 시작되어 현재는 여러 RPM 기반의 배포판에서 널리 사용되고 있습니다.

 

YUM Repository 개념

yum repository는 yum이 패키지 정보를 가져오고 설치할 수 있는 저장소의 위치입니다. 이 저장소는 인터넷 또는 로컬 네트워크에 위치할 수 있으며 RPM 패키지 파일과 그에 대한 메타데이터를 포함합니다.
이 저장소를 통해 yum은 패키지의 버전, 종속성 및 기타 정보를 확인하여 사용자가 필요로 하는 패키지를 설치하거나 업데이트할 수 있습니다.

 

YUM Repository 서버 구축 스크립트

아래 스크립트는 Centos7.9 환경을 기준으로 작성되었습니다.

# 필요한 패키지 설치
yum install -y httpd createrepo yum-utils epel-release

# Start the Apache service
# Apache 서비스 시작
systemctl restart httpd

# Enable the Apache service to start automatically on boot
# 부팅 시 자동으로 Apache 서비스 활성화
systemctl enable httpd

# Create a directory to store the yum repository
# YUM 리포지토리를 저장할 디렉토리 생성
mkdir -p /var/www/html/yum/Centos7.9

# wget 사용을 위한 wget 다운로드
# Download wget for using wget
yum install -y wget
# Download CentOS ISO
# CentOS ISO 다운로드
mkdir /mnt/iso
wget -P /root/ http://mirror.kakao.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Everything-2009.iso

# Mount the ISO
# ISO 마운트
mount -t iso9660 -o loop /root/CentOS-7-x86_64-Everything-2009.iso /mnt/iso
# Copy packages from the mounted ISO
# 마운트된 ISO에서 패키지 복사
cp -ar /mnt/iso/Packages/* /var/www/html/yum/Centos7.9

# Change ownership and permissions
# 소유권과 권한 변경
chown -R nobody: /var/www/html/yum
chmod -R 755 /var/www/html/yum

# Add cron job to run createrepo every 1 minute
# 매 분마다 createrepo 실행하는 cron 작업 추가
(crontab -l 2>/dev/null; echo "*/1 * * * * createrepo /var/www/html/yum/Centos7.9") | crontab -

# Sync EPEL repository
# EPEL 리포지토리 동기화
reposync -r epel -p /var/www/html/yum --download-metadata -a x86_64

# Create EPEL repository metadata
# EPEL 리포지토리 메타데이터 생성
createrepo -g /var/www/html/yum/epel/*.x86_64.xml /var/www/html/yum/epel

# Create a script for downloading packages with yumdownloader
# yumdownloader로 패키지 다운로드하는 스크립트 생성
cat <<EOF > /root/Yum-PK-Download.sh
echo "Please enter your Download Package Name:"
read package_name
yumdownloader --resolve --destdir=/var/www/html/yum/Centos7.9 \$package_name
EOF
chmod 700 /root/Yum-PK-Download.sh

echo "YUM Packages setup completed successfully!"
# "YUM 패키지 설정이 성공적으로 완료되었습니다!"

 

YUM Repository 클라이언트

Repo 파일 설정값 설명

name=Local epel
baseurl=http://$Master_IP/yum/epel # 로컬 EPEL 저장소의 기본 URL
enabled=1 # 저장소를 사용 가능하도록 활성화
gpgcheck=0 # GPG 체크 비활성화 (로컬 저장소에서는 보통 사용하지 않음)
EOF

 

YUM 서버 클라이언트 연동 스크립트

아래 스크립트는 Centos7.9 환경을 기준으로 작성되었습니다.

# Master_IP Yum Server 주소
Master_IP="your_master_ip_address"

# 현재의 YUM 저장소 설정을 백업합니다.
tar -zcvf /root/yum_repos_BK.tar.gz /etc/yum.repos.d/*

# 기존의 YUM 저장소 설정 파일을 모두 삭제합니다.
rm -rf /etc/yum.repos.d/*.repo

# 새로운 YUM 저장소 설정 파일을 생성합니다.
cat <<EOF > /etc/yum.repos.d/local-yum.repo
[local-yum]
name=Local Yum Repository
baseurl=http://$Master_IP/yum/Centos7.9
enabled=1
gpgcheck=0

[local-epel]
name=Local epel
baseurl=http://$Master_IP/yum/epel
enabled=1
gpgcheck=0
EOF

# YUM 캐시를 정리하고 로컬 YUM 저장소의 패키지 정보로 업데이트합니다.
# 이전 패키지 정보 및 캐시를 정리
yum clean all
# 메타데이터를 정리하여 새로고침
yum clean metadata
# yum makecache # (선택사항) 새로운 캐시를 생성 (설정에 따라 필요할 수 있음)