Rpm adalah singkatan dari RPM Package Manager :ini adalah manajer paket tingkat rendah yang digunakan di semua keluarga distribusi Red Hat, seperti Fedora dan Red Hat Enterprise Linux.
Paket rpm adalah paket yang berisi perangkat lunak yang dimaksudkan untuk diinstal menggunakan sistem manajemen paket ini, dan paket rpm biasanya didistribusikan melalui repositori perangkat lunak. Dalam tutorial ini kita mempelajari cara membuat repositori rpm kustom dan cara mengonfigurasi distribusi kita untuk menggunakannya sebagai sumber perangkat lunak.
Dalam tutorial ini Anda akan belajar :
- Cara membuat repositori rpm
- Cara menggunakan repositori sebagai sumber perangkat lunak
Persyaratan dan konvensi perangkat lunak yang digunakan
Kategori | Persyaratan, Konvensi, atau Versi Perangkat Lunak yang Digunakan |
---|---|
Sistem | Distribusi apa pun dari keluarga Red Hat |
Perangkat Lunak | dnf, buat repo |
Lainnya | Hak istimewa administratif untuk mengonfigurasi repositori |
Konvensi | # – mengharuskan perintah-linux yang diberikan untuk dieksekusi dengan hak akses root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo command$ – mengharuskan perintah-linux yang diberikan untuk dieksekusi sebagai pengguna biasa yang tidak memiliki hak istimewa |
Instalasi perangkat lunak
Demi tutorial ini, kami akan membuat repositori khusus kami di mesin lokal dengan IP 192.168.0.39
yang akan digunakan sebagai server http. Pada mesin ini, hal pertama yang perlu kita lakukan adalah menginstal createrepo
kemasan. Distribusi yang diinstal pada mesin jarak jauh tidak perlu menjadi distribusi berbasis rpm itu sendiri, selama paket tersebut tersedia. Dalam kasus kita, misalnya, sistem yang terinstal di server adalah Debian, jadi untuk menginstal paket kita perlu menjalankan perintah berikut:
$ sudo apt-get update && sudo apt-get install createrepo
Seperti yang kami katakan sebelumnya, dalam contoh spesifik kami, kami ingin membuat perangkat lunak yang dihosting di repositori khusus kami dapat diakses melalui protokol HTTP, oleh karena itu kami perlu menginstal server HTTP; dalam hal ini kita akan bekerja dengan Apache. Menginstalnya di Debian, tinggal menjalankannya:
$ sudo apt-get install apache2
Setelah paket diinstal, kita dapat melanjutkan dan membuat repositori rpm kita dalam beberapa langkah yang sangat sederhana.
Membuat repositori
DocumentRoot
Apache VirtualHost default dibuat ketika Apache diinstal pada Debian adalah /var/www/html
. Pada titik ini kita dapat memilih untuk membuat VirtualHost untuk repositori kita, atau cukup membuat direktori repositori sebagai bagian
dari direktori default. Demi kesederhanaan, dalam tutorial ini kita akan mengeksplorasi opsi terakhir:
$ sudo mkdir /var/www/html/repo
repo
direktori yang kami buat dengan perintah di atas, di dalam VirtualHost default DocumentRoot , akan meng-host paket kami, dan akan menjadi basis repositori kami. Untuk menyusunnya dengan lebih baik, sekarang kita ingin membuat beberapa subdirektori
dinamai setelah distribusi, versinya, dan arsitektur paket yang ingin kita sediakan. Misalkan, misalnya, kita ingin menggunakan repositori di Fedora 33 x68_64
, kita harus menjalankan perintah berikut:
$ sudo mkdir -p /var/www/html/repo/fedora/releases/33/x86_64
Langkah selanjutnya adalah mengisi repositori. Yang harus kita lakukan adalah menempatkan paket yang ingin kita sediakan, di dalam direktori repositori yang sesuai. Dalam hal ini, sebagai contoh, saya akan mengisi repositori dengan paket yang diperoleh dengan mengkompilasi editor VSCode dari sumber. Paket tersebut bernama code-1.56.0-1617183449.el8.x86_64.rpm
. Setelah disalin, struktur file kita akan terlihat seperti ini:
repo └── fedora └── releases └── 33 └── x86_64 └── code-1.56.0-1617183449.el8.x86_64.rpm
Dengan repositori kami terisi, yang ingin kami lakukan hanyalah menjalankan createrepo
perintah di dalam direktori yang berisi paket-paket. Dalam hal ini kita akan menjalankan:
$ sudo createrepo /var/www/html/repo/fedora/releases/33/x86_64
Perintah akan membuat metadata repositori di dalam direktori bernama repodata
, berdasarkan paket yang terdapat dalam direktori tujuan dan harus diluncurkan kembali setiap kali repositori diperbarui dengan paket baru atau paket lama dihapus. Setelah perintah diluncurkan, struktur direktori kita akan terlihat seperti:
repo └── fedora └── releases └── 33 └── x86_64 ├── code-1.56.0-1617183449.el8.x86_64.rpm └── repodata ├── 22ab1d1d123bb7d7cde556bf8a8ac4daf9cdb75572f40ebdd2f399908cb7f6b9-other.xml.gz ├── 26ed9b63868b2e0263dfa817e21921c4e7542c1be9f6b7875381bba6bd78d1c6-primary.sqlite.bz2 ├── 50fc300a761812761cf9a8413a619da23cf336d49999753568ce19a97c025d44-other.sqlite.bz2 ├── a523f54b5fcd0720c182969f991f51e125728a361f31237725dc9418d5e126ea-primary.xml.gz ├── af2fa9ea5deaffca5ffc9f3e524155defa8cfa5656962845a45c8b0e984f3e19-filelists.sqlite.bz2 ├── f95849cf860f1184b97d30000ea1f9f1c35edd6d625dcd387453187510dd4a18-filelists.xml.gz └── repomd.xml
Repositori kami berhasil dibuat. Sekarang kita harus mengonfigurasi distribusi kita untuk menggunakannya sebagai sumber perangkat lunak.
Menambahkan repositori sebagai sumber perangkat lunak
Mari kita beralih ke distribusi berbasis rpm dan melihat cara mengonfigurasinya untuk menggunakan repositori khusus kita sebagai sumber perangkat lunak. File konfigurasi repositori ditemukan di bawah /etc/yum.repos.d
direktori, dan harus memiliki.repo
perpanjangan. Dengan melihat ke dalam direktori kita dapat melihat yang sudah ada:
$ ls /etc/yum/repos.d fedora-cisco-openh264.repo fedora-updates-testing-modular.repo fedora-modular.repo fedora-updates-testing.repo fedora.repo rpmfusion-free.repo fedora-updates-modular.repo rpmfusion-free-updates.repo fedora-updates.repo rpmfusion-free-updates-testing.repo
Sekarang, mari kita buat konfigurasi repositori kustom kita. Di dalam file, sebagai kumpulan informasi minimum, kami harus menyediakan:
- Id repositori
- Nama repositori
- Sebuah basis url repositori
- Status penyimpanan
- Apakah akan memeriksa tanda tangan gpg paket atau tidak
Kami akan menyimpan informasi tersebut dalam file bernama ownrepo.repo
, ini dia isinya:
[ownrepo] name=Own repository baseurl=http://192.168.0.39/repo/fedora/releases/$releasever/$basearch enabled=1 gpgcheck=0
Definisi dilaporkan di dalam tanda kurung ([ownrepo]
) adalah ID repositori, dan harus unik di semua definisi repositori. Dengan name
key kami memberikan nama yang dapat dibaca manusia untuk repositori sebagai string. Ini opsional; jika nama tidak diberikan, ID repositori akan digunakan juga sebagai nama.
Dengan baseurl
key kami menentukan daftar URL untuk repositori. URL harus dipisahkan dengan spasi atau koma. Dalam contoh kami, kami hanya menyediakan satu URL, tetapi Anda dapat melihat bahwa kami menggunakan dua variabel di dalamnya:
- $releasever
- $basearch
Perluasan yang pertama, $releasever
, akan menghasilkan versi rilis sistem operasi, dalam hal ini 33
, karena kami menginstal repositori kami di sistem Fedora 33. Variabel kedua, $basearch
, akan diperluas dalam string yang mewakili arsitektur dasar sistem, yang dalam kasus kami adalah x86_64
.
enabled
kunci memerlukan boolean nilai yang menentukan apakah repositori harus dianggap aktif atau tidak. Kunci terakhir yang kami gunakan adalah gpgcheck
:itu juga memerlukan nilai boolean, dan digunakan untuk menentukan apakah pemeriksaan tanda tangan gpg harus dilakukan pada paket yang diinstal dari repositori. Dalam contoh kami, kami hanya menonaktifkan centang, karena repositori dimaksudkan untuk penggunaan pribadi saja.
Sekarang setelah repositori kita dikonfigurasi, kita dapat mencoba menginstal code
paket darinya, cukup dengan menjalankan:
$ sudo dnf install code Own repository 451 kB/s | 13 kB 00:00 Dependencies resolved. ================================================================================================================== Package Architecture Version Repository Size ================================================================================================================== Installing: code x86_64 1.56.0-1617183449.el8 ownrepo 100 M Transaction Summary ================================================================================================================== Install 1 Package Total download size: 100 M Installed size: 294 M Is this ok [y/N]:
Setelah kami memberikan jawaban afirmatif untuk permintaan dan mengonfirmasinya, paket akan diinstal pada sistem kami.
Kesimpulan
Dalam artikel ini kita mempelajari betapa mudahnya membuat repositori rpm kustom dengan createrepo
utilitas, dan kami melihat cara membuat file konfigurasi dnf pada distribusi kami untuk menggunakannya sebagai sumber perangkat lunak. Kami melihat subset minimal dari
kunci yang dapat digunakan dalam konfigurasi repositori; untuk daftar yang lebih detail, Anda dapat melihat dokumentasi resmi dnf.