CentOS RPM repository 구축하기

다수의 서버를 운영 및 관리를 하게 되는경우에 어플리케이션의 버전을 관리하는 것은 매우 중요합니다. CentOS의 경우 RPM을 통해서 패키지 관리 등을 진행하고, YUM 명령어를 통해서 설치, 업데이트 등 여러 방면에서 편하게 이용하게 됩니다. 서버를 구성 및 제공할 때 대다수의 일반적인 사람들은 APM(Apache, PHP, MySQL/MariaDB)를 이용합니다.

그렇기에 안정화된 버전을 원하는 경우에는 보수적으로 배포하는 CentOS의 저장소를 이용하면 되지만, 특정한 버전(ex: PHP 5.2.X) 등의 경우는 소스컴파일을 통한 이용을 하게 됩니다. 이때, 사전에 구성된 저장소가 있다면 매우 참 편해지게 됩니다. 그래서 이번에는 CentOS 의 RPM 저장소를 구축하는 방법에 대해 서술합니다.

특히나 다음 방법은 RPM에 대한 인증(신뢰)를 담당하는 GPG-KEY를 제외하고 구성하는 것으로 합니다.

  1. 저장소 구성에 필요한 프로그램을 설치합니다.
yum install httpd createrepo
  1. 저장소 구성에 필요한 폴더를 생성합니다.
mkdir -p /var/www/html/repo
mkdir -p /var/www/html/repo/Packages
  1. 등록하고 싶은 RPM 파일을 넣어줍니다.
cp ./*.rpm /var/www/html/repo/Packages
createrepo -v /var/www/html/repo
  1. 다른 서버에서 구성한 저장소를 등록합니다.
echo '[ysyukr-repo]
name=CneOS-7 - ysyukr
baseurl=http://서버주소/repo
enabled=1' > /etc/yum.repos.d/ysyukr.repo

yum repolist

GPG-Key를 등록하는 경우에는 다른 저장소에서 가져온 파일을 설치할 때 오류가 납니다. 만약, OS의 버전에 따라 지원되지 않는 프로그램을 RPM으로 제작 및 배포시에는 GPG-KEY를 생성 및 등록해야합니다. 다음 방법은 GPG-KEY생성을 하는 방법입니다.

  1. GPG-KEY 생성에 필요한 계정을 생성합니다.
useradd ysyukr
su ysyukr
  1. GPG-Agent를 시작합니다.
gpg-agent --use-standard-socket --daemon
  1. GPG-KEY를 생성 및 지문 확인
cat <<EOF | gpg2 --batch --no-tty --gen-key
%echo Generating a standard key
Key-Type: default
Key-Length: 2048
Subkey-Type: default
Subkey-Length: 2048
Name-Real: [Your Name]
Name-Email: [Your Email]
Expire-Date: 10y
Passphrase: [Change ME]
%commit
%echo done
EOF

gpg --fingerprint
  1. GPG-KEY 파일 추출
gpg -a -o RPM-GPG-KEY-ysyukr --export []
echo '%_gpg_name []' > ~/.rpmmacros
  1. GPG-KEY 저장소에 복제
cp /home/ysyukr/RPM-GPG-KEY-ysyukr /var/www/html/repo
  1. 저장소 등록
echo '[ysyukr-repo]
name=CneOS-7 - ysyukr
baseurl=http://서버주소/repo
gpgkey=http://서버주소/repo/RPM-GPG-KEY-ysyukr
enabled=1
gpgcheck=1' > /etc/yum.repos.d/ysyukr.repo

yum repolist

다음엔 기회가 된다면 RPM패키지를 직접 만드는 방법도 기록해 볼까 합니다. :)