AUR adalah kependekan dari Arch User Repository, adalah lumbung atau repositori yang dikelola oleh komunitas pengguna Arch Linux. Ia memuat deskripsi paket yang diberi nama PKGBUILD
, yang mana dengannya Anda dapat mengkompilasi paket dari sumber kode dengan makepkg
kemudian ia (makepkg
) akan menciptakan suatu paket berekstensi .tar.xz
yang dapat dipasang via pacman
, artinya dengan demikian paket yang telah kita pasang menggunakan makepkg
dapat kita lihat informasinya ataupun dapat kita hapus seperti paket-paket yang terdapat dalam official repository.
Tidak seperti kita menggunakan cara manual seperti; make
dan make install
, untuk menghapusnya kita menggunakan cara; make uninstall
akan tetapi tidak semua sumber kode menyediakan make uninstall
, dengan demikian Anda harus menghapusnya secara manual atau membuat kode kebalikannya (reverse code).
AUR telah dibuat untuk mengorganisir dan membagikan atau mempromosikan paket baru dari komunitas; dan untuk membantu mempercepat popularitas paket hingga tercantum di repositori komunitas (community repository).
Banyak paket terbaru yang masuk ke official repository bermula dari AUR, dengan demikian di AUR pengguna dapat berkontribusi menyebarkan paket yang mereka bangun. Nah, dengan berkontribusi demikianlah salah satu wujud memajukan GNU/Linux dengan kaya akan aplikasinya.
Bermula dari proyek KBBI Qt yang saya unggah ke AUR, otomatis dengan demikian saya menjadi salah satu bagian AUR maintainer. Tulisan ini saya postingkan di sini, adalah cara yang saya lakukan ketika men-submit paket ke AUR.
Persyaratan
Untuk bisa men-submit paket ke AUR, ada beberapa syarat mutlak yang harus Anda penuhi yakni:
* Paham cara membuat `PKGBUILD`.
Dasar-dasar penggunannya akan saya berikan di bawah, untuk lebih lengkap Anda bisa melihat panduannya di Arch Wiki.
* Memiliki pengetahuan dasar tentang Bash Script.
* Memasang git
dan openssh
:
sudo pacman -S git openssh
* Membuat <a href="https://situsali.com/tips-dan-trik-sederhana-mengamankan-ssh/">SSH Key</a> dan copy SSH `Pub Key`-nya:
ssh-keygen -t rsa cat ~/.ssh/id_rsa.pubNah, hasil `cat` di atas Anda _copy_-kan di informasi akun AUR Anda. * Buat akun AUR nya di: https://aur.archlinux.org/register/ Isikan minimal yang paling penting adalah: **username** , **password** , **email** , dan **ssh public key** . Selebihnya opsional saja jika Anda ingin mengisinya. * Paham dasar-dasar `git` (minimal bisa `clone`, `push` dan `pull`).
Mambangun Paket dengan PKGBUILD
Sebelum masuk tentang cara mengunggah paket ke AUR, Anda wajib memiliki pengetahuan dasar Bash script dan membangun paket dengan PKGBUILD
. Langsung saja kita mulai praktek, pertama-tama Anda buat berkas bernama PKGBUILD
.
touch PKGBUILD
Kemudian isi skrip seperti berikut:
# Maintainer: alisoftware <admin at situsali dot com> pkgname=kbbi-qt pkgver=1.0 pkgrel=3 pkgdesc="Kamus Besar Bahasa Indonesia Luring." arch=('i686' 'x86_64') url="https://github.com/bgli/kbbi-qt" license=('GPL3') depends=('qt5-base') makedepends=('make' 'qt5-base' 'git') source=("${pkgname}"::"git+https://github.com/bgli/${pkgname}.git") md5sums=('SKIP') build() { cd ${srcdir}/${pkgname} qmake KBBI-Qt.pro make } package() { cd ${srcdir}/ mkdir -p ${pkgdir}/usr/bin/ mkdir -p ${pkgdir}/usr/share/${originname}/ mkdir -p ${pkgdir}/usr/share/applications/ mkdir -p ${pkgdir}/usr/share/pixmaps/ mkdir -p ${pkgdir}/usr/share/doc/${pkgname}/ mkdir -p ${pkgdir}/usr/share/licenses/${pkgname}/ cp -R ${pkgname}/src/data/ ${pkgdir}/usr/share/${originname} cp ${pkgname}/src/kbbi-qt.png ${pkgdir}/usr/share/pixmaps/ install -Dm755 ${pkgname}/${originname} ${pkgdir}/usr/bin/ cp ${pkgname}/LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE cp ${pkgname}/README.md ${pkgdir}/usr/share/doc/${pkgname}/README install -Dm644 -T ${pkgname}/${originname}.desktop ${pkgdir}/usr/share/applications/${pkgname}.desktop }
Kode di atas diambil dari PKGBUILD
KBBI Qt: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=kbbi-qt
Penjelasan Skrip
Pada baris pertama:
# Maintainer: alisoftware <admin at situsali dot com>
Ini wajib Anda tulis untuk menunjukan siapa si maintainer-nya.
Penjelasan Mengenai Variabel
Adapun beberapa variabel di atas berikut akan saya jelaskan:
pkgname
Variabel ini wajib ditulis, karena ini adalah nama dari paket yang ingin Anda buat. Variabel ini harus konsisten dengan_ lowercase alphanumerics_ (suruhnya huruf kecil atau non kapital alfanumerik) dan seluruh karakter dari: @, ., _, +, - (at simbol, titik, koma, plus, setrip/hyphen)
. Juga penamaan tidaklah boleh dimulai dengan setrip (hyphen). Agar konsisten, pkgname
harus sama dengan nama dari sumber kodenya atau tarball dari software tersebut.
Contohnya, jika sumber kode itu bernama foobar-2.5.tar.gz
, maka gunakan pkgname=foobar
. Nah, nama untuk direktori yang nantinya digunakan untuk pemasangan haruslah sama dengan pkgname
. Untuk pemisahan paket harus didefinisikan dengan array, contoh pkgname=('foo' 'bar')
.
pkgver
Variabel ini wajib ditulis, karena variabel ini merupakan penanda versi dari paket. Ia harus ditulis sama persis dengan versi yang dirilis oleh pengembang aplikasi. Variabel ini ditulis dengan huruf, angka, titik dan garis bawah, tidak boleh menggunakan setrip (hyphen (-)). Jika pengembang aplikasi menggunakan tanda hyphen maka Anda harus mengganti dengan garis bawah (underscore (_
) ).
Catatan: Jika upstream menggunakana timestamp dari versinya contoh 30102014
, pastikan ia harus ditulis tahun-bulan-tanggal, contoh. 20141030
(ISO 8601 format).
pkgrel
Variabel ini digunakan sebagai nomor perilisan dari suatu paket. Nilai pada variabel ini pada umumnya menggunakan bilangan positif yang mana dengan demikian dapat membedakan antara urutan builds dari paket yang sama. Jika sumber paket mengalami perbaikan atau juga menambah suatu fitur baru, jika ditambahkan ke PKGBUILD
itu akan mempengaruhi hasil pencarian paket, oleh karenanya ia pkgrel
harus ditambahkan nilai satu.
Nah, jika sumber atau software mengalami perubahan versi, nilai pkgrel
harus di-reset menjadi bernilai satu kembali, Contoh kasus misalnya aplikasi Anda sekarang versi 1.0 kemudian mengalami perbaikan paket maka diset dalam pkgrel
menjadi bernilai dua, dan seterusnya. Lalu jika aplikasi versi berubah katakanlah menjadi 1.2 dan seterusnya, maka pkgrel
harus diset bernilai satu kembali.
pkgdesc
Variable ini adalah untuk mendeskripsikan paket. Deskripsi direkomendasikan ditulis sebanyak 80 karakter atau kurang dari itu lebih baik, yang penting singkat dan padat. Juga usahakan jangan memasukan nama paket dalam deskripsi, terkecuali aplikasi yang berbeda dari nama paketnya. Contoh, Tulis seperti ini lebih baik pkgdesc="Text editor for X11"
daripada Anda menulis pkgdesc="Nedit is a text editor for X11"
. Juga, penting gunakan kata kunci (keywords) yang menarik agar mudah dan muncul lebih dahulu jika dicari.
arch
Variabel ini adalah variabel array yang mana paket hanya boleh dipasang pada arsitektur prosesor apa. Arch official-nya hanya mendukung arsitektur i686
and x86_64
, akan tetapi dalam proyek seperti Arch Linux ARM memberikan dukungan arsitektur lainnya seperti arm for armv5
, armv6h for armv6 hardfloat
, armv7h for armv7 hardfloat
, dan aarch64 for armv8 64bit
.
Jika paket tersebut tidak terpaku pada arsitektur prosesor, seperti paket (shell scripts, fonts, themes, atau extensions, dan lain-lain.) maka Anda dapat gunakan arch=('any')
. Perlu diingat paket yang menggunkan variabel arsitektur apapun (any) pastikan paket tersebut memang benar-benar dapat digunakan pada arsitektur lain. Mungkin font hemat saya tidak apa-apa menggunakan nilai any, untuk yang lain jika Anda ragu gunakan saja variabel arch=('i686' 'x86_64')
.
url Variabel ini adalah sumber kode dari paket Anda. Pastikan isi tautannya benar.
license
Variabel ini untuk mendefinisikan lisensi yang digunakan oleh software tersebut. Paket lisensi memuat banyak lisensi. Lisensi tersebut umumnya berada dalam direktori /usr/share/licenses/common
.
depends
Variabel ini adalah variabel array, yang mana wajib digunakan sebagai penemu dependensi (dependency resolver) dari paket Anda, dependensi harus diinstal lebih dahulu sebelum paket dibangun (build), sebab jika tidak maka paket tidak akan berjalan dengan sebagaimana mestinya. Anda dapat menggunakan pembatasan versi dari dependensi yang Anda gunakan dengan menggunakan tanda pembanding, Contohnya depends=('foobar>=1.8.0')
; Ini artinya Anda membatasi hanya boleh pada versi 1.8.0 atau lebih. Anda juga bisa membatasinya lebih spesifik lagi, contoh depends=('foobar>=1.8.0' 'foobar<2.0.0')
; ini artinya dependesi hanya boleh pada versi 1.8.0 ke atas dan tidak boleh lebih dari versi 2.0.0.
Jika dalam software tersebut ternyata hanya menggunakan dependensi dari binary library, Anda cukup menuliskannya seperti ini depends=('libfoobar.so')
, makepkg
akan mencoba mencari suatu binary library tersebut dan melapirkan pula versi yang dibutuhkan oleh software tersebut. Anda dapat menspesifikan versi dari library yang Anda gunakan tersebut contoh hanya membatasi pada versi 2, depends=('libfoobar.so=2')
.
Sebeneranya ada banyak variabel standar dari PKGBUILD
ini, akan tetapi saya hanya menjelaskan apa yang tertulis dari skrip di atas, dan skrip tersebut sudah dapat dipergunakan untuk membangun satu paket aplikasi yang sumber kodenya diambil dari GitHub, kemudian dikompilasi dan dipaketkan dengan makepkg
, lalu dipasang melalui pacman
.
Anda juga dapat menggunakan variabel buatan Anda sendiri jika Anda mau, akan tetapi saran saya untuk konsisten pada standardisasi gunakan variabel dari Arch Wiki
saja.
Penjelasan Mengenai _Function_
Selanjutnya kita masuk kebagian function. Dalam contoh skrip di atas ada dua_ function_ yakni build
dan package
. Adapun function build
digunakan untuk mengkompilasi (compile) aplikasi dari sumber kodenya.
Kemdian function package
, digunakan untuk pemasangan paket ke sistem. Perhatikan kode di bawah ini:
install -Dm755 ${pkgname}/${originname} ${pkgdir}/usr/bin/ ... ... install -Dm644 -T ${pkgname}/${originname}.desktop ${pkgdir}/usr/share/applications/${pkgname}.desktop
Ada dua paramenter -Dm
. Paramenter -D
adalah untuk menginstal semua paket termasuk membuatkan direktori jika tidak ada. Kemudian paramenter m
Anda juga bisa menulis secara terpisah dengan menambahkan setrip (hyphen) yakni -m
, paramenter ini menunjukan moda permission 755
untuk direktori 644
untuk berkas. Untuk lebih jelasnya Anda bisa membaca manualnya dengan mengetik man install
.
Kemudian tanda dolar diapit kurung kurawal ${}
seperti ${pkgname}
itu adalah cara skrip bash membaca suatu variabel, dalam hal ini variabel pkgname
.
Tahap Testing PKGBUILD
Setelah kita membuat PGKGBUILD, langkah selanjutnya kita tes PKGBUILD tersebut, apakah sudah berjalan dengan baik atau belum?. Cara mengetesnya cukup gunakan perintah berikut:
makepkg -i
Jika tidak terjadi galat (error) Anda bisa langsung masuk ketahap selanjutnya yakni men-submit paket ke AUR, jika belum ulangi sampai tidak terjadi galat.
Men-Submit Paket ke AUR
Lanjut sekarang kita memasuki sesi tentang cara men-submit paket ke AUR. Sebelum di-submit pastikan Anda sudah mengetesnya dan memastikan bahwa PKGBUILD
Anda siap diunggah dinaikan ke AUR.
Untuk membuat paket baru pertama-tama Anda clone disertai nama paket yang nantinya akan Anda submit ke AUR. Usahakan clone di direktori kosong, jangan gunakan direktori yang sudah ada agar lebih mudah.
git clone ssh://[email protected]/nama_paket_Anda.git
Untuk mengindari kesalahan clone, sebaiknya Anda cari dulu (search) di AUR apakah nama tersebut sudah dipergunakan dalam AUR atau belum. Jika belum, otomatis AUR akan membuat paket baru, sesuai dengan nama yang Anda berikan. Jika memang nama paket tersebut belum ada, pesan yang diberikan oleh gi
t akan seperti berikut:
Cloning into 'nama_paket_Anda'... warning: You appear to have cloned an empty repository. Checking connectivity... done.
Jika Anda memang sebelumnya sudah terlanjur membuat direktori , Anda dapat menggunakan perintah berikut:
cd direktori_Anda git init git remote add orgin ssh://[email protected]/package_name.git git fetch origin
Langkah selanjutnya taru semua paket Anda seperti PKGBUILD
, berkas .desktop
dan lain-lain dalam direktori yang telah Anda clone atau remote sebelumnya. Kemudian lakukan perintah berikut:
makepkg --printsrcinfo > .SRCINFO $ git add -A $ git commit -m "useful commit message" $ git push
Penting! Gunakan selalu perintah:
makepkg --printsrcinfo > .SRCINFO
Jika memang ada perubahan isi berkas dalam direktori. Contohnya jika Anda ingin menghapus berkas .dekstop
maka lakukan kembali perintah makepkg --printsrcinfo > .SRCINFO
. Jika tidak Anda bisa langsung add
, commit
dan push
.
Jika Anda berhasil maka AUR akan langsung menampilkan paket Anda. Contoh pada saat saya men-submit paket KBBI Qt:
Lalu apa langkah selanjutnya? Selanjutnya tinggal Anda kelola paket yang Anda buat tersebut, pastikan diperbaruhi jika memang sumber kode ada perubahan atau software naik versi. Paket yang baik nantinya akan masuk dalam official repository.
Semoga tulisan ini bermanfaat. Bagi Anda pembaca, jika menemukan kesalahan dalam tulisan ini, baik salah ejaan, typo, penulisan nama atau salah penulisan kode, harap segera dikomentari di kolom komentar di bawah.
Komentar