Jumat, Oktober 26, 2007

Mengkompilasi Program di Linux

Anda pemula di Linux dan ingin tangan anda kotor? Kebanyakan dari anda, termasuk saya, bukanlah programmer, tetapi itu bukan berarti kita tidak bisa menikmati manfaat dari open source, dan bahkan memberikan kontribusi. Itu juga bukan berarti bahwa kita belum beruntung ketika terjadi kesalahan saat melakukan kompilasi. Kompilasi program biasanya sangat sederhana; tidak ada yang perlu dicemaskan dan pastinya tidak akan terlalu sulit daripada membuat program itu sendiri, tetapi kompilasi tidak digaransi 100%. Berikut ini adalah petunjuk kompilasi bagi pemula. Hal ini berarti 90% solusi bagi mereka yang mulai mengenal Linux.
Cepat atau lambat, setiap orang pasti akan mendownload sebuah program dalam bentuk kode sumber dan mengkompilasinya. Walaupun anda mungkin penggemar berat Red Hat atau Debian, pada akhirnya anda akan menemukan sebuah program yang terlalu tua, atau terlalu baru, dan mencarinya dalam bentuk precompiled binary. Sayangnya kode tersebut tidak selalu dapat dikompilasi, apapun yang anda lakukan. Ingat bahwa kebanyakan program-program di Linux masih dalam tahap beta. Kabar baiknya adalah bahwa prosentase dari program yang dapat dikompilasi tanpa masalah telah meningkat secara signifikan pada lima tahun terakhir, dan ada sesuatu yang dapat anda lakukan untuk "memperbaiki" kode yang tidak dapat dikompilasi, tanpa harus menjadi seorang programmer.
Setelah anda mendownload: sekarang anda memiliki beberapa buah tarball (file dalam bentuk tar.gz) dalam harddisk anda. Pertama kali yang harus anda lakukan adalah mengekstrak dan untar ke sebuah direktori. Pada umumnya, program di-untar ke dalam direktori /usr/src. Ini akan menjaga semua kode sumber berada pada satu tempat sehingga anda dapat membersihkannya jika sudah tidak digunakan lagi, juga untuk mengetahui versi berapa dari program yang telah anda kompilasi. Anda harus menjadi root untuk dapat menggunakan direktori ini. Program tar di Linux dapat mengekstrak dan untar sebuah file secara bersamaan jika file tersebut dikompres dengan menggunakan gzip. Jika anda memiliki sebuah file yang bernama filename.tar.gz, anda harus masuk ke direktori /usr/src dengan perintah cd, dan ketikkan:
tar -xzvf /{path to file}/{filename.tar.gz} [Enter]
Perintah tersebut akan melakukan ekstrak dan untar. Penjelasan dari opsi yang digunakan adalah sebagai berikut:
x - untar file z - unkompres (ekstrak) file v - verbose - sehingga anda bisa mengetahui apa yang sedang terjadi f - menunjukkan file yang akan di-untar
Jika anda menggunakan Netscape untuk mendownload file tersebut, mungkin anda akan mendapatkan pesan kesalahan. Kadang-kadang Netscape akan langsung mengekstrak file tarball hasil download. Sehingga jika anda mencoba untuk meng-untar file tersebut seperti yang dijelaskan di atas, mungkin anda akan mendapatkan pesan berikut:
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors
Gunakan perintah yang sama, namun hilangkan opsi z. Sehingga perintah di atas menjadi seperti berikut ini:
tar -xvf /{path to file}/{filename.tar.gz} [Enter]
Ada juga file-file yang menggunakan kompresi bzip2, sehingga file anda akan terlihat seperti berikut : the-program.tar.bz2. Opsi z untuk tar tidak akan bekerja. Cara termudah untuk meng-untar file ini adalah dengan mengetikkan: bunzip2 the-program.tar.bz2. Perintah ini akan menghasilkan file the-program.tar, yang bisa di-untar dengan perintah:
tar -xvf /{path to file}/{filename.tar.gz} [Enter]
Setelah untar: masuk (cd) ke direktori yang telah dihasilkan saat anda melakukan untar. Perhatikan file-file di direktori tersebut dengan perintah ls. Anda harus membaca file README dan INSTALL. Jangan berpikir bahwa anda akan mendapatkan bantuan dari orang lain jika anda belum membaca file-file tersebut. Itulah alasan mengapa RTFM menjadi istilah yang paling sering digunakan di Internet. File README dan INSTALL pasti akan mengajarkan kepada anda bagaimana mengkompilasi dan menginstal sebuah program.
Untuk mengkompilasi, berikan perintah "make". Agar "make" bisa melakukan kompilasi, anda harus memiliki sebuah file yang bernama Makefile (anda bisa saja memberikan perintah make diikuti dengan opsi-opsi tertentu, namun itu diluar topik bahasan artikel ini). Ada tiga cara yang umum digunakan untuk memulai kompilasi : cara sederhana, Imake, dan configure.
Kompilasi sederhana: Jika anda melihat sebuah file yang bernama Makefile - bukan Imake atau configure, anda harus menggunakan metode ini untuk melakukan kompilasi. Metode ini memiliki tingkat kesulitan yang paling tinggi karena tidak ada yang dikonfigurasi khusus untuk komputer anda. Biasanya, file README dan INSTALL akan membantu anda untuk mengedit beberapa file sehingga program tersebut dapat dikompilasi. Biasanya anda kemudian mengetikkan :
make [Enter]
make install [Enter]
dan jika segala sesuatunya berjalan dengan baik, anda sekarang dapat menjalankan program tersebut.
Imake: Jika anda melihat isi direktori (dengan perintah ls) dan terdapat file Imake dan tidak ada Makefile, maka anda harus menggunakan metode ini. Ini adalah cara tertua untuk melakukan setup dan kompilasi. Ketikkan perintah:
xmkmf [Enter]
make [Enter]
make install [Enter]
Configure: Gunakan metode kompilasi ini jika terdapat file yang bernama configure di dalam direktori. Ini adalah cara termudah untuk mengkompilasi dan memiliki kemungkinan keberhasilan tertinggi. Pada dasarnya ia akan mengecek keseluruhan sistem anda untuk setiap kemungkinan pustaka dan file-file pendukung untuk meyakinkan bahwa anda bisa mengkompilasi program tersebut, dan kemudian membuat Makefile dengan informasi yang tepat. Untuk mengkompilasi, ketikkan :
./configure [Enter]
make [Enter]
make install [Enter]
Perhatikan tanda ./ di depan perintah pertama. Ketika anda mengetikkan sebuah perintah, shell yang anda gunakan akan mencari file perintah tersebut di path. Shell tidak mulai mencari dari direktori kerja anda, sehingga jika ./ (yang berarti direktori kerja yang sedang anda gunakan) tidak termasuk di path, walaupun ls dapat melihat file tersebut, shell anda tidak dapat melihatnya. Shell dapat mengeksekusi make karena biasanya file perintah make berada di /usr/bin yang termasuk dalam path anda. Untuk melihat path di sistem anda, ketikkan :
echo $PATH [Enter]
Jika ada kesalahan :
Penyebab utama kegagalan kompilasi adalah adanya file-file yang tidak ditemukan. Hampir semua program bergantung pada program/file/pustaka pendukung lain. Jika mereka tidak diketemukan, program tidak dapat dikompilasi. File README/INSTALL seharusnya telah memberitahu anda file-file apa saja, dan versi berapa, yang anda butuhkan untuk mengkompilasi program. Ingat bahwa versi yang salah dapat membunuh anda sama seperti anda sama sekali tidak memiliki file tersebut. Biasanya anda akan mengetahui sendiri apa masalahnya, sebab pesan kesalahan pada akhir kompilasi akan memberitahu anda bahwa ia tidak dapat menemukan beberapa file. Ingat sekali lagi bahwa kadang-kadang anda memiliki file yang dibutuhkan, tetapi tidak berada di tempat yang dicari oleh Makefile. Gunakan program instalasi distribusi Linux anda, misalnya RPM, dan periksalah apakah anda memiliki file yang hilang. Jika tidak, carilah di Internet. Jika anda memang memilikinya, dan itu adalah versi yang benar, periksa Makefile untuk melihat dimana seharusnya file tersebut berada. Sebagai contoh, katakanlah file moc berada di /usr/local/bin, namun Makefile mengatakan bahwa moc=/opt/bin/moc. Lalu edit Makefile (dengan menggunakan vi atau editor lain yang anda sukai) dan ubahlah sehingga sama dengan lokasi file tersebut di sistem anda.
Masalah lain yang paling sering ditemui adalah tidak ditemukannya file-file header. Kebanyakan file di direktori sumber program memiliki baris yang terlihat seperti ini :
#include
#include
#include
#include
File-file "h" (atau header) tersebut harus ada di dalam komputer anda. Minimal, cek apakah anda memiliki file header kernel dengan perintah ls /usr/include/linux/. Jika anda memiliki pustaka-pustaka yang telah terinstal, seperti gtk, yakinkan bahwa anda juga telah menginstal file-file devel. Terkadang memiliki banyak versi untuk pustaka yang sama dapat menyebabkan masalah, sebab tiap versi bisa meletakkan file-file headernya di mana saja dan anda tidak akan tahu file mana yang digunakan saat kompilasi.
Jika anda sudah membuat semua perubahan yang diperlukan pada Makefile dan telah memiliki semua pustaka dan file-file header yang dibutuhkan, namun tetap saja program tersebut tidak dapat dikompilasi, lakukan urutan langkah berikut :
1. Jika anda mendownload program dari sebuah situs yang bukan situs utama dari program tersebut, pergilah ke situs utamanya dan perhatikan apakah ada versi terbaru yang tersedia.
2. Pergi ke www.dejanews.com dan cari program yang anda butuhkan. Kemungkinan ada orang lain yang memiliki masalah yang sama dan mengirimkan solusinya.
3. Jika semua cara gagal, kirimkan email ke penulis program. Kebanyakan penulis program sangat tertarik untuk meningkatkan programnya dan laporan adanya bug atau saran perbaikan biasanya diterima dengan senang hati (ingat, ini Linux, bukan program komersial). Ingat, laporan bug dari anda sebaiknya tidak hanya berisi "program ini tidak dapat dikompilasi"! Saya biasanya mengirimkan sepuluh baris terakhir atau lebih dari pesan yang muncul ketika kompilasi sehingga penulis program dapat mengetahui betul dimana letak kesalahannya. Jika saya sangat menyukai program tersebut, saya akan mengirimkan email ke penulisnya setiap kali muncul versi baru dan memberikan sebanyak mungkin saran yang dapat saya berikan. Mohon dicatat: programmer juga manusia biasa, mereka juga butuh liburan, berpindah pekerjaan dan lokasi, dan beberapa bahkan harus masuk sekolah. Jadi jangan mengharapkan balasan yang cepat.
Terakhir, ada beberapa program yang memiliki cara kompilasi yang unik, misalnya qt dan kernel. Untuk mengkompilasinya, saya ingatkan sekali lagi, baca file README dan INSTALL!

Tidak ada komentar: