Skip to Content
Infra & DevOpsCentOS Yum 환경에서 오프라인 설치용 RPM 준비하기
☁️ Infra & DevOps2018년 1월 24일

CentOS Yum 환경에서 오프라인 설치용 RPM 준비하기

#rpm#yum#centos#offline#infra#flamingo

인터넷에 연결할 수 없는 서버에 설치할 RPM을 다른 장비에서 준비할 때 쓰던 명령입니다. 당시 CentOS의 Yum·yum-utils 기준 기록이며, 현재 DNF 환경의 명령과는 구분해야 합니다.

준비 장비의 조건

대상 서버와 OS 버전·아키텍처·저장소 구성이 다르면 같은 이름의 패키지를 받아도 설치되지 않을 수 있습니다. 다운로드할 장비의 설치 상태도 의존성 계산에 영향을 줍니다.

이미 필요한 라이브러리가 있는 준비 장비에서는 설치가 끝나더라도, 그 라이브러리가 없는 대상 서버에서는 실패할 수 있습니다. 파일을 받았다는 것과 오프라인 설치에 필요한 구성을 모두 준비했다는 것은 따로 확인해야 합니다.

Yum의 다운로드 전용 옵션

원래 메모에는 downloadonly 플러그인과 yum-utils, 저장소 메타데이터를 만드는 createrepo를 준비하는 과정이 있었습니다. 패키지 이름과 플러그인 제공 방식은 사용 중인 CentOS 버전에 맞춰 확인해야 합니다.

플러그인이 준비된 환경에서 패키지를 설치하지 않고 받는 명령 예시는 다음과 같습니다.

bash
mkdir -p ./rpms yum install vim --downloadonly --downloaddir="$(pwd)/rpms"

이 방법은 현재 시스템에 필요한 설치 작업을 계산합니다. 이미 설치된 의존성까지 모두 다시 받는 명령으로 해석하면 안 됩니다.

yumdownloader 사용

yum-utils의 yumdownloader도 패키지와 필요한 의존성을 받는 데 사용했습니다. 다운로드 위치는 이 도구의 --destdir로 지정할 수 있습니다.

bash
yumdownloader --resolve --destdir=./rpms createrepo

--resolve는 의존성을 계산해 필요한 패키지를 추가합니다. 준비 장비의 설치 상태와 무관하게 모든 의존성 RPM을 빠짐없이 확보한다는 보장은 아닙니다. 대상과 같은 초기 상태의 환경에서 준비하고, 반입 전 설치를 검증해야 합니다.

DNF download 플러그인에는 설치된 의존성도 받기 위한 --resolve --alldeps 조합이 있습니다. 오래된 yumdownloader에서도 같은 옵션을 지원하는지는 따로 확인해야 합니다.

반입 전 설치 검증

받은 RPM의 버전과 아키텍처를 확인하고, 대상과 같은 환경에서 외부 저장소 연결 없이 의존성을 해결할 수 있는지 확인합니다. 로컬 Yum 저장소로 제공하려면 RPM 파일 외에 저장소 메타데이터도 준비해야 합니다.

저장소를 구성할 때도 패키지 서명을 확인할 수 있게 배포판의 키와 설정을 유지하는 편이 좋습니다. 의존성 오류나 서명 확인 실패를 피하려고 --nodeps나 서명 검사 해제를 기본 절차로 넣으면 실제 누락을 놓칠 수 있습니다.

참고 자료

Last updated on