Sunday, October 23, 2005

CVS Nasıl Kurulur - SSH Kullanarak

Öteki yazılarımızda CVS özelliklerinden bahsettik. Bu yazımız, sistem idarecileri için. CVS sistemini kurmanın birkaç değişik yolu olabilir; burada sunacağım yöntem SSH kullanıyor. Basit ve güvenilir olduğu için tavsiye ederim.

İlk önce CVS programını indirelim. Solaris için www.sunfreeware.com adresinden, ya da CVS'i silbaştan derlemek için, ftp://ftp.gnu.org/gnu/non-gnu/cvs/cvs-1.11.tar.gz adresinden size lazım olan dosyaları alabilirsiniz.

Eğer silbaştan derleme yapıyorsanız, TAR dosyasını açın, ve ortaya çıkan dizin içine cd ederek gidin. Sonra şunu işletin:
./configure
make
make install

Kullanıcı Yaratmak

'cvs' adlı bir Unix gurubu yaratın. Ayrıca, CVS kullanacak her programcı için, ayrı bir Unix kullanıcısı yaratmanız lâzım.

Deneme Havuzu

Kurduğumuz CVS programını denemek için, /tmp/deneme1 adlı bir dizin yaratın. Kaynak kod havuzu bu dizin altina gidecek. Dizin sahipliğini cvs gurubuna verin. Ayrıca, sahip gurup için dizini okunur/yazılır hale getirin. Sonra aşağıdaki komutu işletin:
$ cvs /tmp/deneme1 init

CVS servisi

root olarak servis sistemine girin ve aşağıdaki satırları inetd.conf dosyasına ekleyin.
cvspserver stream tcp nowait root /usr/local/bin/cvs cvs -b /usr/local/bin pserver

Sonra, tekrar root olarak /etc/services dosyasina girin. Şunu ekleyin:
cvspserver      2401/tcp

En son inetd işlemini (process) HUP edin (tekrar baslatin yani). Şu komutu kullanabilirsiniz: kill -HUP (islem nosu).

sshd işleminin calıştığını kontrol edin. Kutlarım, sunucu tarafındaki işiniz bitti.

Bağlanan kullanıcı sistemler için

CVS'e bağlanan sistemler için bazı ayarlamalar lazım. Her CVS kullanıcısı, öncelikle hangi havuzda işlem yapacağını belirtmeli. cvs -d (havuz_ismi) seçeneği ile bunu rahatça yapabilir, ya da CVSROOT çevre degişkenini tanımlayabilir, böylece sürekli -d kullanmasına gerek kalmaz.

Genelde CVSROOT yöntemini kullanmanızı tavsiye ederim.

Eğer kod havuzu yerel ise (aynı makina üzerinde yani), o zaman
export CVSROOT=/tmp/deneme1
kullanılabilir.

Fakat havuz ile kullanıcı ayrı sistemlerde ise (ki umumiyetle böyle olur), o zaman
$ export CVSROOT=:ext:remoteuser@hostname:/tmp/deneme1
ve
$export CVS_RSH=ssh
kullanmak lâzımdırr.

En son satır, bağlantı protokolu icin SSH kullanılmasını belirtir. Eger bunu boş bırakırsanız, rsh kullaıllacaktır. "ext:" demek 'external' kelimesinden gelir, yani 'dışarıda' demektir. Kod havuzunun dışarıda olmasının sebebi ile ext kullanmak zorunda kaldık.

Kullanıcı Denemesi

Kullanıcı makinasında $HOME dizinine gidin ve $HOME altında yeni bir 'çalışma' dizini yaratın. İsmi 'benim_projem' olsun mesela. Sonra, aşağıdaki komutları işletin.
$ mkdir benim_projem
$ cd benim_projem
$ cvs update .

En son komut, CVS havuzunda olan bütün kodları alıp, benim_projem altına koyacaktır. Öteki CVS komutları için yardım dosyalarına başvurun.

Yukarıdaki tariflerden sonra, SSH üzerinden havuza erişsim mümkün olacak. Fakat, SSH kullandığınız için sistem sizden habire şifre girmenizi isteyecektir. Merak etmeyin, bu problemin de bir kestirmesi var. SSH programı, 'şifresiz giriş' denen kavramı destekliyor. Tam bize lazım olan teknoloji.. Nasıl kurulacağını ekteki yazıdan okuyabilirsiniz.

Sorun Çıkarsa

Ekteki problemler çıkabilir.


* 2401 portu ile ilgili problemler: Bazen kullanıcı sistemi, uzaktaki sistemini 2401 nolu portuna erişemeyebilir. Bunun değişik sebepleri olabilir, belki sistem idarecileri güvenlik için o portu kapattılar. Kontrol etmek icin "telnet havuz_bilgisayar_ismi 2401" komutunu işletin. Eğer hata yoksa port açık demektir.
* End-of-file mesajları: Eğer CVS_RSH değişkeni doğru tanımlanmamış ise bu problemler çıkabilir. Değişkene değer yükledikten sonra belki export etmeyi unuttunuz.

No comments: