Disclaimer :
Dokumen ini sudah usang dan tidak diperbarui lagi.
|
Dokumentasi Distcc Gentoo
1.
Pendahuluan
Apa itu distcc?
Distcc merupakan sebuah program yang dirancang untuk mendistribusi tugas
kompilasi ke komputer yang ikut berpartisipasi di sebuah jaringan. Program
ini terdiri dari sebuah server, distccd, dan sebuah program klien,
distcc. Distcc dapat bekerja secara tranparan dengan ccache, Portage, dan Automake dengan
sedikit setup.
Menggunakan distcc untuk bootstrap
Jika anda berencana menggunakan distcc untuk membantu anda dalam proses
bootstrap instalasi Gentoo, pastikan anda membaca seksi Menggunakan distcc untuk bootstrap, yang terletak
di bagian bawah dari dokumen ini.
2.
Setup
Dependensi
Untuk menggunakan Distcc, seluruh komputer di jaringan anda harus memiliki
versi GCC yang sama. Sebagai contoh, anda boleh mencapurkan versi 3.3.x (x bisa
apa saja), tetapi anda tidak boleh mencampurkan versi 3.3.x dengan 3.2.x karena
akan menyebabkan error kompilasi atau error runtime.
Instalasi Distcc
Ada beberapa opsi yang perlu anda ketahui sebelum anda mulai menginstal distcc.
Distcc memiliki sebuah pemantau grafis untuk memantau tugas yang dikirimkan
oleh komputer anda untuk kompilasi. Jika anda menggunakan Gnome, maka tambahkan
'gnome' pada flag USE anda. Tetapi, jika anda tidak menggunakan Gnome dan tetap
ingin memiliki pemantau distcc, maka anda perlu menambahkan 'gtk' pada flag USE
anda.
Daftar Kode 2.1: Instalasi distcc |
# emerge distcc
|
Penting:
Jangan lupa, anda harus menginstal distcc pada setiap komputer yang ikut
berpartisipasi.
|
Menyiapkan Portage Untuk Menggunakan Distcc
Menyiapkan Portage untuk menggunakan Distcc sangat mudah. Jalankan beberapa
langkah berikut ini pada setiap sistem yang akan berpartisipasi pada kompilasi
terdistribusi:
Daftar Kode 2.2: Mengintegrasikan Distcc dan Portage |
# emerge distcc
# nano -w /etc/make.conf
MAKEOPTS="-jN"
FEATURES="distcc"
|
Menentukan Host yang Berpartisipasi
Gunakan perintah distcc-config untuk mengeset daftar host. Berikut ini
sebuah contoh dari beberapa host yang mungkin berada pada daftar anda:
Daftar Kode 2.3: Contoh definisi host |
192.168.0.1 192.168.0.2 192.168.0.3
192.168.0.1/2 192.168.0.2 192.168.0.3/10
192.168.0.1:4000/2 192.168.0.2/1 192.168.0.3:3632/4
@192.168.0.1 @192.168.0.2:/usr/bin/distccd 192.168.0.3
|
Kelihatannya rumit, tetapi biasanya contoh pada baris 1 atau 2 dapat anda
gunakan.
Karena kebanyakan orang tidak akan menggunakan baris 3 atau 4, bacalah dokumentasi
distcc (man distcc) untuk info lebih lanjut.
Sebagai contoh, untuk menggunakan baris 1 dari contoh di atas:
Daftar Kode 2.4: Contoh perintah untuk mengeset host |
# /usr/bin/distcc-config --set-hosts "192.168.0.1 192.168.0.2 192.168.0.3"
|
Edit /etc/conf.d/distccd sesuai dengan kebutuhan anda dan pastikan
untuk mengeset --allow untuk hanya mengijinkan host yang anda percaya.
Untuk tambahan keamanan, anda juga perlu menggunakan --listen untuk
memberitahukan daemon distcc IP apa saja yang harus didengarkan (untuk sistem
multi-home). Info lebih lanjut tentang keamanan distcc bisa anda dapatkan di
Distcc Security Design.
Penting:
Penggunaan --allow dan --listen sangatlah penting. Bacalah manual distccd atau
dokumentasi di atas untuk info lebih lanjut.
|
Sekarang jalankan daemon distcc pada seluruh komputer yang berpartisipasi:
Daftar Kode 2.5: Menjalankan daemon distcc |
# rc-update add distccd default
# /etc/init.d/distccd start
|
Mensetup Distcc agar Bekerja dengan Automake
Pada beberapa kasus, hal ini lebih mudah daripada setup untuk Portage. Yang
perlu anda lakukan adalah meng-update variabel PATH anda agar berisi
/usr/lib/distcc/bin di depan direktori yang berisi gcc
(/usr/bin). Tetapi, terdapat pengecualian. Jika anda menggunakan
ccache, anda harus meletakkan distcc setelah ccache:
Daftar Kode 2.6: Mengeset path anda |
# export PATH="/usr/lib/ccache/bin:/usr/lib/distcc/bin:${PATH}"
|
Kemudian, jika anda biasanya mengetikkan make, maka anda sekarang perlu
mengetikkan make -jN (N merupakan integer). Nilai N tergantung kepada
jaringan anda dan tipe komputer yang anda gunakan untuk mengkompilasi. Cobalah
setting anda untuk menemukan nomor yang memberikan performa terbaik.
3.
Cross-Compiling
Cross-compiling digunakan oleh sebuah arsitektur untuk membangun program untuk
arsitektur lain. Misalnya menggunakan Athlon (i686) untuk membangun program
untuk K6-2 (i586), atau menggunakan Sparc untuk membangun program untuk PPC.
Hal ini didokumentasikan di Panduan Cross-compiling DistCC.
4.
Menggunakan Distcc untuk Bootstrap
Langkah 1: Konfigurasi Portage
Boot komputer anda dengan LiveCD Gentoo Linux dan ikuti petunjuk instalasi
sampai bagian bootstrap. (Baca FAQ
Gentoo untuk info lebih lanjut tentang bootstrap.) Lalu konfigurasikan
Portage untuk menggunakan distcc:
Daftar Kode 4.1: Setup Awal |
# nano -w /etc/make.conf
FEATURES="distcc"
MAKEOPTS="-jN"
|
Daftar Kode 4.2: Mengeset path anda |
# export PATH="/usr/lib/ccache/bin:/usr/lib/distcc/bin:${PATH}"
|
Langkah 2: Menginstal Distcc
Instal distcc:
Daftar Kode 4.3: Menginstal distcc pada komputer baru |
# USE='-*' emerge --nodeps sys-devel/distcc
|
Langkah 3: Setup Distcc
Jalankan distcc-config --install untuk men-setup distcc:
Daftar Kode 4.4: Setup akhir distcc |
# /usr/bin/distcc-config --set-hosts "localhost host1 host2 host3 ..."
|
Sekarang distcc telah di-setup untuk bootstrap. Lanjutkan dengan petunjuk
instalasi resmi dan jangan lupa untuk meng-emerge kembali distcc
setelah emerge system. Hal ini untuk memastikan agar seluruh dependensi
yang anda inginkan ikut terinstal.
Catatan:
Selama proses bootstrap dan emerge system, distcc mungkin kelihatannya
tidak digunakan. Hal ini disebabkan oleh beberapa ebuild yang tidak dapat
menggunakan distcc, untuk itu distcc dinonaktifkan.
|
5.
Troubleshoot
Beberapa Paket Tidak Menggunakan Distcc
Ketika anda meng-emerge beberapa paket, anda akan melihat bahwa sebagian dari
paket-paket tersebut tidak didistribusikan (dan tidak dibangun secara paralel).
Hal ini bisa terjadi karena Makefile paket tersebut tidak mendukung operasi
paralel atau sang maintainer dari ebuild tersebut dengan sengaja menonaktifkan
operasi paralel karena beberapa masalah.
Terkadang distcc dapat menyebabkan sebuah paket gagal dikompilasi. Jika hal ini
terjadi, tolong laporkan kepada kami.
Versi GCC yang Bercampuran
Jika anda memiliki versi-versi GCC yang berbeda pada host-host anda,
kemungkinan besar anda akan mendapatkan masalah-masalah aneh. Solusinya adalah
dengan memastikan agar semua host menggunakan versi GCC yang sama.
Update Portage yang terbaru telah menjadikan Portage menggunakan
${CHOST}-gcc sebagai ganti gcc. Artinya, jika anda menggunakan
komputer i686 dengan jenis lain (i386, i586) anda akan mendapatkan masalah.
Anda dapat mengatasinya dengan export CC='gcc' CXX='c++' atau menambahkan
baris tersebut di /etc/make.conf.
Penting:
Dengan melakukan ini, berarti anda telah mengubah beberapa tingkah laku Portage
dan mungkin akan menyebabkan beberapa masalah nantinya. Hanya lakukan jika anda
mencapur CHOST.
|
6.
Tambahan-tambahan Distcc
Pemantau Distcc
Distcc memiliki dua pemantau. Pemantau berbasis teks akan selalu dibangun dan
dinamakan distccmon-text. Menjalankan pemantau ini untuk pertama kali
cukup membingungkan, tetapi sebenarnya sangat mudah digunakan. Jika anda
menjalankan program ini tanpa parameter apapun, maka ia hanya akan berjalan
sekali. Tetapi, jika anda menambahkan sebuah nomor, maka program ini akan
meng-update dirinya setiap N detik, dimana N merupakan argumen yang anda
tambahkan tadi.
Pemantau lainnya hanya akan dibangun jika anda mengaktifkan flag gtk
atau gnome pada flag USE anda. Pemantau yang satu ini berbasis
GTK+, berjalan di lingkungan X dan cukup cantik. Untuk Gentoo, pemantau GUI
ini dinamakan distccmon-gui agar tidak membingungkan. Distro lain
mungkin akan menamakannya distccmon-gnome.
Daftar Kode 6.1: Menjalankan Pemantau |
# distccmon-text N
# distccmon-gui
# DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-text N
# DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-gui
|
Penting:
Jika direktori distcc anda berada di tempat lain, gantikan variabel DISTCC_DIR
dengan yang sesuai.
|
Isi dokumen ini dilisensikan dengan lisensi Creative Commons -
Attribution / Share Alike.
|