Distcc/tr

Distcc is a program designed to distribute compiling tasks across a network to participating hosts. It is comprised of a server,, and a client program,. Distcc can work transparently with ccache, Portage, and Automake with a little setup.

Eğer distcc'yi yeni bir Gentoo kurulumunda (bootstrap) kullanmak istiyorsanız makalenin ilgili bölümünü okuduğunuza emin olun.

Bağımlılıklar
Distcc kullanabilmek için ağınızdaki tüm bilgisayarların yakın GCC sürümlerini kullanması gerekmektedir. Örneğin, 3.3.x (x değişebilir) sürümlerini birlikte kullanmanız problem oluşturmaz ancak 3.3.x ile 3.2.x sürümleri derleme veya derlenmiş programların çalışması sırasında problem oluşturabilir.

Distcc Kurulumu
Distcc kurulumu yapmadan önce dikkat etmeniz gereken bazı noktalar var.

Distcc giden görevlerin gösterilmesi için bir arayüze sahip. Eğer GNOME masaüstü kullanıyorsanız use bayraklarınıza "gnome" eklediğinize emin olun. Eğer GNOME kullanmıyor ve monitör arayüzünü istiyorsanız bayraklarınıza "gtk" ekleyin.

Portage'ı Distcc Kullanmak için Ayarlama
Portage ile distcc kullanımı kolaydır. Aşağıdaki adımları uygulayarak paket kurulumlarında diğer bilgisayarlardan yardım alabilirsiniz:

Now, set the  variable and   variable as shown below. A common strategy is to set N as twice the number of total (local + remote) CPUs + 1 and M as number of local CPUs. In case distcc hosts are not available, or the ebuild requires local-only compile (e.g. gcc),  flag this will prevent spawning too many tasks.

Çalışacak İstemcileri Belirleme
Katılacak istemcileri ayarlamak için  komutunu kullanabilirsiniz. İşte örnek bir yapılandırma:

İstemci tanımlarına örnekler

Daha farklı yöntemler kullanabilirsiniz. Distcc yardım (man) sayfalarına bakmanızı öneririz.

Bulunduğunuz bilgisayarı da derlemeye dahil etmek istiyorsanız listeye "localhost" da eklemeniz gerek. Yavaş bir bilgisayar ise, işlemin genelini yavaşlatacağı için bulundurmamayı seçebilirsiniz.

Karışık gibi görünebilir ancak çoğu durumda 1. veya 2. satırın düzenlenmiş hali işinizi görecektir.

Çoğu kişi 3. veya 4. satırı kullanmayacağı için, detaylı bilgi için distcc dökümanlarına bakmanızı tavsiye ederiz, SSH üzerinden bağlantı sağlamayı da ilgili belgede bulabilirsiniz.

Örneğin önceki listede verdiğimiz ilk satırı uygulamak için:

dosyasını ihtiyacınıza göre düzenleyin ve  izinlerini yalnızca güvendiğiniz istemcilere verin. Ek güvenlik önlemi olarak hangi istemcilerin dinleneceğini  ile belirleyebilirsiniz. Güvenlik kaygıları için lütfen Distcc güvenlik belgesini inceleyin.

Şimdi işlem yapacak tüm bilgisayarlarda distcc servisini başlatalım:

Distcc'yi Automake ile Çalışması için Ayarlama
Bu işlem bazen Portage yapılandırmasından daha kolay. Yapmanız gereken şey  ortam değişkenine  'yi barındıran dizinden  önce  eklemek. Ancak ccache kullanıyorsanız ccache bölümünün ardına yerleştirmeniz gerek:

Bu komutu veya benzeri şekilde otomatik yüklenen bir dosyaya ekleyip her sisteme girdiğinizde çalışmasını sağlayabilirsiniz.

Ardından normalde  komutu ile iş yaparken,   tarzında (buradaki N bir sayıdır) kullanabilirsiniz. N değeri ağınızın hızına ve işlemci sayınıza göre değişecektir. Size en uyumlu değeri bulmak için deneme yapmanızı tavsiye ederiz.

Cross-Compiling (Çapraz derleme)
Cross-compiling is using one architecture to build programs for another architecture. This can be as simple as using an Athlon (i686) to build a program for a K6-2 (i586), or using a Sparc to build a program for a ppc. This is documented in our DistCC Cross-compiling Guide.

Adım 1: Portage'ı Yapılandırın
Yeni bilgisayarı Gentoo Linux CD'si ile başlatıp kurulum dökümanlarındaki adımlardan bootstrap'a kadar gelin. (Bootstrap için detaylı bilgiyi buradan bulabilirsiniz.) Ardından portage'ı distcc kullanmak için yapılandırın:

Adım 2: Distcc Kurulumu
Distcc'yi kurun:

Adım 3: Distcc'yi Yapılandırın
Distcc'yi yapılandırmak için  komutunu çalıştırın. Aşağıdaki komutta  ile başlayan yerleri DistCC derlemesine katılan cihazların IP adresi veya hostname adresi ile değiştirin:

DistCC artık bootstrap için kullanılabilir. Kuruluma normal olarak devam edin ve  komutunun ardından distcc'yi tekrar kurmayı unutmayın.

Bazı Paketler Distcc Kullanmıyor
Bazı paketleri derlerken işlemin dağıtılmadığını (distcc'nin kullanılmadığını) farkedebilirsiniz. Bunun sebebi paketin Makefile dosyasının paralel derlemeyi desteklememesi veya paket bakıcısının bilinen bir problemden dolayı distcc kullanımını pasif duruma getirmesi olabilir.

Bazen de distcc bir paketin kurulumunda hataya sebep olabilir. Bu tür bir durum yaşarsanız lütfen bize hata raporu gönderin.

Farklı GCC Sürümleri
Eğer cihazlarda farklı GCC sürümleri var ise, garip hatalar almanız muhtemeldir. Bunları aşmak için tüm cihazlarda aynı sürümü kullanmanız önerilir.

Son yapılan güncellemeler Portage'ın  yerine   kullanmasını sağlamakta. Bunun anlamı i686 mimarisini farklı mimariler ile (i386, i586 gibi) kullanıyorsanız problemler yaşanabilir. Çözüm olarak ortam değişkenlerine  ekleyebilir veya  dosyasında bunu elle belirtebilirsiniz.

-march=native
GCC 4.3.0 sürümünden itibaren derleyici  parametresi ile işlemcinizin türünü ve kullanılması gereken derleme seçeneklerini otomatik olarak tanımlayabiliyor. Bu durum  gibi farklı işlemcileri aynı anda kullanan bir sistem için problem oluşturmakta. Bu sebeple  kullanırken   veya   değerlerinizde   or   kullanmayın.

To know the flags that GCC would enable when called with, execute the following:

Distcc İzleme Araçları
Distcc iki tane izleme aracı ile gelmekte. Bunlardan metin tabanlı olanı. İlk kez kullanıyorsanız biraz kafa karıştırıcı olabilir ancak kullanımı kolaydır. Eğer herhangi bir parametre vermezseniz bir defa, herhangi bir numara -örneğin N- verirseniz her N saniyede bir çalışacaktır.

Diğer izleme aracı da  bayraklarınızda   veya   açık durumda ise derlenecek olan, GTK+ temelli grafiksel arayüzdür. Diğer dağıtımlarda genellikle  ismiyle bilinen bu arayüz Gentoo'da karışıklığa sebep olmamak için   ismindedir.

veya  için:

Portage'ın distcc kullanımını görmek için aşağıdaki yöntemleri kullanabilirsiniz:

Bilgiler
Bu makalede emeği geçen kişilere teşekkürler:


 * Lisa Seelye
 * Mike Frysinger
 * Erwin
 * Sven Vermeulen
 * Lars Weiler
 * Tiemo Kieft
 * nightmorph
 * Gürkan Gür (TR çeviri)