Sekilas Tentang Mount Permission

Untuk bisa menggunakan media penyimpanan dalam sistem operasi Linux (dan sistem operasi Unix lain bahkan Mac OSX), kita perlu melakukan proses mount terlebih dahulu. Beberapa distro Linux yang dilengkapi dengan desktop environment (tampilan grafis) melakukan proses mounting secara otomatis. Jadi misalnya kita ingin menyalin data ke dalam USB flash disk, kita menyalin data ke dalam direktori yang dipakai sebagai mountpoint perangkat USB tersebut. Ilustrasi berikut saya ambil dari mesin Ubuntu saya :

Pada contoh di atas USB saya di-mounting otomatis pada direktori /media/ttirtawi/TTIRTAWI. Dari Terminal saya bisa lihat statusnya seperti tampilan berikut :

ttirtawi@ubuntu1404:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        12G  7,2G  4,0G  65% /
none            4,0K     0  4,0K   0% /sys/fs/cgroup
udev            492M  4,0K  492M   1% /dev
tmpfs           101M  976K  100M   1% /run
none            5,0M     0  5,0M   0% /run/lock
none            501M  200K  501M   1% /run/shm
none            100M   36K  100M   1% /run/user
/dev/sdb1        29G   26G  3,5G  88% /media/ttirtawi/TTIRTAWI
ttirtawi@ubuntu1404:~$ 

OS mengenali flash disk tadi dengan nama perangkat /dev/sdb1. Opsi mount yang digunakan dapat dilihat dengan menggunakan perintah mount seperti contoh berikut ini :

ttirtawi@ubuntu1404:~$ mount | grep sdb
/dev/sdb1 on /media/ttirtawi/TTIRTAWI type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks2)
ttirtawi@ubuntu1404:~$ 

Tanpa proses mount saya tidak bisa langsung menyalin data ke dalam perangkat /dev/sdb1.

Nah ada kalanya OS Linux yang saya gunakan tidak melakukan proses mount secara otomatis. Misalnya yang saya alami saat menggunakan Oracle Linux 6.5. Di sistem ini saya tidak memiliki desktop environment. Saya cuma bisa mengakses command line console saja. Oleh karenanya saat saya perlu menggunakan USB flash disk, saya lakukan proses mounting secara manual dengan perintah seperti berikut ini :

ttirtawi@uimtest-X220:/$ sudo mount  /dev/sdb1 /mnt

Saya lakukan mount USB-nya pada direktori /mnt. Saat saya cek statusnya dengan perintah df -h, nampak USB tersebut siap digunakan :

ttirtawi@uimtest-X220:/$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
/dev/mapper/vg_uimtest-lv_root   30G  8.4G   21G  30% /
tmpfs                           3.8G  420K  3.8G   1% /dev/shm
/dev/sda1                       477M   55M  397M  13% /boot
/dev/mapper/vg_uimtest-lv_home   44G   19G   24G  45% /home
/dev/mapper/vg_uimtest-lv_opt   212G   52G  150G  26% /opt
/dev/sdb1                        29G   21G  8.7G  71% /mnt
ttirtawi@uimtest-X220:/$ 

Lalu saya coba tes membuat sebuah berkas kosong dalam direktori /mnt tadi.

ttirtawi@uimtest-X220:/$ touch /mnt/testing
touch: cannot touch `/mnt/testing': Permission denied
ttirtawi@uimtest-X220:/$

Ternyata saya belum bisa mengisikan data apapun ke dalam USB flash disk tadi. Saya mendapati error Permission denied. Ternyata saya lupa mengatur hak akses user ttirtawi, jadi hanya user root saja yang bisa mengakses USB flash disk tersebut. Saya perlu mengulangi proses mount tadi dengan opsi yang benar. Pertama saya lakukan proses umount dulu, proses ini melepaskan USB flash disk tadi dari mountpoint /mnt.

ttirtawi@uimtest-X220:/$ sudo umount /mnt

Sebelum mengulang proses mount saya cek dulu User ID & Group ID user ttirtawi dengan menggunakan perintah id seperti contoh berikut ini :

ttirtawi@uimtest-X220:/$ id
uid=500(ttirtawi) gid=500(ttirtawi) groups=500(ttirtawi),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
ttirtawi@uimtest-X220:/$ 

Informasi uid & gid tersebut perlu ditambahkan pada perintah mount supaya user ttirtawi bisa menyalin/membaca data dari dalam USB flash disk tadi. Kira-kira perintahnya menjadi seperti berikut ini :

ttirtawi@uimtest-X220:/$ sudo mount -o uid=500,gid=500 /dev/sdb1 /mnt

Dengan tambahan opsi “-o uid=500,gid=500”, saya memberi tahu kernel Linux bahwa user ttirtawi dengan ID 500 diperkenankan mengakses USB flash disk yang terpasang pada direktori /mnt. Setelah itu saya sudah bisa membuat/menghapus berkas ke dalam USB flash disk tadi :

ttirtawi@uimtest-X220:/$ touch /mnt/testing
ttirtawi@uimtest-X220:/$ rm /mnt/testing
ttirtawi@uimtest-X220:/$

Tips ini berlaku tidak hanya untuk USB flash disk, tapi berlaku juga pada setiap jenis media penyimpanan (SSD, harddisk eksternal, SD Card, dsb).

Sekilas Tentang VirtualBox Shared Folder

VirtualBox Shared Folder adalah salah satu fitur VirtualBox yang memungkinkan kita berbagi data antara komputer host dengan setiap VirtualBox guest (virtual machine). Istilah komputer host & guest pernah saya tulis di tulisan sebelumya tentang virtualisasi. Syarat untuk bisa menggunakan VirtualBox Shared Folder ini adalah guest OS harus sudah dilengkapi dengan VirtualBox Guest Addition driver.

Tulisan ini adalah dokumentasi pribadi saya tentang langkah menggunakan VirtualBox Shared Folder (VBox SF) di Mac OSX 10.9. MacMini menjadi komputer sehari-hari saya untuk urusan pekerjaan & pribadi. Semua data saya ada di home directory-nya MacMini. Ada kalanya saya perlu menggunakan VirtualBox untuk menjalankan Linux (Ubuntu). Misalnya saat saya ingin terhubung dengan jaringan VPN kantor tanpa perlu menggangu koneksi LAN & aktivitas internet saya lainnya. Saat menggunakan virtual machine seperti ini, saya perlu juga mengakses data-data saya yang ada di Mac. Di sinilah saya perlu menggunakan VBox SF supaya Ubuntu saya bisa mengakses semua data yang ada di Mac. Ini langkah-langkah yang saya lakukan untuk mengijinkan Ubuntu mengakses folder Mac saya : Continue reading

Memasang Wireshark Versi Lama Di MacPorts

Di tulisan sebelumnya (Sekilas Tentang MacPorts) saya menuliskan bahwa kita bisa memasang beberapa versi port bersamaan (meskipun hanya 1 yang aktif). Di posting tersebut saya mencoba memasang Wireshark versi 1.10.7. Saya bisa mencari versi terdahulu dari sebuah port dari website http://trac.macports.org. Misalnya seperti contoh tangkapan layar di bawah ini :

Revision Browser

Sebagai contoh saya ingin memasang Wireshark versi yang lebih lama, misalnya 1.10.6. Yang perlu dicatat adalah Revision number yang menghasilkan Wireshark versi 1.10.6. Dari website tadi saya dapat nomor revisinya 118753.

Revision Number Wireshark Upgrade 1.10.6

Untuk memasang port versi lama ini langkah-langkahnya adalah sebagai berikut :

  1. Saya perlu mengambil port revision number 118753 dengan menggunakan svn. SVN (subversion) adalah aplikasi untuk kontrol versi, ini biasanya digunakan para developer software untuk mengontrol perubahan yang dilakukan pada source code software-nya. Perintah svn di Mac OSX sudah termasuk dalam paket XCode Command Line Tools. Perintah yang perlu saya gunakan adalah seperti contoh berikut ini :
    ttirtawi@macmini:Downloads $ svn co -r 118753 http://svn.macports.org/repository/macports/trunk/dports/net/wireshark
    A    wireshark/files
    A    wireshark/files/patch-configure.diff
    A    wireshark/files/patch-epan-dissectors-pacet-dtls.c.diff
    A    wireshark/files/patch-svnversion
    A    wireshark/Portfile
    Checked out revision 118753.
    ttirtawi@macmini:Downloads $ 
    

    Saya bisa melakukan perintah ini di direktori mana saja. Perintah svn akan mengambil direktori wireshark dari server SVNnya Macports.

  2. Selanjutnya saya bisa lihat versi port yang ada di direktori tersebut :
    ttirtawi@macmini:Downloads $ cd wireshark/
    ttirtawi@macmini:wireshark $ port info
    wireshark @1.10.6 (net)
    Variants:             no_adns, no_geoip, no_gnutls, no_ipv6, no_libgcrypt, no_libsmi, no_lua, no_rtp, no_ssl, no_x11, universal
    
    Description:          A network analyzer that lets you capture and interactively browse Ethernet frames. Packet data can be read from a file, or live from a
                          local network interface.
    Homepage:             http://wireshark.org/
    
    Build Dependencies:   pkgconfig
    Library Dependencies: adns, libgcrypt, libgeoip, glib2, libsmi, lua, gnutls, gtk2, openssl, portaudio, libpcap, kerberos5, zlib
    Conflicts with:       wireshark-devel
    Platforms:            darwin
    License:              GPL-2 GPL-3
    Maintainers:          opendarwin.org@darkart.com
    ttirtawi@macmini:wireshark $ 
    

    Benar bahwa port yang diambil tadi adalah Wireshark versi 1.10.6.

  3. Selanjutnya untuk memasang port Wireshark 1.10.6 tersebut saya tinggal gunakan perintah port install seperti pada contoh berikut ini :
    ttirtawi@macmini:wireshark $ port install
    --->  Computing dependencies for wireshark
    --->  Fetching distfiles for wireshark
    --->  Attempting to fetch wireshark-1.10.6.tar.bz2 from http://jog.id.distfiles.macports.org/macports/mpdistfiles/wireshark
    --->  Attempting to fetch wireshark-1.10.6.tar.bz2 from http://www.wireshark.org/download/src/
    --->  Verifying checksums for wireshark
    --->  Extracting wireshark
    --->  Applying patches to wireshark
    --->  Configuring wireshark
    --->  Building wireshark
    --->  Staging wireshark into destroot
    --->  Installing wireshark @1.10.6_0
    --->  Deactivating wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
    --->  Cleaning wireshark
    --->  Activating wireshark @1.10.6_0
    --->  Cleaning wireshark
    --->  Updating database of binaries: 100.0%
    --->  Scanning binaries for linking errors: 100.0%
    --->  No broken files found.
    ttirtawi@macmini:wireshark $ 
    
  4. Bila proses instalasi port tadi sudah selesai saya bisa melihat ada 2 port Wireshark yang terpasang & hanya versi 1.10.6 yang aktif.
    ttirtawi@macmini:wireshark $ port installed wireshark
    The following ports are currently installed:
      wireshark @1.10.6_0 (active)
      wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
    ttirtawi@macmini:wireshark $ 
    
  5. Contoh lain bila saya ingin memasang port Wireshark versi 1.2.5. Revision number-nya adalah 61926.
    ttirtawi@macmini:Downloads $ svn co -r  61926 http://svn.macports.org/repository/macports/trunk/dports/net/wireshark
    svn: E000017: Can't create directory '/Users/ttirtawi/mydata/Downloads/wireshark/.svn': File exists
    ttirtawi@macmini:Downloads $ 
    

    Pada contoh di atas muncul error dari perintah svn karena direktori wireshark sudah ada. Saya perlu menghapus dulu direktori wireshark atau pindah menggunakan direktori lainnya.

    ttirtawi@macmini:Downloads $ rm -r wireshark/
    ttirtawi@macmini:Downloads $ svn co -r  61926 http://svn.macports.org/repository/macports/trunk/dports/net/wireshark
    A    wireshark/files
    A    wireshark/files/patch-svnversion
    A    wireshark/Portfile
    Checked out revision 61926.
    ttirtawi@macmini:Downloads $
    ttirtawi@macmini:wireshark $ port install
    --->  Computing dependencies for wireshark
    --->  Dependencies to be installed: c-ares
    --->  Fetching distfiles for c-ares
    --->  Attempting to fetch c-ares-1.10.0.tar.gz from http://jog.id.distfiles.macports.org/macports/mpdistfiles/c-ares
    --->  Verifying checksums for c-ares
    --->  Extracting c-ares
    --->  Configuring c-ares
    --->  Building c-ares
    --->  Staging c-ares into destroot
    --->  Installing c-ares @1.10.0_0
    --->  Activating c-ares @1.10.0_0
    --->  Cleaning c-ares
    --->  Fetching distfiles for wireshark
    --->  Attempting to fetch wireshark-1.2.5.tar.bz2 from http://jog.id.distfiles.macports.org/macports/mpdistfiles/wireshark
    --->  Verifying checksums for wireshark
    --->  Extracting wireshark
    --->  Configuring wireshark
    --->  Building wireshark
    --->  Staging wireshark into destroot
    --->  Installing wireshark @1.2.5_0
    --->  Deactivating wireshark @1.10.6_0
    --->  Cleaning wireshark
    --->  Activating wireshark @1.2.5_0
    --->  Cleaning wireshark
    --->  Updating database of binaries: 100.0%
    --->  Scanning binaries for linking errors: 100.0%
    --->  No broken files found.
    ttirtawi@macmini:wireshark $ 
    ttirtawi@macmini:wireshark $ port installed wireshark
    The following ports are currently installed:
      wireshark @1.2.5_0 (active)
      wireshark @1.10.6_0
      wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
    ttirtawi@macmini:wireshark $ 
    ttirtawi@macmini:~ $ MacPorts/bin/wireshark -version
    wireshark 1.2.5
    
    Copyright 1998-2009 Gerald Combs <gerald@wireshark.org> and contributors.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    Compiled with GTK+ 2.24.23, with GLib 2.40.0, with libpcap 1.5.3, with libz
    1.2.8, without POSIX capabilities, without libpcre, with SMI 0.4.8, with c-ares
    1.10.0, without Lua, with GnuTLS 3.1.22, with Gcrypt 1.5.3, with MIT Kerberos,
    with GeoIP, without PortAudio, without AirPcap.
    NOTE: this build doesn't support the "matches" operator for Wireshark filter
    syntax.
    
    Running on Darwin 13.2.0 (MacOS 10.9.3), with libpcap version 1.5.3, GnuTLS
    3.1.22, Gcrypt 1.5.3.
    
    Built using gcc 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40).
    ttirtawi@macmini:~ $ 
    

Sampai tahap ini saya punya 3 port Wireshark yang terpasang :

ttirtawi@macmini:~ $ port installed wireshark
The following ports are currently installed:
  wireshark @1.2.5_0 (active)
  wireshark @1.10.6_0
  wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
ttirtawi@macmini:~ $ 

Bila saya ingin kembali menggunakan Wireshark versi 1.10.7, saya cukup mengaktifkannya dengan perintah port activate seperti contoh di bawah ini :

ttirtawi@macmini:~ $ port activate wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
--->  Computing dependencies for wireshark
--->  Deactivating wireshark @1.2.5_0
--->  Cleaning wireshark
--->  Activating wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
--->  Cleaning wireshark
ttirtawi@macmini:~ $
ttirtawi@macmini:~ $ port installed wireshark
The following ports are currently installed:
  wireshark @1.2.5_0
  wireshark @1.10.6_0
  wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11 (active)
ttirtawi@macmini:~ $ 
ttirtawi@macmini:~ $ MacPorts/bin/wireshark -version
wireshark 1.10.7 (Git Rev Unknown from unknown)

Copyright 1998-2014 Gerald Combs <gerald@wireshark.org> and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled (64-bit) with GTK+ 2.24.23, with Cairo 1.12.16, with Pango 1.36.3, with
GLib 2.40.0, with libpcap, with libz 1.2.8, without POSIX capabilities, without
libnl, with SMI 0.4.8, without c-ares, with ADNS, with Lua 5.2, without Python,
with GnuTLS 3.1.22, with Gcrypt 1.5.3, with MIT Kerberos, with GeoIP, with
PortAudio V19-devel (built May 23 2014 02:29:07), with AirPcap.

Running on Mac OS X 10.9.3, build 13D65 (Darwin 13.2.0), with locale
en_US.UTF-8, with libpcap version 1.5.3, with libz 1.2.8, GnuTLS 3.1.22, Gcrypt
1.5.3, without AirPcap.
       Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz

Built using clang 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40).
ttirtawi@macmini:~ $ 

Memperbaiki Tampilan Wireshark Di Mac OSX

Wireshark menggunakan GTK untuk menghasilkan tampilan grafisnya. Setelah memasang Wireshark melalui MacPorts, saya dapati tampilan Wireshark seperti ini :

Wireshark Default Tanpa Clearlook GTK+

Menurut saya tampilan Wireshak ini sangat jelek, tidak senada dengan environment Mac OSX. Beberapa referensi di Internet menyarankan untuk menggunakan GTK Theme Clearlooks untuk memperbaiki tampilan Wireshark. Pertama kali memasang Wireshark, hanya ada 1 theme seperti ini :

ttirtawi@macmini:~ $ port installed | egrep "gtk|gnome|theme"
  gnome-common @3.12.0_0 (active)
  gtk-doc @1.20_2+python27 (active)
  gtk2 @2.24.23_0+x11 (active)
  hicolor-icon-theme @0.13_0 (active)
ttirtawi@macmini:~ $ 

GTK Theme Clearlooks tersedia dalam port gnome-themes. Supaya bisa mengganti-ganti GTK Themes saya perlu memasang port gtk-theme-switch juga. Berikut adalah langkah-langkahnya :

ttirtawi@macmini:~ $ port -v install gtk-theme-switch
ttirtawi@macmini:~ $ launchctl load -w /Library/LaunchAgents/org.freedesktop.dbus-session.plist
ttirtawi@macmini:~ $ port -v install gnome-themes
ttirtawi@macmini:~ $ port installed | egrep "gtk|gnome|theme"
  gnome-common @3.12.0_0 (active)
  gnome-icon-theme @3.12.0_0 (active)
  gnome-themes @2.32.1_0 (active)
  gtk-doc @1.20_2+python27 (active)
  gtk-engines2 @2.20.2_3 (active)
  gtk-theme-switch @2.0.4_2 (active)
  gtk2 @2.24.23_0+x11 (active)
  gtk3 @3.12.2_0+x11 (active)
  hicolor-icon-theme @0.13_0 (active)
ttirtawi@macmini:~ $ 

Setelah itu saya bisa menjalankan perintah switch2 untuk mengaktifkan GTK Theme yang saya inginkan :

Switch2 Untuk Memilih GTK Theme

Setelah menggunakan theme Clearlooks, sekarang tampilan Wiresharknya jadi lebih enak untuk dilihat :

Wireshark Dengan Clearlook GTK+

Sekilas Tentang MacPorts

MacPorts adalah sistem manajemen paket aplikasi-aplikasi open source untuk Mac OSX. Dalam konteks MacPort, aplikasi dapat disamakan penyebutannya dengan istilah port. Di Linux saya biasa menyebut aplikasi (software) sebagai paket (package). Awalnya saya bingung memahami apa bedanya port dengan sistem manajemen paketnya Linux. Misalnya di RedHat Linux saya gunakan perintah rpm -qa untuk menampilkan semua package yang terpasang :

ttirtawi@centosdev01:~$ rpm -qa | grep vim
vim-common-7.2.411-1.8.el6.x86_64
vim-enhanced-7.2.411-1.8.el6.x86_64
vim-minimal-7.2.411-1.8.el6.x86_64
ttirtawi@centosdev01:~$ 

atau di Ubuntu/Debian saya gunakan dpkg -l.

ttirtawi@gbt733:~$ dpkg -l |  grep vim
ii  vim                                  2:7.3.547-4ubuntu1.1                      i386         Vi IMproved - enhanced vi editor
ii  vim-common                           2:7.3.547-4ubuntu1.1                      i386         Vi IMproved - Common files
ii  vim-runtime                          2:7.3.547-4ubuntu1.1                      all          Vi IMproved - Runtime files
ii  vim-tiny                             2:7.3.547-4ubuntu1.1                      i386         Vi IMproved - enhanced vi editor - compact version
ttirtawi@gbt733:~$ 

Bandingkan dengan perintah port bawaan MacPorts seperti contoh berikut ini :

ttirtawi@macmini:~ $ port installed | grep vim
  vim @7.4.258_0+huge (active)
ttirtawi@macmini:~ $ 

MacPorts menggunakan prinsip yang mirip dengan Ports yang dimiliki oleh FreeBSD. Kebingungan tadi memicu saya belajar lagi tentang FreeBSD Port. Setelah mencoba mempelajari FreeBSD Ports, saya makin bingung. Hmm mungkin lebih tepatnya saya menjadi tertarik memahami sistem kerja Port di FreeBSD. Di lingkungan OS FreeBSD ada perbedaan antara “port” & “package”. Definisi package adalah pre-compiled binary (aplikasi yang sudah “jadi” , sudah di-compile, tinggal pakai). Sementara port adalah kumpulan berkas Portfile, Makefile (atau berkas cmake) & patch yang digunakan untuk menghasilkan sebuah aplikasi melalui proses kompilasi source code. Kode sumber (source code) aplikasinya sendiri bisa saja diambil dari tempat lain. Misalnya aplikasi editor vim, source code-nya sendiri diambil dari website-nya vim. Ini bisa dilihat dari isi berkas Portfile-nya :

ttirtawi@macmini:MacPorts $ more /Users/ttirtawi/MacPorts/var/macports/sources/rsync.macports.org/release/tarballs/ports/editors/vim/Portfile 
# $Id: Portfile 119295 2014-04-22 15:35:47Z raimue@macports.org $

PortSystem          1.0

name                vim
set vim_version     7.4
set vim_patchlevel  258
version             ${vim_version}.${vim_patchlevel}
categories          editors
platforms           darwin freebsd
license             Vim GPL-2+
maintainers         raimue
description         Vi \"workalike\" with many additional features
long_description \
    Vim is an advanced text editor that seeks to provide the power of the   \
    de-facto Unix editor 'Vi', with a more complete feature set.

homepage            http://www.vim.org/

master_sites        http://ftp.vim.org/pub/vim/unix/
patch_sites         http://ftp.vim.org/pub/vim/patches/${vim_version}
distname            vim-${vim_version}
use_bzip2           yes
dist_subdir         vim/${vim_version}
worksrcdir          vim[strsed ${vim_version} {g/\.//}]
extract.only        vim-${vim_version}${extract.suffix}
...
...
...
ttirtawi@macmini:MacPorts $ 

Ketika saya memasang port/aplikasi tertentu, MacPorts akan mengunduh source code aplikasi tersebut., menambahkan patch yang diperlukan, melakukan kompilasi kode, memasang aplikasi hasilnya (executable binaries), serta memasang beserta aplikasi dependensinya. Karena ada proses kompilasi, memasang port terasa jauh lebih lama daripada memasang package di Linux. Sejauh ini kesimpulan saya baik port maupun package dapat diartikan sebagai aplikasi. Bedanya port memerlukan proses kompilasi sendiri. Ada lagi bedanya, kita bisa punya beberapa versi port aplikasi tertentu. Meskipun hanya 1 yang bisa aktif. Di Linux setahu hanya 1 versi package yang bisa dipasang. Bila ingin menggunakan versi lain, saya harus lakukan upgrade atau membuang dulu paket yang sudah ada.

Ok balik lagi ke MacPorts. MacPorts memerlukan aplikasi XCode & XCode Command Line Tools, keduanya tersedia di Mac App Store. Kita bisa memasang MacPorts menggunakan Mac instaler (*.pkg) atau memasangnya secara manual (melakukan kompilasi source code-nya).

Instalasi MacPorts Dengan pkg installer

Ini adalah catatan saya memasang MacPorts pada OSX Mavericks (10.9.2) secara manual. Saya lebih memilih cara ini karena lebih leluasa menentukan beberapa detail proses instalasi. Pertama saya perlu mengambil source code MacPorts dari websitenya MacPorts.

ttirtawi@macmini:~ $ curl -O https://distfiles.macports.org/MacPorts/MacPorts-2.2.1.tar.bz2
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  830k  100  830k    0     0   122k      0  0:00:06  0:00:06 --:--:--  189k
ttirtawi@macmini:~ $ 
ttirtawi@macmini:~ $ tar jxf MacPorts-2.2.1.tar.bz2 
ttirtawi@macmini:~ $ cd MacPorts-2.2.1
ttirtawi@macmini:MacPorts-2.2.1 $ 

Setelah diekstrak saya bisa mulai memasang MacPorts dengan 3 langkah kompilasi berikut ini :

ttirtawi@macmini:MacPorts-2.2.1 $ ./configure  --prefix=/Users/ttirtawi/MacPorts/   --with-no-root-privileges
ttirtawi@macmini:MacPorts-2.2.1 $ make
ttirtawi@macmini:MacPorts-2.2.1 $ make install

MacPort secara default akan terpasang pada /opt/local. Saya memilih untuk menyimpan aplikasi MacPorts di home, caranya dengan menggunakan opsi --prefix= saat menjalankan berkas configure. Saya memilih untuk memasang MacPorts tanpa hak akses root dengan menggunakan opsi --with-no-root-privileges. Tanpa opsi --with-no-root-privileges semua perintah MacPorts akan dimiliki oleh root seperti contoh berikut ini :

ttirtawi@macmini:MacPorts-2.2.1 $ ls -trl /Users/ttirtawi/MacPorts/bin/
total 448
-r-xr-xr-x  1 root  admin    2574 May 22 18:03 portmirror
-r-xr-xr-x  1 root  admin   10095 May 22 18:03 portindex
lrwxr-xr-x  1 root  admin       4 May 22 18:03 portf -> port
-r-xr-xr-x  1 root  admin  167464 May 22 18:03 port
-r-xr-xr-x  1 root  admin   37412 May 22 18:03 daemondo
ttirtawi@macmini:MacPorts-2.2.1 $ 

Ini artinya saya perlu menggunakan sudo tiap kali menjalankan perintah port. Dengan opsi --with-no-root-privileges, saya tidak perlu lagi menggunakan sudo :

ttirtawi@macmini:~ $ ls -tlr /Users/ttirtawi/MacPorts/bin/
total 448
-r-xr-xr-x  1 ttirtawi  staff    2574 May 22 18:06 portmirror
-r-xr-xr-x  1 ttirtawi  staff   10095 May 22 18:06 portindex
lrwxr-xr-x  1 ttirtawi  staff       4 May 22 18:06 portf -> port
-r-xr-xr-x  1 ttirtawi  staff  167464 May 22 18:06 port
-r-xr-xr-x  1 ttirtawi  staff   37412 May 22 18:06 daemondo
ttirtawi@macmini:~ $ 

Setelah MacPorts sukses terpasang, saya perlu memperbaharui daftar aplikasi (port tree) dengan menggunakan perintah di bawah ini :

ttirtawi@macmini:MacPorts-2.2.1 $ port -v selfupdate
--->  Updating MacPorts base sources using rsync
receiving file list ... done
base.tar

sent 58 bytes  received 1218655 bytes  162495.07 bytes/sec
total size is 4925440  speedup is 4.04
receiving file list ... done
base.tar.rmd160

sent 58 bytes  received 635 bytes  277.20 bytes/sec
total size is 512  speedup is 0.74
MacPorts base version 2.2.1 installed,
MacPorts base version 2.2.1 downloaded.
--->  Updating the ports tree
Synchronizing local ports tree from rsync://rsync.macports.org/release/tarballs/ports.tar
receiving file list ... done
ports.tar

sent 58 bytes  received 12289008 bytes  630208.51 bytes/sec
total size is 60989440  speedup is 4.96
receiving file list ... done
ports.tar.rmd160

sent 58 bytes  received 636 bytes  277.60 bytes/sec
total size is 512  speedup is 0.74
receiving file list ... done
PortIndex

sent 58 bytes  received 1490546 bytes  175365.18 bytes/sec
total size is 10589055  speedup is 7.10
receiving file list ... done
PortIndex.rmd160

sent 58 bytes  received 636 bytes  277.60 bytes/sec
total size is 512  speedup is 0.74
--->  MacPorts base is already the latest version

The ports tree has been updated. To upgrade your installed ports, you should run
  port upgrade outdated
ttirtawi@macmini:MacPorts-2.2.1 $ 

Untuk melihat aplikasi yang terpasang melalui MacPorts saya bisa gunakan perintah berikut ini :

ttirtawi@macmini:MacPorts-2.2.1 $ port installed
No ports are installed.
ttirtawi@macmini:MacPorts-2.2.1 $ 

Tentu tidak ada hasilnya karena saya baru saja memasang MacPorts.

Sebagai contoh saya akan memasang aplikasi Wireshark, saya bisa melakukannya dengan menggunakan perintah berikut ini (saya tidak menampilkan semua log instalasi) :

ttirtawi@macmini:MacPorts-2.2.1 $ port install wireshark

--->  Computing dependencies for wireshark
--->  Dependencies to be installed: adns glib2 gettext expat libiconv gperf ncurses libffi perl5 perl5.16 gdbm xz zlib gnutls autoconf m4 automake gmp libidn libtasn1 libtool nettle p11-kit curl-ca-bundle desktop-file-utils pkgconfig popt libxslt libxml2 gtk2 atk gobject-introspection cairo fontconfig freetype bzip2 libpng libpixman xorg-libXext xorg-libX11 xorg-bigreqsproto xorg-inputproto xorg-kbproto xorg-libXau xorg-xproto xorg-libXdmcp xorg-libxcb python27 db46 db_select libedit openssl python_select sqlite3 xorg-libpthread-stubs xorg-xcb-proto xorg-util-macros xorg-xcmiscproto xorg-xextproto xorg-xf86bigfontproto xorg-xtrans xorg-xcb-util xrender xorg-renderproto gdk-pixbuf2 jasper jpeg tiff gtk-doc docbook-xml docbook-xml-4.1.2 docbook-xml-4.2 xmlcatmgr docbook-xml-4.3 docbook-xml-4.4 docbook-xml-4.5 docbook-xml-5.0 docbook-xsl fop itstool gawk readline py27-libxml2 openjade opensp hicolor-icon-theme pango Xft2 harfbuzz graphite2 cmake shared-mime-info intltool gnome-common p5.16-getopt-long p5.16-pathtools p5.16-scalar-list-utils p5.16-xml-parser xorg-libXcomposite xorg-compositeproto xorg-libXfixes xorg-fixesproto xorg-libXcursor xorg-libXdamage xorg-damageproto xorg-libXi xorg-libXinerama xorg-xineramaproto xorg-libXrandr xorg-randrproto kerberos5 libcomerr libgcrypt libgpg-error libgeoip libpcap libsmi lua portaudio
--->  Fetching distfiles for adns
--->  Attempting to fetch adns-1.4.tar.gz from http://jog.id.distfiles.macports.org/macports/mpdistfiles/adns
--->  Verifying checksums for adns
--->  Extracting adns
--->  Applying patches to adns
...
...
...
...
--->  Fetching distfiles for wireshark
--->  Verifying checksums for wireshark
--->  Extracting wireshark
--->  Applying patches to wireshark
--->  Configuring wireshark
--->  Building wireshark
--->  Staging wireshark into destroot
--->  Installing wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
--->  Activating wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
--->  Cleaning wireshark
--->  Updating database of binaries: 100.0%
--->  Scanning binaries for linking errors: 100.0%
--->  No broken files found.
ttirtawi@macmini:MacPorts-2.2.1 $ 

Setelah wireshark sukses terpasang, saya bisa melihat wireshark sudah ada dalam daftar port tadi :

ttirtawi@macmini:MacPorts-2.2.1 $ port installed | grep wireshark
  wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11 (active)
ttirtawi@macmini:MacPorts-2.2.1 $ 

Saya juga bisa melihat informasi lengkap tentang wireshark (berikut dependensinya) dengan menggunakan perintah berikut ini :

ttirtawi@macmini:~ $ port info wireshark
wireshark @1.10.7 (net)
Variants:             [+]adns, [+]geoip, [+]gnutls, [+]ipv6, [+]libgcrypt, [+]libsmi, [+]lua, [+]rtp, [+]ssl, universal, [+]x11

Description:          A network analyzer that lets you capture and interactively browse Ethernet frames. Packet data can be read from a file, or live from a
                      local network interface.
Homepage:             http://wireshark.org/

Build Dependencies:   pkgconfig
Library Dependencies: glib2, libpcap, kerberos5, zlib, adns, gnutls, libgcrypt, lua, libsmi, libgeoip, portaudio, openssl, gtk2
Conflicts with:       wireshark-devel
Platforms:            darwin
License:              GPL-2 GPL-3
Maintainers:          opendarwin.org@darkart.com
ttirtawi@macmini:~ $ 

Informasi tentang dependensi aplikasi juga bisa dilihat dengan perintah berikut ini :

ttirtawi@macmini:~ $ port deps wireshark
Full Name: wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
Build Dependencies:   pkgconfig
Library Dependencies: glib2, libpcap, kerberos5, zlib, adns, gnutls, libgcrypt, lua, libsmi, libgeoip, portaudio, openssl, gtk2
ttirtawi@macmini:~ $ 

Untuk melihat berkas binary hasil port wireshark , saya bisa gunakan perintah berikut ini :

ttirtawi@macmini:~ $ port content wireshark
Port wireshark contains:
  /Users/ttirtawi/MacPorts/bin/capinfos
  /Users/ttirtawi/MacPorts/bin/dftest
  /Users/ttirtawi/MacPorts/bin/dumpcap
  /Users/ttirtawi/MacPorts/bin/editcap
  /Users/ttirtawi/MacPorts/bin/mergecap
  /Users/ttirtawi/MacPorts/bin/randpkt
  /Users/ttirtawi/MacPorts/bin/rawshark
  /Users/ttirtawi/MacPorts/bin/reordercap
  /Users/ttirtawi/MacPorts/bin/text2pcap
  /Users/ttirtawi/MacPorts/bin/tshark
  /Users/ttirtawi/MacPorts/bin/wireshark
  ....
  ....
  ....
  /Users/ttirtawi/MacPorts/share/wireshark/smi_modules
  /Users/ttirtawi/MacPorts/share/wireshark/text2pcap.html
  /Users/ttirtawi/MacPorts/share/wireshark/tpncp/tpncp.dat
  /Users/ttirtawi/MacPorts/share/wireshark/tshark.html
  /Users/ttirtawi/MacPorts/share/wireshark/wimaxasncp/dictionary.dtd
  /Users/ttirtawi/MacPorts/share/wireshark/wimaxasncp/dictionary.xml
  /Users/ttirtawi/MacPorts/share/wireshark/wireshark-filter.html
  /Users/ttirtawi/MacPorts/share/wireshark/wireshark.html
  /Users/ttirtawi/MacPorts/share/wireshark/ws.css
ttirtawi@macmini:~ $ 

Perintah di atas mirip dengan perintah “rpm -ql wireshark” di RedHat Linux atau perintah “dpkg -L wireshark” di Debian Linux.

Karena saya meletakkan MacPort di lokasi tersendiri (bukan di /opt/local), maka saya perlu memodifikasi .bash_profile seperti ini :

ttirtawi@macmini:~ $ cat .bash_profile 
export LC_ALL=en_US.UTF-8  
export LANG=en_US.UTF-8
export PATH="${PATH}:/Users/ttirtawi/MacPorts/bin:$PATH"
[[ -s ~/.bashrc ]] && source ~/.bashrc
ttirtawi@macmini:~ $ 

Ini supaya saya bisa mengakses aplikasi langsung tanpa perlu mengetikkan full path. Tanpa modifikasi $PATH saya akan mendapati error seperti ini :

ttirtawi@macmini:~ $ wireshark
-bash: wireshark: command not found
ttirtawi@macmini:~ $ 

Tanpa modifikasi $PATH saya akan direpotkan karena tiap kali memanggil aplikasi tersebut saya harus menggunakan full path-nya seperti ini :

ttirtawi@macmini:~ $ /Users/ttirtawi/MacPorts/bin/wireshark -v
wireshark 1.10.7 (Git Rev Unknown from unknown)

Copyright 1998-2014 Gerald Combs <gerald@wireshark.org> and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled (64-bit) with GTK+ 2.24.23, with Cairo 1.12.16, with Pango 1.36.3, with
GLib 2.40.0, with libpcap, with libz 1.2.8, without POSIX capabilities, without
libnl, with SMI 0.4.8, without c-ares, with ADNS, with Lua 5.2, without Python,
with GnuTLS 3.1.22, with Gcrypt 1.5.3, with MIT Kerberos, with GeoIP, with
PortAudio V19-devel (built May 21 2014 12:11:57), with AirPcap.

Running on Mac OS X 10.9.3, build 13D65 (Darwin 13.2.0), with locale
en_US.UTF-8, with libpcap version 1.5.3, with libz 1.2.8, GnuTLS 3.1.22, Gcrypt
1.5.3, without AirPcap.
       Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz

Built using clang 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40).
ttirtawi@macmini:~ $ 

Sekadar tambahan, Wireshark untuk Mac OSX bisa dipasang via MacPorts seperti contoh tadi atau lewat versi pre-compiled yang tersedia di websitenya Wireshark.