Cara Install Aplikasi di FreeBSD
Pada sistem operasi FreeBSD terdapat 2 cara atau tool untuk melakukan instalasi aplikasi yaitu dengan menggunakan Packages (pkg) dan Ports Collection (ports).
Packages (pkg)
Packages adalah aplikasi yang sudah dalam format binary atau sudah di-compile, aplikasi dapat langsung diinstalasi.
Kelebihan Packages
- Package tarball yang terkompresi biasanya lebih kecil dari tarball terkompresi yang berisi kode sumber (source code) aplikasi.
- Package tidak perlu di-compile, jadi menghemat waktu, apalagi jika sumber daya komputer rendah.
- Package tidak memerlukan pemahaman tentang proses yang terlibat dalam compile aplikasi.
Package Manager di FreeBSD dengan pkg
Untuk melakukan instalasi aplikasi dari packages di FreeBSD digunakan tool binary package manager yang disebut pkg. Secara default pkg belum terinstall pada FreeBSD. Untuk melakukan install tool pkg cukup jalankan perintah pkg, jika terdeteksi pkg belum terinstall ditampilkan pesan bahwa pkg belum terinstall dan apakah ingin menginstall pkg.
Misalnya menjalankan perintah pkg mencari package nano
1 | # pkg search nano |
Hasilnya, pkg belum terinstall
1 2 | The package management tool is not yet installed on your system. Do you want to fetch and install it now? [y/N]: y |
Setelah menjawab y untuk instalasi pkg. pkg terinstall dan dilanjutkan dengan menjalankan perintah sebelumnya ‘pkg search nano’
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/FreeBSD:11:amd64/quarterly, please wait... Verifying signature with trusted certificate pkg.freebsd.org.2013102301... done Installing pkg-1.10.1... Extracting pkg-1.10.1: 100% pkg: Repository FreeBSD missing. 'pkg update' required pkg: Repository FreeBSD load error: access repo file(/var/db/pkg/repo-FreeBSD.sqlite) failed: No such file or directory nano-2.8.7 Nano's ANOther editor, an enhanced free Pico clone nano-devel-2.5.3 Nano's ANOther editor, an enhanced free Pico clone nanoblogger-3.4.2_1 Small weblog engine written in Bash for the command line nanoblogger-extra-3.4.2_1 Extras for nanoblogger, a small weblog engine nanomsg-1.0.0 Socket library that provides several common communication patterns rubygem-nanoc-4.7.14 Simple but flexible static site generator u-boot-nanopi_m1plus-2017.07.00.1 Cross-build das u-boot for nanopi_m1plus u-boot-nanopi_neo-2017.07.00.1 Cross-build das u-boot for nanopi_neo u-boot-nanopi_neo_air-2017.07.00.1 Cross-build das u-boot for nanopi_neo_air |
Menjalankan perintah pkg untuk install nano
1 | # pkg install nano |
Hasilnya ditampilkan dependensi apa saja yang diperlukan dan berapa file yang harus didownload serta space disk yang digunakan.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Updating FreeBSD repository catalogue... FreeBSD repository is up to date. All repositories are up to date. Updating database digests format: 100% The following 3 package(s) will be affected (of 0 checked): New packages to be INSTALLED: nano: 2.8.7 indexinfo: 0.2.6 gettext-runtime: 0.19.8.1_1 Number of packages to be installed: 3 The process will require 3 MiB more space. 636 KiB to be downloaded. Proceed with this action? [y/N]: y |
Setelah menjawab y untuk instalasi nano
1 2 3 4 5 6 7 8 9 10 | [1/3] Fetching nano-2.8.7.txz: 100% 483 KiB 164.9kB/s 00:03 [2/3] Fetching indexinfo-0.2.6.txz: 100% 5 KiB 5.3kB/s 00:01 [3/3] Fetching gettext-runtime-0.19.8.1_1.txz: 100% 148 KiB 75.6kB/s 00:02 Checking integrity... done (0 conflicting) [1/3] Installing indexinfo-0.2.6... [1/3] Extracting indexinfo-0.2.6: 100% [2/3] Installing gettext-runtime-0.19.8.1_1... [2/3] Extracting gettext-runtime-0.19.8.1_1: 100% [3/3] Installing nano-2.8.7... Extracting nano-2.8.7: 100% |
Upgrade packages
1 | # pkg upgrade |
Hasilnya
1 2 3 4 5 6 7 | Updating FreeBSD repository catalogue... FreeBSD repository is up to date. All repositories are up to date. Checking for upgrades (1 candidates): 100% Processing candidates (1 candidates): 100% Checking integrity... done (0 conflicting) Your packages are up to date. |
Menghapus sebuah packages
1 | # pkg delete nano |
Hasilnya
1 2 3 4 5 6 7 8 9 10 11 12 13 | Checking integrity... done (0 conflicting) Deinstallation has been requested for the following 1 packages (of 0 packages in the universe): Installed packages to be REMOVED: nano-2.8.7 Number of packages to be removed: 1 The operation will free 2 MiB. Proceed with deinstalling packages? [y/N]: y [1/1] Deinstalling nano-2.8.7... [1/1] Deleting files for nano-2.8.7: 100% |
Menghapus packages dependensi yang sudah tidak terpakai lagi. Misalnya pada saat instalasi nano terdapat packages lain yang terinstall. Setelah nano dihapus atau uninstall packages tersebut masih ada. Cara menghapusnya dengan pkg autoremove.
1 | # pkg autoremove |
Hasilnya
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Checking integrity... done (0 conflicting) Deinstallation has been requested for the following 2 packages: Installed packages to be REMOVED: gettext-runtime-0.19.8.1_1 indexinfo-0.2.6 Number of packages to be removed: 2 Proceed with deinstalling packages? [y/N]: y [1/2] Deinstalling gettext-runtime-0.19.8.1_1... [1/2] Deleting files for gettext-runtime-0.19.8.1_1: 100% [2/2] Deinstalling indexinfo-0.2.6... [2/2] Deleting files for indexinfo-0.2.6: 100% |
Untuk mempelajari perintah pkg, baca manualnya atau help.
1 | # man pkg |
1 | # pkg help |
Subcommand dari pkg juga memiliki help tersendiri, misalnya help untuk pkg install.
1 | # pkg help install |
Untuk mengetahui vulnerability atau kelemahan pada aplikasi terdapat opsi audit pada perintah pkg.
1 | # pkg audit -F |
Hasilnya
1 2 | Fetching vuln.xml.bz2: 100% 675 KiB 115.2kB/s 00:06 0 problem(s) in the installed packages found. |
Ports Collection (portsnap)
Ports Collection adalah sekumpulan file Makefiles, patches, dan deskripsi file. Sekumpulan file ini digunakan untuk meng-compile dan meng-install aplikasi di FreeBSD dan disebut ports.
Atau secara sederhana saya mendefinisikan Ports Collection atau ports adalah aplikasi FreeBSD yang didistribusikan masih dalam bentuk kode sumber (source code) yang masih perlu di-compile terlebih dahulu sebelum dilakukan instalasi.
Kelebihan Ports Collection
- Fitur aplikasi dan opsi dapat dipilih pada konfigurasi compile.
- Beberapa aplikasi memakai lisensi yang melarang distribusi dalam format binary/biner. Aplikasi tersebut harus didistribusikan sebagai kode sumber (source code) yang harus di-compile oleh pengguna.
- Beberapa orang tidak mempercayai distribusi biner atau lebih suka membaca kode sumber untuk mencari potensi masalah.
- Kode sumber diperlukan untuk menerapkan custom patch.
Ports Collection disimpan pada folder /usr/ports.
Sebelum aplikasi dapat di-compile dengan menggunakan port, Ports Collection harus di-install terlebih dahulu. Jika Ports Collection (ports tree) tidak dipasang pada saat instalasi FreeBSD, gunakan perintah berikut untuk menginstalasinya.
Mendownload file snapshot Ports Collection dan menyimpannya di /var/db/portsnap.
1 | # portsnap fetch |
Hasilnya
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Looking up portsnap.FreeBSD.org mirrors... none found. Fetching snapshot tag from portsnap.FreeBSD.org... done. Fetching snapshot metadata... done. Fetching snapshot generated at Thu Oct 5 08:03:35 WITA 2017: 9dbf3784ea555a08ce08efc752cf72b3655fd9a76c8df0100% of 76 MB 285 kBps 03m49s Extracting snapshot... done. Verifying snapshot integrity... done. Fetching snapshot tag from portsnap.FreeBSD.org... done. Fetching snapshot metadata... done. Updating from Thu Oct 5 08:03:35 WITA 2017 to Thu Oct 5 14:04:27 WITA 2017. Fetching 5 metadata patches... done. Applying metadata patches... done. Fetching 0 metadata files... done. Fetching 33 patches. (33/33) 100.00% done. done. Applying patches... done. Fetching 0 new ports or files... done. |
Jika baru pertama kali menjalankan Portsnap, ekstrak snapshot terlebih dahulu ke dalam folder /usr/ports, hasil ekstrak sebesar 883MB.
1 | # portsnap extract |
Hasilnya
1 2 3 4 5 6 7 8 9 10 11 | ... /usr/ports/x11/xwud/ /usr/ports/x11/xxkb/ /usr/ports/x11/xzoom/ /usr/ports/x11/yad/ /usr/ports/x11/yakuake-kde4/ /usr/ports/x11/yalias/ /usr/ports/x11/yeahconsole/ /usr/ports/x11/yelp/ /usr/ports/x11/zenity/ Building new INDEX files... done. |
Setelah melakukan ekstrak, /usr/ports nantinya dapat diupdate dengan menjalankan perintah di bawah ini
1 2 | # portsnap fetch # portsnap update |
atau bisa dengan satu baris perintah
1 | # portsnap fetch update |
Hasilnya
1 2 3 4 5 | Looking up portsnap.FreeBSD.org mirrors... none found. Fetching snapshot tag from portsnap.FreeBSD.org... done. Latest snapshot on server matches what we already have. No updates needed. Ports tree is already up to date. |
Install Ports
Setelah file ports collection tersedia, selanjutnya melakukan instalasi dengan meng-compile kode sumber.
Misalnya instalasi aplikasi nano
1 | # cd /usr/ports/editors/nano |
Lihat isi folder ports nano
1 | # ls -l |
Hasilnya
1 2 3 4 | -rw-r--r-- 1 root wheel 1170 Sep 4 21:52 Makefile -rw-r--r-- 1 root wheel 152 Sep 4 21:52 distinfo -rw-r--r-- 1 root wheel 339 Jan 22 2014 pkg-descr -rw-r--r-- 1 root wheel 2823 May 8 02:43 pkg-plist |
Selanjutnya perintah make install
1 | # make install |
Hasilnya
1 2 3 4 5 6 7 8 9 10 11 12 13 | ===> Building/installing dialog4ports as it is required for the config dialog ===> Cleaning for dialog4ports-0.1.6 ===> License BSD2CLAUSE accepted by the user ===> dialog4ports-0.1.6 depends on file: /usr/local/sbin/pkg - found => dialog4ports-0.1.6.tar.gz doesn't seem to exist in /usr/ports/distfiles/. => Attempting to fetch http://m1cro.me/dialog4ports/dialog4ports-0.1.6.tar.gz dialog4ports-0.1.6.tar.gz 100% of 10 kB 40 kBps 00m01s ... ====> Compressing man pages (compress-man) ===> Installing for nano-2.8.7 ===> Checking if nano already installed ===> Registering installation for nano-2.8.7 Installing nano-2.8.7... |
Kemudian jalankan perintah make clean untuk menghapus file temporary pada saat proses instalasi.
1 | # make clean |
Hasilnya
1 2 3 4 | ===> Cleaning for gettext-tools-0.19.8.1 ===> Cleaning for gettext-runtime-0.19.8.1_1 ===> Cleaning for indexinfo-0.2.6 ===> Cleaning for nano-2.8.7 |
Aplikasi nano sudah selesai di-install melalui ports collection. Jika pada saat mengetik na dan tidak autocomplete menjadi nano ketika menekan tombol tab jalankan perintah di bawah ini
1 | # rehash |
Uninstall Ports
Untuk uninstall atau menghapus aplikasi ports di FreeBSD, masuk kembali ke folder ports aplikasi dan jalankan perintah make deinstall.
1 2 | # cd /usr/ports/editors/nano # make deinstall |
Hasilnya
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ===> Deinstalling for nano ===> Deinstalling nano-2.8.7 Updating database digests format: 100% Checking integrity... done (0 conflicting) Deinstallation has been requested for the following 1 packages (of 0 packages in the universe): Installed packages to be REMOVED: nano-2.8.7 Number of packages to be removed: 1 The operation will free 2 MiB. [1/1] Deinstalling nano-2.8.7... [1/1] Deleting files for nano-2.8.7: 100% |
selamat mencoba 🙂
Referensi: