YUM을 통한 RPM 패키지 관리 및 사용자 정의 저장소 구성

YUM 리포지토리 설정 및 미러 사용

Linux 시스템에서 소프트웨어를 효율적으로 관리하기 위해 YUM(Yellowdog Updater, Modified)은 필수적인 도구입니다. 기본 제공되는 공식 리포지토리를 사용하는 대신, 더 빠른 다운로드 속도를 위해 국내 미러를 활용할 수 있습니다.

阿里云(Aliyun) 미러 적용 방법

Aliyun은 CentOS 및 EPEL(Epel Package Ecosystem) 리포지토리를 위한 안정적인 국내 미러를 제공합니다. 설정 절차는 다음과 같습니다.

EPEL 리포지토리 백업

mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.bak
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.bak

Aliyun 기반 EPEL 리포지토리 다운로드

RHEL/CentOS 버전에 따라 적절한 파일을 선택합니다:

  • CentOS 7: wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  • CentOS 6: wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
  • CentOS 5: wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-5.repo

기본 OS 리포지토리 교체

mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache

외부 소프트웨어 리포지토리 추가 예시

Nginx 저장소 등록

[root@host ~]# cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx-stable]
name=Nginx Stable Repository
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
EOF

MySQL Community 저장소 설치

yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-10.noarch.rpm

Zabbix 저장소 수동 등록

rpm -ivh http://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-1.el7.noarch.rpm

사용자 정의 YUM 서버 구축

대규모 환경에서는 외부 네트워크 접근 없이 내부 네트워크에서 패키지를 배포할 수 있는 로컬 YUM 서버가 유리합니다.

FTP 기반 YUM 저장소 준비

yum -y install vsftpd
mkdir -p /var/ftp/{centos7u2,addons/{nginx,zabbix}}
systemctl enable vsftpd --now

방화벽 및 SELinux 설정

firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/sysconfig/selinux

ISO 이미지 마운트

mount -o loop /home/CentOS-7-x86_64-DVD-1908.iso /var/ftp/centos7u2
echo "/usr/bin/mount -o loop /home/CentOS-7-x86_64-DVD-1908.iso /var/ftp/centos7u2" >> /etc/rc.local
chmod +x /etc/rc.d/rc.local

추가 패키지 저장소 생성

Nginx와 같은 외부 패키지를 로컬 저장소에 포함시키기 위해 캐시된 RPM을 복사하고 메타데이터를 재생성합니다.

YUM 캐시 활성화

sed -i 's/^keepcache=.*/keepcache=1/' /etc/yum.conf
yum clean all

패키지 설치 및 캐시 복사

yum -y install nginx
find /var/cache/yum -name "*.rpm" -exec cp {} /var/ftp/addons/nginx/ \;

createrepo를 이용한 저장소 메타데이터 생성

yum -y install createrepo
createrepo /var/ftp/addons/nginx

새로운 패키지가 추가될 경우 동일한 명령으로 메타데이터를 갱신하면 됩니다.

클라이언트에서 사용자 정의 저장소 사용

내부 클라이언트는 FTP 기반 저장소를 가리키도록 설정할 수 있습니다.

기본 OS 저장소 설정

[root@client ~]# cat > /etc/yum.repos.d/local-centos.repo << 'EOF'
[local-os]
name=Local CentOS 7 Base
baseurl=ftp://192.168.1.100/centos7u2
enabled=1
gpgcheck=0
EOF

추가 소프트웨어 저장소 등록

[root@client ~]# cat > /etc/yum.repos.d/local-nginx.repo << 'EOF'
[local-nginx]
name=Local Nginx Repository
baseurl=ftp://192.168.1.100/addons/nginx
enabled=1
gpgcheck=0
EOF

패키지 설치 테스트

yum -y install nginx

大规模 배포 자동화 방안

  • Shell 스크립트를 통한 일괄 배포
  • Ansible, SaltStack, Puppet 등의 구성 관리 도구 활용

GPG 서명 검증 관리

보안을 강화하기 위해 YUM은 패키지의 디지털 서명을 검증할 수 있습니다.

공개 키 수동 등록

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

리포지토리 파일에서 GPG 검증 활성화

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

서명 검증 일시 비활성화

테스트 환경에서는 아래 옵션으로 검사를 건너뛸 수 있습니다.

yum --nogpgcheck install package-name

로컬 미디어 기반 저장소 사용

인터넷 연결이 제한된 환경에서는 설치 DVD를 직접 마운트하여 로컬 저장소로 활용할 수 있습니다.

DVD 또는 ISO 마운트

mount /dev/cdrom /media
# 또는 ISO 파일 마운트
mount -o loop CentOS-7-DVD.iso /media

로컬 저장소 정의

[dvd-repo]
name=CentOS Local DVD
baseurl=file:///media
enabled=1
gpgcheck=0

YUM을 통한 패키지 관리 명령어

저장소 정보 확인

yum clean all
yum makecache
yum repolist

패키지 설치 및 업그레이드

yum list mariadb-server
yum install mariadb-server
yum reinstall mariadb-server
yum update samba
yum update # 전체 시스템 업데이트

검색 및 정보 조회

yum search keyword
yum info httpd
yum list installed | grep ssh
yum provides */vncviewer

그룹 기반 설치 및 제거

yum grouplist
yum groupinstall "Development Tools"
yum groupremove "PostgreSQL Database Server"

패키지 삭제

yum remove httpd
yum autoremove # 사용하지 않는 종속성 제거

태그: yum rpm CentOS createrepo linux-package-management

7월 22일 02:17에 게시됨