Ana sayfa Makale Mac”te açık kaynaklı yazılım çalıştırmak

Mac”te açık kaynaklı yazılım çalıştırmak

0

Açık kaynaklı yazılımları derlemek, kurulum yapmak ve istediğimiz şekilde konfigürasyonunu yapıp amaçlarımıza uygun kullanabilmeyi anlatıyoruz. PowerPC deyip geçmemeli; tarihi önemi olduğu kadar geleceğe de ışık tutan bir konudur PowerPC. Açık kaynaklı yazılım dünyasına hakim yazılımları geliştiren developer’ların çoğu 2001-2005 arasında hep Powerbook kullanıyorlardı. örneklerden birisi, Agile Web Development With Rails kitabının yazarlarından David Heinemeier Hansson’un Powerbook‘undan alınan screenshottur:


Bu screenshot’a özel not olarak Rails’in dili olan Ruby‘nin derlendiği işlemci ve işletim sistemi olarak powerpc-darwin8.2.0 dikkat çekiyor. Apple’ın 2005’ten sonraki Laptop’larına Intel ağırlığını koydu fakat 2015’e gelirken bu sefer ARM işlemcisi ağırlığını koymaya başladı. PowerPC ile ARM arasında çeşitli benzerlikler vardır, azaltılmış sayıda makina kodu (RISC) gibi örneğin. PowerPC’ye yazılım derlemiş bir kişi, ARM‘a derleme yaparken sadece Intel’e alışmış kişiye göre daha az engelle karşılaşacaktır. Bu gibi sebeplerden dolayı PowerPC için “geleceğe de ışık tutan bir konudur” demiştik, PowerPC yeni çıkan işlemcilere derleme yaparken bir güzel bir tecrübe birikimi sağlayabilir.

Ve GIMP ile ilgili son bir not. üniversite mühendislik bölümlerinde ilk sene Fizik, Kimya ve Matematik dersleri olması gibi açık kaynak yazılım dünyasında da bazı yazılımları derleyebilmek, kurabilmek, bash ve Terminal gibi araçları kullanabilmek, yazılım alanının fiziği kimyası matematiği gibidir. GIMP derlemek temel fizik gibi denilebilir. Yeni başlayan bir kişinin GIMP derlerken Mac ‘teki bash adlı komut satırı giriş programının kullanımı, yazılımların birbirine bağımlı tarzda geliştirilmesi, ilerde karşılaşılacak meselelere karşı iyi bir hazırlık olacaktır.

PHP’yi ek işlevlerle derlemek

PHP hiç bir ek işlev olmadan derlendiğinde, Magento gibi dev e-Ticaret paketlerinin gereksinim duyduğu mcrypt, curl ve gd gibi işlevleri desteklemiyor; deneyerek görmüştük. mcrypt’in desteklenmediğini Magento kurulumundaki kontrol adımında görebileceğimiz gibi, “phpinfo” ile Apache web sunucusunda PHP modülünün özelliklerinin listesinde mcrypt girişinin bulunmaması ile de doğrulayabiliriz. sourceforge.net/projects/mcrypt/files adresinden mcrypt ve yine aynı adresten libmcrypt adlı yazılım paketlerini indirip kurmuştuk fakat önce libmcrypt ‘i kurduk. Bunun sebebi mcrypt’in libmcrypt içindeki kodlara bağımlı olmasıdır. Peki developer’lar bu şekilde yazılımı 2 parçaya bölerek işimizi zorlaştırmaya mı çalışıyorlar? Bu konuda açıklama için, indirdiğimiz paketleri açıp README’deki açıklamalara bakıyoruz, önce Libmcrypt: Libmcrypt is a thread-safe library providing a uniform interface to access several block and stream encryption algorithms. Libmcrypt, birkaç şifreleme algoritmasına erişim sağlayan arayüz kütüphanesidir, derken: Mcrypt is a simple encryption program, intended to be replacement for the old unix crypt(1).The 2.6.x version of mcrypt can be compiled against libmcrypt 2.4.x and libmcrypt 2.5.x. Mcrypt, eski unix crypt’in yerini alan basit şifreleme programıdır ve libmcrypt ile birlikte derlenebilir diyor.

Böylelikle nlibmcrypt‘in eden önce derlenmesi gerektiği biraz anlam kazanıyor. Yazı dizisinin 4.bölümünde mcrypt’in ./configure komutu ile konfigürasyonunu yapıp derlemiştik ve başarılı derleme sonrası make install ile kurmuştuk. O sayede php-5.4.25’i mcrypt desteği ile derleyebileceğimizi umuyoruz. Hemen ~/Downloads altındaki php-5.4.25 klasörüne gidip: $ ./configure –with-apxs2=/usr/local/apache2/bin/apxs –with-mcrypt ile php’in mcrypt destekli konfigürasyonunu yapıp $ make ile derliyoruz. Başarılı bir derlemenin sonunda şöyle bir ekran görülmesi gerekli:

Son satır hariç, tabi ki. Son satırda ben (baştaki # işaretinden anlaşılacağı gibi) root kullanıcısı olarak libs klasörü altında oluşan libphp5.so adlı dosyayı, yazının 3.bölümünde kurduğumuz Apache Web Sunucusunun “modules” klasörü altına kopyaladım (bu arada ‘so’ Shared Object’in kısaltılmışıdır ve kaynaktan derlenmiş, aynı birden fazla program tarafından kullanılan kod formatıdır; Linux’ta da aynı format kullanılmaktadır.) Bu şekilde kopyalama, PHP’yi devreye almanın pratik bir yoludur. Ancak kopyalama sonrası, Apache’nin yeni PHP’yi kullanabilmesi için yeniden başlatılması da gerekmektedir: # /usr/local/apache2/bin/apachectl restart yazının 4.bölümünde karşılaştığımız ekranında gördüğümüz “mcrypt must be loaded” mesajınının gittiğini, Magento kurulumunu yeniden başlayarak şu ekranı görebilmemiz gerekli:

Bu ekranda görüldüğü gibi hedef tahtamızda 2 yazılım bileşeni kaldı: ‘curl’ ve ‘gd’ Bunlardan önce gd’yi ele alacağız. Fakat önce yazımızın 3.bölümünde Apache Web Sunucusunu yeniden başlatmanın alternatif yolu olarak kullandığımız ‘launchctl’ komutu ile ilgili küçük bir düzeltme yapmanın zamanı. launchctl’ye argüman olarak verdiğimiz /System/Library/LauncDaemons/com.diymacserver.apache2.plist dosyasının içeriğindeki <key>Disabled</key> <false /> satırlarını silin. Bu satır, Mac OS tarafından yanlış yorumlanarak Apache’yi launchctl’da unload ve load komut seçenekleri ile yeniden başlatırken httpd’nin durmasına yol açıyordu. Bu açıdan httpd’nin kesin başlaması için:

/usr/local/apache2/bin/apachectl restart komutunu tercih edin. GD Graphics Draw kısaltmasına sahip bir yazılım kütüphanesi olarak, PHP’nin jpeg, png ve font düzenleme işlemlerini yapabilmesini sağlayan PHP opsiyonudur ve devreye alınabilmesi için Mac’inizde libjpeg, libpng libfreetype ve libxpm yazılımlarının kurulu olması gereklidir. Yazının önceki bölümlerinde GIMP’i kaynağından derleyip Mac’inize kurduğuysanız bu yazılımlar zaten kurulmuştur; çünku GIMP’in derlenmesi için libjpeg, libpng libfreetype bağımlı bileşenlerdir ve yine XQuartz adlı (Mac OS’ye özel X Window Sistemi) yazılım da GIMP’in bağımlı bileşenidir ve libxpm’i içermektedir. GIMP’in derleyip kurmadığınızı varsayalım, GD için libjpeg ve XQuartz’ı kurmanız gerekecek:

xquartz.macosforge.org/landing ‘den Mac’inizde kurulu OS X versiyonuna uygun bir XQuartz versiyonu seçerek kurun; dmg formatında olduğu için zorluk yok. www.ijg.org/files/jpegsrc.v8c.tar.gz dosyasını da açıp ./configure && make && sudo make install ile kurun. Artık PHP’yi GD desteğiyle derleyebiliriz, bunun için konfigürasyon betiğine şu opsiyonları eklemeliyiz: –with-jpeg-dir=/usr/local/lib –with-png-dir=/usr/X11R6 –with-freetype-dir=/usr/X11R6 –with-xpm-dir=/usr/X11R6 –with-gd daha önce eklediğimiz opsiyonlar ile tam konfigürasyon betiği şöyle olacaktır; bash Terminal’de tek satır halinde: $ ./configure –with-apxs2=/usr/local/apache2/bin/apxs –with-mcrypt –with-jpeg-dir=/usr/local/lib –with-png-dir=/usr/X11R6 –with-freetype-dir=/usr/X11R6 –with-xpm-dir=/usr/X11R6 –with-gd Bu konfigürasyon başarılı şekilde tamamlandıktan sonra PHP’yi make ile yeniden derleyip oluşan yeni libphp5.so’yu Apache Modules altında devreye aldıktan sonra Magento kurulumunda takıldığımız ekranı refresh yapınca GD eksikliğinin gittiğini göreceğiz:

 

Geriye sadece ‘curl’ kaldı. curl adından da anlaşılabileceği gibi URL çekmeyle ilgili basit bir Unix programı. Fakat curl’u Internetten kaynağını bulup indirmek ve kurmayı denemeden önce Mac’imizde kurulu olup olmadığını kontrol etmenizde fayda var. özellikle Mountain Lion ‘dan itibaren Mac OS X’le birlikte gelen bu programın Mac’inizde olup olmadığını Terminal’de $ bash –version girerek anlayabilirsiniz curl 7.24.0 gibi versiyon belirten birkaç satır açıklamayla dönüyorsa kurulu demektir, dönmüyorsa curl.haxx.se/download.html sayfasından Mac OS X için olan versiyonu indirip kurmalısınız. Bu adımdan sonra PHP’ye curl desteğini eklemek son derece rahat; konfigürasyon betiğine şu opsiyonu ekleyip: –with-curl PHP’yi yeniden konfigüre edip, yeniden derleyince oluşan libphp5.so’yu Apache Modules klasörüne kopyaladıktan sonra ‘apachectl’ ile Apache Web Sunucusunu yeniden başlatın, Magento’nun kontrol adımını artık başarıyla geçebilmesi gerekli; Mac’te çıkan ekran şu şekilde:


PHP’yi Mac’imize kaynağından kurduk, PHP ile ne yapacağız?

Bu andan itibaren herkes kendi hedeflerine uygun şekilde PHP’yi kullanabilir. Kendim PHP’yi bazı açılardan oldukça verimsiz bir ortam olarak yorumlamaktayım. örneğin yukarda görüldüğü gibi Magento kurulumuna devam edip bu dünyanın “en büyük” açık kaynaklı e-ticaret uygulamasını kendi sunucumda kullanmaya başlayabilirdim ancak 2 senedir Magento’yu hiç kullanmıyorum. Opencart ve CS-Cart gibi diğer benzer PHP paketlerinden de uzak duruyorum. Bunun sebebi, 2000’lerde geliştirilmiş bu paketlerin oldukça hantal yapısı ile geliştirmek istediğimiz e-ticaret uygulamalarında çeşitli büyüklükte zorluklar getirmesi.

Kendi yaşadığım örneklerden: OpenCart ile yaptığım bir e-ticaret sitesinde müşterim 2 farklı marka adı altında giyim imalatı yaptığını ve ana sayfada logonun bulunduğu yere 2 farklı logo koymak istediğini belirtti fakat OpenCart admin panelde logo olarak sadece 1 resim yüklenebilir olduğu için görünüm şablonlarından (“view template”) logo alanını 2’ye çıkartıp, 2. logoyu direkt resim dizinleri altına yüklemek istedim ancak bu sefer şablondaki CSS kurallarına takılıp 2.logonun görüntülenmesini sağlayamadım. Bir başka müşterim, site ziyaretçilerinin sadece login oldukları zaman ürün fiyatlarını görebilmesini istedi. Her ziyaretçi farklı değil hepsi aynı fiyat listesini görecekti yani iş kolaydı buna rağmenm admin panel bu tarz şeyi desteklemediği için OpenCart’ta yine görüntü şablonlarında ve “controller” larda toplu değişiklik yapmam gerekti bu da büyük zaman ve enerji harcamak demekti.

Müşterim öyle bir değişiklik için dolgun ücret vermeyi kabul etseydi dahi bu türde dosyaları topluca değiştirme hareketleri kaynak kodların bir süre sonra hiç ellenemez, güncellenemez hale gelmesine ve beklenmedik hatalara maruz kalma ihtimaline yol açacaktı. Magento ise Zend Framework üzerine kurulmuş bir paket. Magento kullanmak aradaki Zend FW dolayısıyla en hızlı sunucuda dahi yavaş yanıt veren, büyük yer kaplayan, bakımı zor uygulamalara davetiye çıkarmak demek.

Karşılaştırma açısından Ruby on Rails ‘te bir uygulama Ruby (programlama dili) –> Rails (Uygulama çatısı) –> Uygulamamız şeklinde 3 katmanda hallolurken, Magento ile: PHP (programlama dili) –> Zend FW (uygulama çatısı) –> Magento (Uygulama Paketi) –> Uygulamamız şeklinde 4 katmanlık bir yapıyı beraberinde getiriyor.

Laravel

2014’te iyice yaygınlaşmaya başlayan Laravel adlı PHP altyapısı ile gerçekten kodlara hakim olabileceğiniz ve istediğiniz işlevi devreye alabileceğiniz bir PHP platformu var diyebiliriz. Son versiyonu 4 ile Laravel’in kendi altyapısını dahi istediğiniz şekilde uyarlamanız (“hack’lemeniz”) mümkün. Tüm bunlardan şu sonuç ta çıkarılabilir: Websitelerini geliştirirken programlama dili kadar kullanılan altyapı ve paket yazılımlar da önemli.

PHP ile ilgili son rötuşlar

Şu ana kadar PHP’yi hep bir Apache modülü olarak devreye aldık fakat Laravel gibi altyapılarda örneğin Laravel’i kurarken PHP’yi komut satırı (“command line”) olarak ta kullanmak gerekecektir. Bunun için PHP’yi derlediğimiz php-5.4.25 klasörü içinde # make install ile PHP’yi aynı zamanda /usr/local/bin/php şeklinde komut satırı olarak ta kuruyoruz ancak bash Terminal’in onu görebilmesi için: # mv /usr/bin/php /usr/bin/php_eski # ln -s /usr/local/bin/php /usr/bin/php ile kendi derlediğimiz PHP’nin bulunabilmesini sağlıyoruz.

Bir sonraki bölümde neler var

Yazımızın bir sonraki bölümünde Laravel (PHP) veya Rails (Ruby) ‘den birinin Mac’e kurulumu ile bulut-işlem (“cloud-computing”) alanındaki sorunların açık kaynak yazılımlar ile ne kadar etkili çözülebileceğini göreceğiz.

Yazar: ömer öztat, MacLine Dergisi

BİR CEVAP BIRAK

Please enter your comment!
Please enter your name here