LabHub

RHEL 계열 관리 · 로컬 저장소 구축 · 실습

createrepo_c 로 저장소 만들기

LabHub 에서 이어서 보기

목표

rpm 을 모아 createrepo_c 로 저장소를 만들고, .repo 파일로 등록해 그 저장소만으로 설치합니다.

왜 중요한가

폐쇄망 최다 신고인 "저장소에 넣었는데 안 보인다" 의 원인 1위가 createrepo_c --update 누락입니다. 파일은 눈에 보이는데 dnf 는 모릅니다. 두 번째가 클라이언트 캐시입니다. 이 둘의 순서를 몸에 익히면 그 신고의 90% 가 몇 분 안에 끝납니다.

그리고 repomd.xml 의 구조를 알면 무엇이 저장소에 있고 없는지 판단할 수 있습니다 — 예를 들어 updateinfo 가 없으면 dnf update --security 가 조용히 아무것도 하지 않습니다.

단계

1. /root/repo/pool 디렉터리를 만들고, tree 패키지와 그 의존성을 설치하지 않고 그 디렉터리로 내려받으세요. .rpm 이 1개 이상 있어야 합니다.
2. createrepo_c/root/repo/pool 에 메타데이터를 만드세요. repodata/repomd.xml 이 생겨야 합니다.
3. /etc/yum.repos.d/labhub-local.repo 를 만드세요. 저장소 ID 는 labhub-local, name 에는 스냅샷 날짜(snapshot 문자열과 YYYY-MM-DD)가 들어가야 하고, baseurl=file:///root/repo/pool, enabled=1, gpgcheck=0, metadata_expire=-1 을 포함해야 합니다.
4. 캐시를 갱신하고 저장소 목록을 /root/repo/repolist.txt 로 저장하세요. labhub-local 이 보여야 합니다.
5. 다른 저장소를 모두 끄고 labhub-local 만 켠 상태tree 를 재설치하고, 그 명령의 출력을 /root/repo/install.txt 로 저장하세요.
6. nano 패키지를 pool 에 추가로 내려받은 뒤 메타데이터를 증분 갱신하고, 갱신 후 labhub-local 저장소의 패키지 수를 숫자 한 줄로 /root/repo/pkgcount.txt 에 적으세요.
7. repomd.xml 에서 메타데이터 종류 이름만 뽑아 한 줄에 하나씩 /root/repo/mdtypes.txt 에 적으세요. primary, filelists, other 가 모두 있어야 합니다.
8. /root/repo/report.txt 를 다음 4줄로 만드세요.
REPO_ID=labhub-local / PACKAGES=<6번 값> / MDTYPES=<7번 파일의 줄 수> / HAS_UPDATEINFO=<yes|no>

참고

단계 8개

  1. rpm 모으기
  2. 메타데이터 생성
  3. 저장소 정의 작성
  4. 캐시 갱신과 확인
  5. 그 저장소만으로 설치
  6. 패키지 추가 후 갱신
  7. repomd.xml 구조 확인
  8. 저장소 보고서