repo 관리하기

repo 관리하기

설정파일

repo 설정 /etc/yum.repo.d/
아래 .repo 확장자를 가진 파일들에 repository에 대한 정보가 들어 있습니다.

[baseos]
name=Navix $releasever - baseos
baseurl=https://dlnavix.navercorp.com/$releasever/$basearch/BaseOS/os/
gpgcheck=1
enabled=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-navixofficial

repo list 보기

$ dnf repolist
repo id                                    repo name
appstream                                  Navix 9 - appstream
baseos                                     Navix 9 - baseos
codeready                                  Navix 9 - codeready
highavailability                           Navix 9 - highavailability
resilientstorage                           Navix 9 - resilientstorage
updates                                    Navix 9 - updates

repo 활성/비활성

각 repo. 정보의 옵션중 enabled 항목을 수정하면 됩니다.

...
enabled=0
...

나만의 repo 만들기

createrepo 명령어를 사용하면 yum, dnf 에서 사용하는 repository 구조로 만들어줍니다.

$ ls
yasm-1.3.0-7.el9.x86_64.rpm            yasm-debugsource-1.3.0-7.el9.x86_64.rpm
yasm-debuginfo-1.3.0-7.el9.x86_64.rpm  yasm-devel-1.3.0-7.el9.x86_64.rpm
$ createrepo .
Directory walk started
Directory walk done - 4 packages
Temporary output repo path: ./.repodata/
Preparing sqlite DBs
Pool started (with 5 workers)
Pool finished

명령어 사용방법은 단순한데 createrepo path 형태로 실항하기만 하면 되며

dnf 가 사용하는 repomd.xml 등 rpm 패키지 관련 정보를 추출해서 repodata 디렉토리를 만들고 이곳에 파일들을 생성해줍니다.

$ tree
.
├── repodata
│   ├── 364b7b9fee75633b783a775c7135f96ef018f15354bf93af5a2240a72b4fa0a3-other.xml.gz
│   ├── 85032d767c69e9adf28d1c1498dd1f252be2da57433c803c361a0d5bb258965f-filelists.xml.gz
│   ├── 871015ad456a62144363574916cc4193f70c8d6a83a3f36f5ea9c0a4b0371ed0-filelists.sqlite.bz2
│   ├── b38f0805db698d1e7f8fca5fae1e0a63fe44b23d3f62bd42b2e0a18997d56e65-primary.sqlite.bz2
│   ├── cebd01ec995b9a34900bd7129cd7bff33c90d70c02843b4d30ea62bf8d8ca032-primary.xml.gz
│   ├── e18318ef3a6e2c83d7a0ad7f665f5b161371f9e5625a6b66122bcb21cf3fb72c-other.sqlite.bz2
│   └── repomd.xml
├── yasm-1.3.0-7.el9.x86_64.rpm
├── yasm-debuginfo-1.3.0-7.el9.x86_64.rpm
├── yasm-debugsource-1.3.0-7.el9.x86_64.rpm
└── yasm-devel-1.3.0-7.el9.x86_64.rpm
 
1 directory, 11 files

dnf 의 동작설명 아래와 같이 실행했을때

$ dnf update myPackage

dnf 는 repository 정보가 담긴 파일 내용에 있는 URL 을 따라가게 됩니다.
기본값으로 URL + repodata/repomd.xml 파일을 요청하며 파일이 없을 경우 실패합니다.
repomd.xml 의 내용은 repodata 디렉토리 아래 파일들의 대한 정보가 담겨 있습니다.
패키지의 모든 파일을 가져오지 않고, 서버 repo 에 있는 패키지들의 대한 모든 메타 정보들을 가져올 수 있습니다.

repomd.xml
<?xml version="1.0" encoding="UTF-8"?>
<repomd xmlns="http://linux.duke.edu/metadata/repo" xmlns:rpm="http://linux.duke.edu/metadata/rpm">
  <revision>1732794957</revision>
  <data type="primary">
    <checksum type="sha256">c12e233614ca6e42b7aa70053d4fcca03bb6e391ab17d7b18d38af9c755067e7</checksum>
    <open-checksum type="sha256">56c8d93e3eb1f6780cf7cf18be59de6af52065bc31f5556fab86ec767aed344e</open-checksum>
    <location href="repodata/c12e233614ca6e42b7aa70053d4fcca03bb6e391ab17d7b18d38af9c755067e7-primary.xml.gz"/>
    <timestamp>1732794957</timestamp>
    <size>1480207</size>
    <open-size>11423358</open-size>
  </data>
  <data type="filelists">
    <checksum type="sha256">d4a3b03306d87edf3f41b6623a2e9a89a5d99c027e31d5b9f367ae8c0bb539c5</checksum>
    <open-checksum type="sha256">57a3bbd1933feab7e00a7abfe38fea3e0fcdd0411a417c2db6f0b905efa4be12</open-checksum>
    <location href="repodata/d4a3b03306d87edf3f41b6623a2e9a89a5d99c027e31d5b9f367ae8c0bb539c5-filelists.xml.gz"/>
    <timestamp>1732794957</timestamp>
    <size>643546</size>
    <open-size>6334072</open-size>
  </data>
  <data type="other">
    <checksum type="sha256">7ac6071a5a750843829a7823c0a6e40c59621348007aac8cf4d2a0cf7890d095</checksum>
    <open-checksum type="sha256">1761ea9f8cf70bf8910b7a63e7689d87f784a9f9d693f3656112351d208f0cc2</open-checksum>
    <location href="repodata/7ac6071a5a750843829a7823c0a6e40c59621348007aac8cf4d2a0cf7890d095-other.xml.gz"/>
    <timestamp>1732794957</timestamp>
    <size>601982</size>
    <open-size>5404895</open-size>
  </data>
  <data type="group">
    <checksum type="sha256">0685d9cf8d81db20bd94c36927e7b5146fd69e67eef42e37b2586a48886f3d39</checksum>
    <location href="repodata/0685d9cf8d81db20bd94c36927e7b5146fd69e67eef42e37b2586a48886f3d39-comps-BaseOS.x86_64.xml"/>
    <timestamp>1732794954</timestamp>
    <size>290051</size>
  </data>
  <data type="group_gz">
    <checksum type="sha256">1b50832ba7cf4fc57586d402cb86ca9adf615021729891c79beb8e03d7bf417c</checksum>
    <open-checksum type="sha256">0685d9cf8d81db20bd94c36927e7b5146fd69e67eef42e37b2586a48886f3d39</open-checksum>
    <location href="repodata/1b50832ba7cf4fc57586d402cb86ca9adf615021729891c79beb8e03d7bf417c-comps-BaseOS.x86_64.xml.gz"/>
    <timestamp>1732794957</timestamp>
    <size>72168</size>
    <open-size>290051</open-size>
  </data>
</repomd>