명령어/Linux

[RHEL] mergerepo_c 여러 저장소 메타데이터 병합

jykim23 2026. 8. 5. 23:39
반응형

부제: 두 개 이상의 yum/dnf 저장소를 하나의 새 저장소로 합치기

mergerepo_c --repo=/path/a --repo=/path/b -o /path/merged
mergerepo_c -r url1 -r url2 --method=nvr -o out   # 같은 이름은 최신 NVR 선택
mergerepo_c -r a -r b --all -o out               # 버전 다르면 전부 포함
Usage:
  mergerepo_c [OPTION?] --repo=url --repo=url
Take one or more repositories and merge their metadata into a new repo
  -r, --repo=REPOS       Repo url
  -o, --outputdir=OUTPUTDIR   Location to create the repository
  --method=MERGE_METHOD  repo (default), ts, nvr
  --all                  Include all packages ... if version or release differs

mergerepo_c는 createrepo_c 패키지에 들어 있는 도구로, 여러 저장소의 repodata를 하나로 묶어 새 저장소 메타데이터를 만든다. 사내 미러 여러 개를 통합하거나, 베이스 저장소에 커스텀 빌드를 얹어 단일 저장소로 배포할 때 쓴다. 데비안 계열에는 정확한 대응이 없고, 여러 Packages 파일을 합치는 작업을 이 한 명령이 대신한다.

원본 저장소는 건드리지 않고 -o로 지정한 새 위치에 결과를 만든다. 같은 name·arch가 겹칠 때 어느 패키지를 남길지는 --method(repo/ts/nvr)로 정한다.

이렇게도 쓴다

두 로컬 저장소를 기본 방식으로 합친다.

mergerepo_c --repo=/srv/repo-base --repo=/srv/repo-extra -o /srv/repo-all

 

같은 패키지가 겹치면 버전(NVR)이 높은 쪽을 남긴다.

mergerepo_c -r /srv/a -r /srv/b --method=nvr -o /srv/merged

 

버전이 다른 동일 패키지를 모두 살려 여러 버전을 공존시킨다.

mergerepo_c -r /srv/a -r /srv/b --all -o /srv/merged

 

특정 아키텍처만 골라 병합한다.

mergerepo_c -r /srv/a -r /srv/b -a x86_64 -o /srv/merged

 

병합 후 sqliterepo_c로 sqlite DB까지 붙여 구형 클라이언트도 지원한다(도구 조합).

mergerepo_c -r /srv/a -r /srv/b -o /srv/merged && sqliterepo_c /srv/merged

 

압축 형식을 지정하고 그룹(comps) 메타데이터는 빼서 가볍게 만든다.

mergerepo_c -r /srv/a -r /srv/b --compress-type=zstd --nogroups -o /srv/merged
반응형