Distribusi Software
Di dalam komunitas GNU/Linux, ketika disebut kata software, maksudnya adalah free software (sebagian orang menamakannya open source). Sebuah free software itu didistribusikan oleh developernya (upstream) dalam bentuk source code. Upstream biasanya mengemas setiap source code dalam berkas arsip tarball seperti .tar.gz atau .tar.bz2 (mirip dengan .zip). Para developer distribusi GNU/Linux (downstream) mengambil source code-source code itu secara terpisah-pisah dari upstream-upstream di seluruh dunia kemudian memrosesnya menjadi software-software dalam bentuk binary. Setiap software diproses dan dikemas menjadi satu buah package (paket). Proses perubahan dari source code jadi binary ini dilakukan sebagai layanan kepada pengguna suatu distribusi GNU/Linux, terkadang berbayar (seperti Red Hat Enterprise Linux) terkadang gratis (seperti Ubuntu). Paket-paket yang sudah jadi disimpan di dalam server yang disebut dengan nama repositori. Setiap distribusi GNU/Linux adalah downstream, dan setiap downstream memiliki repositorinya masing-masing. Setiap repositori umumnya berisi puluhan ribu paket software. Pengguna akhir memperoleh software bagi distribusi yang dipakainya dari repositori distribusi tersebut. Misalnya, pengguna Ubuntu akan mengambil software dari repositori Ubuntu pula. Yang diambil adalah software dalam bentuk paket. Cara mengambilnya adalah dengan memakai sistem manajemen paket.
Format Paket
Di dunia GNU/Linux, terdapat dua jenis format paket (package) yang paling populer. Mereka adalah DEB dan RPM (.deb dan .rpm). Format DEB digunakan di sistem operasi keluarga Debian, misalnya Ubuntu dan Linux Mint. Format RPM digunakan di sistem operasi keluarga Red Hat Enterprise Linux, misalnya Fedora dan CentOS. Maka di Ubuntu paket-paket software dikemas dalam format .deb, sedangkan di Fedora berformat .rpm.
Sebagai perbandingan, di Microsoft Windows format paket software resmi adalah MSI (.msi). Sedangkan format dari berkas software dalam bentuk binary adalah EXE (.exe). MSI bisa saling dibandingkan dengan DEB atau RPM. MSI memuat software dan metadata, sebagaimana DEB atau RPM juga memuat hal yang sama.
Dependensi
Inggris: dependency, Indonesia: dependensi; berarti ketergantungan. Di dalam komunitas free software, dependensi adalah istilah yang merujuk kepada ketergantuan suatu software kepada software lain. Jika A tergantung pada B, maka B harus diinstal dahulu sebelum A. Karena software memiliki dua bentuk, maka dependensi juga ada dalam dua bentuk. Software dalam bentuk source code bisa memiliki dependensi, software dalam bentuk binary juga bisa memiliki dependensi. Pembaca yang belum mengenal dependensi bisa mengingat kejadian ".Net Framework" yang harus diinstal terlebih dahulu sebelum menginstal software A ketika di Microsoft Windows. Maka dalam hal ini .Net Framework adalah dependensi bagi software A.
Pada praktiknya di lapangan, dependensi itu sangat banyak terjadi antara software-software yang tersedia di komunitas free software. Hal ini karena free software dibangun atas prinsip kooperasi (gotong royong) terutama di GNU/Linux dengan prinsip warisan UNIX do one thing and do it well. Dependensi yang terjadi di suatu sistem GNU/Linux adalah pada paket software (software package). Untuk menginstal suatu paket software, sering kali pengguna harus menginstal dahulu paket software yang lain. Dan paket yang lain itu memiliki dependensi lagi kepada paket lain pula. Dan seterusnya. Dalam banyak kejadian, untuk menginstal satu software (misalnya KDE) dibutuhkan puluhan atau ratusan paket berbeda-beda karena ada dependensi dan bercabang pula. Inilah praktik di lapangan dan ini adalah masalah.
Maka untuk dapat menyelesaikan masalah itu komunitas membuat suatu sistem di dalam sistem manajemen paket yang disebut dependency resolver (pencari dependensi). Suatu dependency resolver adalah program yang memiliki kemampuan mencari seluruh dependensi secara otomatis terhadap suatu paket di sistem GNU/Linux yang digunakan. Dependency resolver sangat mempermudah pengguna akhir dalam menginstal suatu software di GNU/Linux karena pengguna tidak perlu mencarinya secara manual lagi. Contoh dependency resolver di Ubuntu adalah apt, di Arch Linux adalah pacman, di CentOS dan Fedora adalah yum, di openSUSE adalah zypper, dan seterusnya.
Sistem Manajemen Paket
Sistem manajemen paket (disingkat smp) adalah mekanisme pengelolaan paket software di suatu sistem operasi. Pengelolaan yang dimaksud adalah menginstal, menghapus, dan memutakhirkan paket. Istilah aslinya adalah package management system.
Yang dimaksud sebuah paket adalah sebuah berkas arsip yang memuat suatu software dan suatu metadata. Paket yang memuat selain software biasanya memuat gambar, atau audio, atau video, atau apa saja, selalu disertai pula dengan metadata. Paket adalah metode setiap developer distribusi GNU/Linux untuk mendistribusikan software melalui repositori mereka masing-masing. Pengguna menginstal suatu software adalah dengan menginstal paket tersebut dari repositori. Paket di Ubuntu berformat DEB (.deb).
Yang dimaksud metadata adalah informasi penting terkait dengan isi paket. Isi metadata di antaranya nama paket, daftar dependensi paket, deskripsi, ukuran, dan sebagainya. Setiap paket selalu berisi metadata.
Komponen suatu sistem manajemen paket setidaknya dua program: package manager (manajer paket) dan update manager (manajer pemutakhiran). Hampir semua distribusi GNU/Linux menyertakan kedua komponen utama ini. Kedua jenis program ini selalu berwujud command line dan dijalankan dari shell (Terminal). Hanya saja, biasanya, distribusi seperti Ubuntu menambahkan versi GUI dari setiap program.
Package manager adalah program inti di dalam smp, tugas pokoknya pasang dan hapus paket di sistem. Tugas untuk pemasangan adalah membuka, mengeluarkan isi, memeriksa metadata, lalu meletakkan setiap berkas di dalam paket ke posisinya masing-masing di dalam sistem. Tugas untuk penghapusan adalah membaca kembali metadata, menemukan skrip untuk penghapusan, melakukan penghapusan satu demi satu secara otomatis sampai paket itu terhapus dari sistem. Update manager adalah program yang bekerja di atas package manager, tugas utamanya adalah dependency resolving (mencari dependensi), mengunduh paket melalui jaringan, dan menemukan pemutakhiran versi paket (sesuai namanya). Update manager biasanya hanya mencari dependensi dan mengunduh, sedangkan pemasangan dan penghapusan paket tetap dilakukan oleh package manager.
Catatan: di Arch Linux, package manager dan update manager menyatu dalam satu program bernama pacman. Di Ubuntu, package manager terpisah dari update manager, masing-masing bernama dpkg dan apt.
0 comments:
Post a Comment