xbps-rindex

xbps-rindex adalah utilitas XBPS untuk mengelola repositori paket biner lokal. Alat ini mengubah direktori biasa menjadi repositori yang dapat dikenali xbps-install dengan membuat dan memelihara file repodata.

Fungsi Utama

FungsiPenjelasan
Tambah paket ke repositoriDaftarkan file .xbps ke dalam indeks repositori lokal
Bersihkan indeksHapus entri usang dari repodata tanpa menghapus file .xbps-nya
Hapus paket usangHapus file .xbps yang tidak terdaftar di indeks
Tandatangani repositoriTambahkan metadata tanda tangan RSA untuk distribusi remote
Tandatangani paketTandatangani file .xbps secara individual

Mode Operasi

FlagFungsi
-a, --addTambahkan paket ke indeks. Paket hanya ditambahkan jika versinya lebih baru; gunakan -f untuk paksa menimpa
-c, --cleanBersihkan entri usang dari repodata (tidak menghapus file .xbps)
-r, --remove-obsoletesHapus file .xbps yang sudah tidak terdaftar di indeks
--signInisialisasi repositori dengan metadata tanda tangan RSA
--sign-pkgTandatangani file .xbps secara individual

Opsi

FlagKeterangan
-f, --forcePaksa timpa entri yang sudah ada saat menambahkan paket
-C, --hashcheckSaat -c, verifikasi hash file (bukan hanya keberadaan file)
--compression <type>Format kompresi repodata (default: zstd)
--privkey <key.pem>Path kunci RSA privat untuk signing
--signedby <string>Identitas penanda tangan repositori

Contoh Penggunaan

Buat Repositori Lokal Sederhana

mkdir ~/myrepo
cp /path/to/myapp-1.0_1.x86_64.xbps ~/myrepo/
xbps-rindex -a ~/myrepo/*.xbps

Install dari repositori lokal:

sudo xbps-install --repository=~/myrepo myapp

Downgrade Paket via Cache

# Daftarkan paket versi lama dari cache ke indeks
sudo xbps-rindex -a /var/cache/xbps/pkg-1.0_1.x86_64.xbps

# Downgrade dengan force karena versi lebih rendah
sudo xbps-install -R /var/cache/xbps/ -f pkg-1.0_1

Buat Repositori Bertanda Tangan

Generate kunci RSA:

# Dengan ssh-keygen
ssh-keygen -t rsa -b 4096 -m PEM -f private.pem

# Atau dengan openssl
openssl genrsa -out private.pem 4096

Inisialisasi tanda tangan repositori:

xbps-rindex --privkey private.pem --sign --signedby "Nama <email@example.com>" /path/to/repo

Tandatangani paket di dalamnya:

xbps-rindex --privkey private.pem --sign-pkg /path/to/repo/*.xbps

Paket yang ditambahkan di masa depan harus ditandatangani ulang secara manual — tidak otomatis.

Bersihkan Repositori

# Bersihkan entri usang dari indeks
xbps-rindex -c ~/myrepo

# Hapus file .xbps yang tidak terdaftar di indeks
xbps-rindex -r ~/myrepo

Struktur Direktori Repositori

Setelah xbps-rindex -a dijalankan, direktori repositori akan berisi:

FileDeskripsi
repodataFile indeks utama berisi metadata semua paket (format plist biner)
repodata.oldBackup repodata sebelumnya
*.xbpsFile paket biner
*.xbps.sig2File tanda tangan per paket (jika repositori ditandatangani)

Format file tanda tangan yang digunakan adalah .sig2, bukan .sig. Format .sig sudah deprecated di XBPS versi modern.

Signed vs Unsigned

AspekUnsignedSigned
KeamananTidak ada verifikasi keaslianTerverifikasi secara kriptografis
PenggunaanRepositori lokal, testing, developmentRepositori remote atau produksi
PersyaratanTidak perlu kunciKunci RSA dalam format PEM
Perilaku XBPSPrompt konfirmasi trust key saat pertamaDiverifikasi otomatis setelah key di-trust

Void Linux mengharuskan repositori remote untuk ditandatangani. Repositori lokal tidak wajib ditandatangani.

Hubungan dengan Tools XBPS Lain

CommandPeran
xbps-srcBuild paket dari source menggunakan void-packages
xbps-createBuat file .xbps dari direktori file
xbps-rindexDaftarkan .xbps ke repositori (buat repodata)
xbps-install -R <repo>Install paket dari repositori tertentu
xbps-query -LTampilkan daftar repositori aktif

Catatan Penting

  • xbps-rindex tidak memerlukan root untuk repositori di direktori user. Root diperlukan jika repositori berada di direktori sistem.
  • Setiap kali menambahkan paket ke repositori signed, jalankan ulang --sign-pkg untuk menandatangani paket baru.
  • xbps-rindex -a melakukan pengecekan konsistensi shared library saat paket ditambahkan.
  • Distribusikan file private.pem.pub ke pengguna agar mereka dapat memverifikasi tanda tangan repositori.

Referensi


@T4n-Labs · @Gh0sT4n