Saat menyiapkan repository lokal untuk lab CloudStack, saya perlu mengumpulkan package RPM di server staging agar instalasi ke server target bisa dilakukan tanpa akses internet. Setelah package terkumpul, langkah berikutnya adalah membuat metadata menggunakan createrepo_c.
Fungsi createrepo_c
createrepo_c adalah tool untuk membuat metadata repository dari kumpulan file RPM. Metadata ini menjadi indeks yang digunakan DNF untuk mengetahui package yang tersedia, versi, lokasi file, dan dependensi.
Gampangnya sih, RPM adalah packagenya, sedangkan metadata adalah daftar informasi package tersebut. Hasil prosesnya disimpan dalam direktori repodata. Debian Manpages
Untuk kebutuhan offline, package beserta dependensinya harus disiapkan terlebih dahulu sebelum metadata dibuat.
Contoh penggunaan di Rocky Linux 9
Jalankan perintah berikut sebagai root. Contoh ini menggunakan direktori /srv/repo-lokal yang sudah berisi package RPM.
1. Install createrepo_c
Lakukan saat repository sumber masih dapat diakses:
dnf install -y createrepo_c
Paket ini menyediakan perintah untuk membuat metadata repository. Documentation
2. Buat metadata repository
Periksa file RPM yang tersedia:
ls /srv/repo-lokal/*.rpm
Kemudian jalankan:
createrepo_c /srv/repo-lokal
Perintah tersebut membaca informasi paket dan membuat direktori repodata. Untuk memeriksa hasilnya:
ls /srv/repo-lokal/repodata/
Salah satu file yang akan tersedia adalah repomd.xml, yang menjadi acuan metadata repository. Debian Manpages
Agar bisa digunakan oleh DNF, repository tersebut juga perlu didaftarkan melalui file konfigurasi .repo.
Jika ada package baru atau perubahan
Setelah menambah, mengganti, atau menghapus RPM, perbarui metadata:
createrepo_c --update /srv/repo-lokal
Opsi --update memanfaatkan metadata lama untuk paket yang tidak berubah, sehingga prosesnya dapat lebih cepat. Informasi paket baru dan perubahan isi repository akan masuk ke metadata terbaru. Debian Manpages
Pada server, refresh cache DNF. Misalnya repository tersebut sudah terdaftar dengan ID repo-lokal:
dnf --disablerepo='*' --enablerepo=repo-lokal --refresh makecache
createrepo_c --update memperbarui indeks di sisi repository, sedangkan dnf makecache memperbarui cache metadata di sisi pengguna. Instalasi atau upgrade paket tetap dilakukan melalui perintah DNF yang sesuai. DNF @DNF_VERSION@-1 documentation

