중요: 이 튜토리얼은 예시 호스트명 server1.example.com(192.168.0.100)을 사용합니다. 자신의 환경에 맞게 호스트명/IP와 경로를 바꾸세요.
목적과 요약
로컬 yum 저장소를 구성하면 여러 대의 Fedora 8 시스템에 패키지를 설치할 때 인터넷 대역폭을 절약하고 LAN 속도로 설치할 수 있습니다. 이 가이드는 다음을 다룹니다:
- Apache 설치 및 서비스 등록
- createrepo로 로컬 저장소 메타데이터 생성
- DVD 복사 또는 rsync를 이용한 패키지 수집
- 업데이트 자동 동기화(cron)
- 클라이언트의 yum 설정 변경
- 운영시 주의사항과 문제 해결
1 사전 준비
이 문서의 예시는 다음 설정을 사용합니다:
- 미러 서버: server1.example.com
- IP 주소: 192.168.0.100
- Apache 기본 문서 루트: /var/www/html
- 저장소 위치: /var/www/html/yum
필요 조건:
- 미러용 서버에 충분한 디스크 공간(전체 패키지를 받을 경우 수십 기가바이트 필요)
- 네트워크 접근(클라이언트에서 HTTP 접근 가능)
- root 권한
참고: Fedora 8은 오래된 릴리스입니다. 가능한 경우 최신 지원 버전 사용을 고려하세요.
2 Apache 설치
Apache(httpd)를 설치하고 부팅시 자동 시작하도록 설정합니다:
yum install httpd
부팅시 자동 시작 설정:
chkconfig --levels 235 httpd on
Apache 시작:
/etc/init.d/httpd start
중요: 방화벽(iptables 등)이 HTTP(포트 80)를 허용하도록 설정되어야 합니다. SELinux가 활성화된 경우 Apache가 /var/www/html 아래 파일을 서비스할 수 있는지 컨텍스트를 확인하세요.
3 저장소 구성
- createrepo 설치:
yum install createrepo
- 디렉터리 생성(예: i386용 Fedora 8):
mkdir -p /var/www/html/yum/base/8/i386
mkdir -p /var/www/html/yum/updates/8/i386
- 패키지 채우기: DVD에서 복사하거나, Everything(전체 패키지) 미러에서 rsync로 가져옵니다.
DVD에서 복사:
mount /dev/cdrom /mnt
cd /mnt/Packages
cp -v * /var/www/html/yum/base/8/i386
cd /
umount /mnt
미러에서 rsync로 전체 패키지 가져오기(오래 걸릴 수 있음):
rsync -avrt rsync://ftp-stud.hs-esslingen.de/fedora/linux/releases/8/Everything/i386/os/Packages/ /var/www/html/yum/base/8/i386
주의: rsync 명령의 슬래시 위치가 중요합니다. 위 예시처럼 끝에 슬래시를 포함하세요.
- createrepo 실행(메타데이터 생성):
createrepo /var/www/html/yum/base/8/i386
실행 후 /var/www/html/yum/base/8/i386/repodata/ 아래에 repomd.xml과 primary.xml.gz 등 파일이 생성됩니다.
예시 출력:
ls -l /var/www/html/yum/base/8/i386/repodata/
[root@server1 /]# ls -l /var/www/html/yum/base/8/i386/repodata/
total 9268
-rw-r--r-- 1 root root 2227275 2007-12-18 21:11 filelists.xml.gz
-rw-r--r-- 1 root root 6487453 2007-12-18 21:11 other.xml.gz
-rw-r--r-- 1 root root 747714 2007-12-18 21:11 primary.xml.gz
-rw-r--r-- 1 root root 951 2007-12-18 21:11 repomd.xml
[root@server1 /]#
- 업데이트 디렉터리 채우기(업데이트 패키지):
rsync -avrt rsync://ftp-stud.hs-esslingen.de/fedora/linux/updates/8/i386/ --exclude=debug/ /var/www/html/yum/updates/8/i386
- 자동 동기화(cron) 설정 예시: 매 2일마다 04:23에 업데이트 받기
crontab -e
그리고 다음 행 추가:
23 4 */2 * * /usr/bin/rsync -avrt rsync://ftp-stud.hs-esslingen.de/fedora/linux/updates/8/i386/ --exclude=debug/ /var/www/html/yum/updates/8/i386
참고: Cron 작업에서 환경변수나 PATH가 다를 수 있으므로 절대 경로를 사용하세요.
4 클라이언트 구성
각 Fedora 8 클라이언트에서 /etc/yum.conf(또는 /etc/yum.repos.d/*.repo)를 수정하여 로컬 저장소를 사용하도록 합니다. 예를 들어 /etc/yum.conf에 다음을 추가합니다:
[base-local]
name=Fedora $releasever - $basearch
failovermethod=priority
baseurl=http://192.168.0.100/yum/base/$releasever/$basearch
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
enabled=1
gpgcheck=0
[updates-local]
name=Fedora $releasever - $basearch - Updates
failovermethod=priority
baseurl=http://192.168.0.100/yum/updates/$releasever/$basearch/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f$releasever&arch=$basearch
enabled=1
gpgcheck=0
전체 /etc/yum.conf 예시는 원문과 동일하게 유지할 수 있습니다. gpgcheck=0은 편리하지만 보안상 위험이 있습니다. 운영 환경에서는 GPG 서명 확인을 활성화하고 적절한 공개키를 설치하세요.
5 운영 중 고려사항 및 보안
- GPG 서명: gpgcheck=0 대신 미러 서버에 Fedora 공개 키를 배포하고 gpgcheck=1로 설정하세요. 그렇지 않으면 패키지 변조에 취약합니다.
- 권한 및 SELinux: Apache가 파일을 읽을 수 있도록 파일 권한과 SELinux 컨텍스트(httpd_sys_content_t 등)를 확인하세요.
- 디스크 공간: 전체 저장소를 받을 경우 용량을 감시하세요. 오래된 패키지 정리 정책을 정하면 좋습니다.
- 네트워크: 클라이언트가 HTTP로 접근 가능한지(방화벽/라우팅) 확인하세요.
- 로그: /var/log/httpd 및 /var/log/yum.log를 모니터링해 문제를 조기에 발견하세요.
문제 해결(증상별 체크리스트)
증상: 클라이언트에서 패키지를 찾을 수 없음
- 서버에서 baseurl로 접근 가능한가? 클라이언트에서 curl/httping으로 확인.
- Apache가 실행 중인가?
- /var/www/html/yum 디렉터리에 repodata가 있는가?
- 파일 권한 또는 SELinux로 인해 Apache에서 읽을 수 없는가?
증상: createrepo 실행 후 repodata가 생성되지 않음
- createrepo가 설치되었는가?
- 디스크 용량이 충분한가?
- 오류 로그(createrepo 출력)를 확인하세요.
증상: rsync 실패 또는 느림
- 선택한 미러가 rsync를 지원하는가?
- 네트워크 대역폭 또는 미러 서버 부하 문제인지 확인하세요.
대안 및 확장 방안
- reposync 사용: yum-utils 패키지의 reposync로 특정 리포지토리만 동기화하는 방법이 있습니다(다만 Fedora 8 환경에서는 yum-utils 패키지 확인).
- HTTP 대신 FTP나 rsync로 내부 배포: 내부 정책에 따라 다른 프로토콜 선택 가능.
- 최신 배포판으로 이관: Fedora 8은 오래된 릴리스이므로 장기적으로는 지원되는 버전으로 전환 권장.
운영자와 클라이언트별 체크리스트
운영자(미러 서버) 체크리스트:
- Apache 설치 및 방화벽/SELinux 설정 완료
- /var/www/html/yum 구조 생성 및 패키지 복사/rsync 완료
- createrepo 실행하여 repodata 생성
- cron으로 업데이트 자동화
- 로컬 백업 및 모니터링 설정
클라이언트 체크리스트:
- /etc/yum.conf 또는 /etc/yum.repos.d/*.repo에 baseurl이 올바른지 확인
- HTTP 접근(포트 80)이 가능한지 확인
- yum clean all 후 yum update로 테스트
작은 방법론(미러를 만드는 기본 흐름)
- 디렉터리 구조 설계(/base, /updates 등)
- 패키지 수집(DVD 복사 또는 rsync)
- createrepo로 메타데이터 생성
- HTTP로 공개(Apache 설정)
- 클라이언트에 baseurl 등록
- cron으로 업데이트 자동화 및 모니터링
마이그레이션 및 호환성 메모
- 이 문서는 Fedora 8(전통적 yum 사용)을 대상으로 합니다. 최신 Fedora 계열은 dnf를 사용하며 저장소 레이아웃과 도구가 약간 다를 수 있습니다.
- x86_64 혹은 다른 아키텍처를 지원하려면 디렉터리 이름($basearch)에 맞춰 추가 디렉터리를 생성하세요.
요약
- 로컬 yum 미러를 통해 설치 속도를 개선하고 인터넷 대역폭을 절약할 수 있습니다.
- Apache, createrepo, rsync를 조합해 저장소를 구성하고 cron으로 자동 동기화를 권장합니다.
- 보안상 GPG 서명 확인을 활성화하고 SELinux/파일 권한을 확인하세요.
추가 링크:
- Fedora: http://fedoraproject.org
참고: 이 문서는 예시이며 환경에 따라 경로, 방화벽, SELinux 설정 등 추가 조치가 필요할 수 있습니다.