İlk akla gelenlerden başlayalım. `İkinci bir makinam var, test için onu kullanıyorum.` Hmmm... Biraz daha ekonomik olsun... `Boş bir partisyona test amacıyla ikinci bir sistem kurdum ve deneme yapacağım zaman o sisteme boot ediyorum.` Yalan, külliyen yalan (indirmek için dahi sabırsızlandığınız bir programı kurmak için iki saat reboot bekleyeceksiniz) ve şık değil. Gelelim doğru yönteme: yani `chroot` ortamı kurmak veya conan arkadaşımızın `güvenlik` konusunda `Apache`yi kafeste koşturmak` başlıklı yazısında kullandığı mükemmel Türkçe karşılıkla söyleyecek olursak `programı kafeste koşturmak`. Debian`ın aktif geliştiricilerinden Colin Walters kişisel sayfasında Debian`da kafes kurulumunu detaylı şekilde anlatmış. Çok kısaca özetleyecek olursak izah edilen yöntem size şu imkanı veriyor. Ctrl-Alt-F8 ile sekizinci konsola login olarak kafese giriyor ve hatta bu kafeste X Window`u çalıştırabiliyorsunuz. Şüphesiz ki bu sonuca Debian dışındaki dağıtımlarda da ulaşabilirsiniz. Fakat yöntemin en ağır ve sıkıcı kısmı olan `mount` edilebilir root dosya sistemi oluşturulması işleminin Debian`da ne kadar kolay ve zahmetsiz gerçekleştirildiğini göreceksiniz. İşin sırrı debootstrap woody /sid/ http://ftp.debian.org/debian/ olarak geçen satırda gizli. Yazarın ifadesiyle, kararsız sürüm sık değişiklik geçirdiğinden çoğu zaman `debootstrable` vasfında olmuyor ve bu yüzden hedef kafese önce kararlı sistemi kuruyor, daha sonra kaynak göstergelerini kararsız`a ayarlayarak apt-get update; apt-get dist-upgrade ile dağıtım güncellemesi yapıyoruz.
Kullanıcı cephesinden bakıldığında test ortamları `istenilebilir` iken geliştirici cephesinde bu `istenilebilirlik` hemen `zorunluluk` halini alacaktır. Debian`a özel bir örnek vereyim: Kararlı sürüm Woody`nin yüklü olduğu bir sisteminiz var ve bu ortamda geliştirdiğiniz -ve dolayısıyla bağımlılıkları Woody`ye göre ayarlanmış- bir paketi (1) kurarak denemeniz gerekiyor, (2) kararsız sürüme -sid- port etmek istiyorsunuz. Bütün bu isteklere Ctrl-Alt-F8 ile ulaşmak ne güzel :)
`Kafesli` test ortamları yukarıda örneklendirilen ortalama test ihtiyaçlarını karşılıyor. Delikanlı linux kullanıcısı reboot etmez (FreeBSD için bu eylem bir cinayet sebebidir :) Bir şartla... Kernel upgrade`i yapmıyorsanız... Peki bir `kernel developer` iseniz ne olacak? Zırt, pırt reboot edeceksiniz ve üstelik şanslıysanız bu işlem başarıyla gerçekleşecek. Derdin devası `user-mode linux` (UML) oluyor. Kendi başına bir makale konusu olan UML`ye şöyle kısaca değinelim. UML çok basitçe söylersek makinanızda -şişkin bir dosya içinde yaşayan- ve istediğiniz sayıda, her an boot edilebilir sanal makinalar kurmanıza imkan veriyor. Üstelik kafesli test ortamlarında Debian ise yine Debian`lı bir ortam kuruluyorken, user-mode linux`da Debian markalı box`ınıza Gentoo kurabiliyor ve beğenmediğinizde `rm -f gentoo` ile ondan kurtulabiliyorsanız (gelecekte yapmaya niyetlendiğim bir faaliyeti fazlasıyla ifşa eden bir cümle oldu ya neyse ;). Linux eğitimi verdiğiniz bir bilgisayar lab`ı hayal edin ve başına geleceklerden endişe duyan titrek bir ses: `şimdide temel unix komutlarından rm`i ...` UML kuruluysa endişeye mahal yok, isteyen istediğini yapsın. Üstelik her türlü ileri düzey ağ konusunu da deneyebilirler, çünkü UML`da sanal ağ kurabiliyorsunuz. UML için şu an resmi linux source`u içinde olmayan bir kernel modülü gerekiyor, fakat FM`de haber olarak verilen bir röportaj`dan aldığım bilgiye göre bu olağanüstü sistem yakın bir gelecekte kernel`a entegre edilecek.
Eminim ki FM ziyaretçilerinin birçoğu orada burada duydukları ve kesinlikle FM`de gördükleri ;) çok sayıda programı indirerek deneme yapıyordur. Bu denemelerin hali vakti yerinde olan kurulu sisteminize -`micros~1` ortamlarındaki boyutlarda olmasa da- zarar verme ihtimali vardır veya en azından doğru dürüst `uninstall` edilmeyerek çevre kirliliği oluşturabilirler. Official paketlerin kuruluyor olması kaydıyla Debian bu tip çevre kirliliğini asgari düzeyde tutan bir dağıtım olmasına rağmen kullanıcıların yanlış alışkanlıkları en mükemmel bir sistemi dahî umulmadık durumlarda bırakabilir. (BTW: Bu fırsatla -benim de bir zamanlar sıklıkla icra ettiğim- bir yanlış alışkanlıktan bahsedeyim. libfoo paketine bağımlılık gösteren bir foo paketini manuel olarak dpkg --purge foo ile silerseniz libfoo öksüz kalır. Bağımlılıklarını yeterince bilmediğiniz paketler için dselect veya daha güzeli aptitude --purge foo kullanın.) Test ortamları başlığı altında değerlendirdiğim yöntemler bu tür program denemeleri için güvenli bir ortam sunacaktır.