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.pub
Nah, 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&gt;=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&gt;=1.8.0' 'foobar&lt;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 git 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 &gt; .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.