명령어/Linux

[RHEL] sqliterepo_c 저장소에 sqlite DB 생성

jykim23 2026. 8. 16. 16:35
반응형

부제: XML repodata에서 sqlite DB를 만들어 구형 yum 클라이언트 지원하기

sqliterepo_c /srv/repo             # repodata의 XML로부터 sqlite DB 생성
sqliterepo_c -f /srv/repo          # 기존 DB 덮어쓰기
sqliterepo_c --xz /srv/repo        # xz 압축으로 DB 저장
Usage:
  sqliterepo_c [OPTION?] <repo_directory>
Generate sqlite DBs from XML repodata.
  -f, --force        Overwrite existing DBs.
  --keep-old         Do not remove old DBs. (use with --force)
  --xz               Use xz for repodata compression.
  --checksum=<type>  checksum type in repomd.xml for sqlite DBs.

sqliterepo_c는 createrepo_c에 포함된 도구로, 저장소의 XML 메타데이터(primary/filelists/other)를 sqlite 데이터베이스로 변환해 repomd.xml에 등록한다. dnf는 XML만으로도 동작하지만 예전 yum 클라이언트는 sqlite DB를 기대하므로, 구형 시스템과 호환이 필요할 때 만들어 준다. 데비안 계열에는 없는, RHEL 저장소 포맷 전용 도구다.

repo_directory(repodata를 품은 상위 폴더)를 인자로 받아 그 안에 DB를 만든다. 이미 DB가 있으면 -f로 덮어써야 하고, NFS에서 생성이 말썽이면 --local-sqlite로 로컬에서 만들어 옮기는 옵션이 있다.

이렇게도 쓴다

기존 sqlite DB를 강제로 다시 만든다.

sqliterepo_c -f /srv/repo

 

xz 압축으로 DB 크기를 줄여 배포 대역을 아낀다.

sqliterepo_c --xz /srv/repo

 

이전 DB를 지우지 않고 새 것과 함께 남긴다(롤백 대비 조합).

sqliterepo_c -f --keep-old /srv/repo

 

repomd.xml에 기록할 체크섬 타입을 지정한다.

sqliterepo_c --checksum=sha256 /srv/repo

 

NFS 마운트에서 생성이 실패할 때 로컬 임시 폴더에서 만든다.

sqliterepo_c --local-sqlite /srv/repo

 

createrepo_c로 XML을 만든 뒤 sqlite DB까지 이어 붙인다(도구 조합).

createrepo_c /srv/repo && sqliterepo_c -f /srv/repo
반응형