evilfactorylabs

Cover image for Manajer Paket: Keajaiban dan Prahara dalam Administrasi Sistem
Ayaka Hokari
Ayaka Hokari

Posted on

Manajer Paket: Keajaiban dan Prahara dalam Administrasi Sistem

Setiap sistem operasi mirip *nix (Unix-like) memiliki manager paket untuk keperluan administrasi software. Hal ini cukup kontras di Windows yang memiliki nama berbeda, yaitu Store.

Manager paket merupakan perangkat lunak yang memiliki tugas mengatur orkestrasi software didalam sistem operasi anda.

Istilah paket merujuk pada arsip berisi perangkat lunak yang akan dipasang ke sistem operasi, arsip ini bisa berbentuk binary atau source code yang akan di kompilasi terlebih dahulu sebelum masuk kedalam sensus paket di dalam sistem operasi.

Hidup tanpa manager paket ?

Meskipun tidak memiliki paket manager, kita masih bisa menginstall perangkat lunak, seperti mengunduh executable langsung dari penyedia atau memgompilasi langsung dari kode sumber.

Begitu saja mudah bukan ? nyatanya, tidak secepat itu. Setiap perangkat lunak memiliki standarnya sendiri, mulai dari Application Binary Interface atau yang sering kita hadapi: masalah dependencies perangkat lunak.

Perangkat lunak yang akan kita pasang dibangun menggunakan banyak pustaka yang menjadi ketergantungan, dan itu perlu di ikut serta dalam pemasangan ke sistem agar perangkat lunak tersebut berjalan semestinya.

Meskipun ada perangkat lunak dengan kompilasi statis bisa menyelesaikan masalah ini, tetapi solusi ini tidak cocok untuk skala sistem operasi yang terdapat banyak software.

Kompilasi statis memiliki ukuran yang besar sebab ketergantunganya disusupkan kedalam perangkat lunak.

Terlebih, pemborosan ruang karena ada kemungkinan dua atau lebih perangkat lunak yang bergantung pada satu pustaka yang sama.

Dan, ditambah oleh keperluan akan versi perangkat lunak tertentu, yang banyak dan belum tentu kompatibel dengan sensus perangkat lunak yang ada pada sistem kita.

Kedigdayaan Manajer Paket

Manajer paket muncul sebagai solusi kemalasan diatas. Sebagai bentuk otomatisasi kerja monoton urusan perpaket, kecuali saat proses pemaketan software. Sisanya, Kita hanya menunggu proses selesai, yang perlu kita otomatisasi dengan melakukan hal yang lain.

Secara umum, manajer paket mencari metadata paket yang anda ingin pasang dari sensus lokal, lalu memeriksa apakah dependencies tersedia pada sistem kita.

Bila terpenuhi maka proses pemasangan dimulai, pemasangan dari binary atau kompilasi kode sumber. Proses ini dibarengin dengan melacak seluruh file yang akan dimasukan kesebuah file yang disebut manifest.

Setelah installasi selesai, perangkat lunak terdeteksi melalui terminal. Penghapusan bisa membaca isi manifest dan menghapus semua file yang terdaftar didalamnya.

Manager paket belumlah digdaya seperti yang kita bayangkan. Meskipun telah menggunakan paket manager, masih ada momok lain yang suka menanti dann tak diduga-duga datangnya: Dependecies Hell.

Dependecies Hell merupakan fenomena dimana paket yang akan terinstall bergantung pada versi yang tidak tersedia pada sensus lokal anda, yang mengharuskan anda mengupgrade seluruh sensus anda, seperti upgrade versi di Ubuntu.

Bayangkan bila ada perangkat lunak yang tidak kompatible versi kernel anda ?

hello_world-1.0.0 need linux-5.9.1, current linux-5.1.2, dependencies not satisfied.
Enter fullscreen mode Exit fullscreen mode

sungguh songgong bukan paket itu.

Entah dimasa depan akan seperti apa manajer paket. In my sotoy opinion, membuat dan mendesain konsep alur manajer paket adalah sebuah state-of-the-art, sebagai contoh paket manager Nix yang mengatur distribusi paket dengan eksprsifitas setara sebuah bahasa pemrograman.

Konsep

Manager paket tidak jauh berbeda prinsipnya dengan program CRUD upload file yang kita pelajari saat membuat Web, hanya saja kita berhadapan dengan transaksi dan sensus paket dalam filesystem.

Mari kita analogikan,

Sensus lokal ibarat database yang berisi informasi paket yang terinstall pada sistem kita (seperti manifest dkk).

Sensus remot tak jauh berbeda diatas. Hanya saja sensus ini, bertugas sebagai backbone sensus distribusi manajer paket.

Dari sini paket yang kita pasang muncul, sebuah jantung distribusi paket, proses upgrade/update hanya menyalin metadata paket dari sensus remot ke lokal. Sensus lokal ini akan me-resolve dekripsi metadata menjadikan paket yang akan terpasang pada sistem kita.

Jika paket yang anda butuhkan tidak ada disini, anda perlu menginstall cara manual atau anda baik hati membuat paket yang anda butuhkan dari hasil kompilasi manual anda.

Kemudian, CRUD ibarat perintah apk add(Create), apt remove (Delete), pacman -S (Update) dan xbps-query(Read).

Setiap paket yang terpasang perlu dilacak posisi dan keberadaanya, hal ini untuk penghapusan (melacak file paket lalu menghapusnya) dan pengujian integritas sensus paket.

Metadata sebuah paket berisi gambaran perangkat lunak yang akan dipasang/dikompilasi, seperti nama, versi, alamat kode sumber, dependencies, pre-remove hook dan post-install hook.

WIP or end

Mungkin saya pribadi terlalu banyak cuap-cuap tentang cara dan filosofi manajer paket. Lain waktu akan saya lanjutkan tulisan ini bila ingat dan punya prioritas.

Berikut adalah beberapa repositori yang bisa menjadi rujukan anda untuk mengeksplorasi implementasi sebuah manajer paket:

Discussion (0)