28
Oca

Özgür yazılım dediğiniz sadece Linux, Linux dediğiniz de sadece Pardus değildir. Bunu biliyor muydunuz?

Dün, Pardus Geliştirici Listesi'nde Semen CİRİT tarafından yazıldığı üzere; Pardus 2011 sürümü için herhangi bir güncelleme yapılmayacak. Bu, 2011 sürümünün "öldüğü" anlamına geliyor. Elimizde yeni bir sürüm haberi de yok. Bu durumda, "Pardus projesi öldü mü?" sorusu akıllara geliyor ki, bunu da zaman içerisinde göreceğiz.

Proje bu noktaya kadar nasıl geldi ayrı bir konu, ancak ben ayrı bir konudan bahsetmek istiyorum; her şey bitmedi arkadaşlar...


Şu an Özgürlükİçin.com'da, ilgili haberin başlığı altında yazılan yorumlara, Kullanıcı Listesi'nde yazılanlara ve Twitter'da yazılanlara bakıyorum da, biraz üzülüyorum. Bazı şeyler pek anlaşılamamış.

Pardus projesi olur da tam anlamıyla sonlanırsa, hiç kimse Windows kullanmak zorunda değil. Hatırlamaya çalışın; Ubuntu, Mint, Fedora ve daha onlarca Linux dağıtımı mevcut; bunları da kullanabilisiniz. Hatırlamaya çalışın; Mozilla Firefox, LibreOffice, ClementinePidginBlender, GiMP, Audacity, Scribus ve daha onlarca özgür yazılımı dilediğiniz işletim sisteminde özgürce kullanabilirsiniz. Yıllar boyunca yayınladığımız e-dergiler ile, podcast'ler ile bahsetmek istediğimiz şey; sanırım "özgür yazılımın her platformda varolabildiği" ve kullanıcıların bu felsefeyi benimsemesiydi.

Bunları unutmayın.

Kendi adıma konuşayım. Son iki yıldır ağırlıklı olarak Mac OS X üzerinde çalışıyorum ki okulumda kullandığım uygululamalar bana bunu gerektiriyor. Buna karşın Mozilla FirefoxLibreOfficeClementine ve Audacity gibi uygulamalar hâlâ gündelik bilgisayar kullanımımda elimin altındaki uygulamalar. Özgür yazılım kullanmak sadece "inadına" Linux kullanmak olmamalı. Gerektiğinde "Microsoft Office var abi crack'li son sürüm, ister misin?" diyen arkadaşına "LibreOffice candır, korsana gerek yok." diyebilmektir.

...

Gerek e-dergi'de, gerek forumlarda Pardus'a katkı sağlamışsak ve bu yaptıklarımızla insanlara sadece Linux'u değil, diğer özgür yazılımları da sevdirebildiysek gene de bir şeyler başarmışızdır.

Bundan sonrası için Pardus adına bir tahminde bulunabilmek güç; kendi adıma yapabileceğim tek şey, sevindirici haberleri beklemek.

Bugüne kadar projeye gram yardımı dokunmamış, ancak rakı masasında ülkeyi kurtarır gibi ekran başında Pardus'u kurtarabilecek tek insanmış rolünde ahkâm kesenlere de buradan selam ediyorum; biz bir tuğla koyduk, sen neredeydin?

Son anına kadar IRC kanalından forumlara, e-dergi'yi okuyan ve e-dergi'ye yazanlardan oyun sunucusunda bizleri yalnız bırakmayanlara kadar herkese teşekkürler. Unutmayın; özgür yazılım aynı zamanda bir felsefedir.



19
Oca
Tüm Linux kullanan oyunseverlere bir kez daha merhaba.

PlayOnLinux'un 3.8.8 numaralı son sürümü şu an Pardus 2009 için katkı deposundaki yerini aldı, Pardus 2011 için henüz şu an depolarda yer almıyor. Ancak Pardus 2011 32bit kullanıyorsanız SVN'den kendiniz derleyebilir veya derlenmiş olan paketi bilgisayarınıza indirebilir ve kurabilirsiniz. Pardus 2011 64bit kullanıcıları ise kısa bir süre daha beklemek zorundalar, çünkü Wine henüz 64bit depolarındaki yerini almadı (az sabır!).

Pardus 2011 i686 depolarında şu an için Wine'ın 1.3.11 sürümü bulunuyor ve kısa bir süre içerisinde 1.3.12 sürümü de depodaki yerini alacaktır. Yeni sürüm ile birlikte gelen hata düzeltmelerine bakıldığında bir çok sorunun giderildiğini görüyoruz. Aynı şekilde, PlayOnLinux'a son zamanlar oldukça fazla yenilik geldi ve içeriği de güncelleşti. Call of Duty: Black OpsDragon Age: OriginsLara Croft and the Guardian of LightMafia IIStar Wars: The Force Unleashed gibi oyunlar PlayOnLinux'un desteklediği oyunlar listesine girerken, listedeki daha bir çok oyunun kurulum betiği ise elden geçirildi. Böylelikle, doğrudan Linux için geliştirilen bilgisayar oyunlarının sayısı diğer platformlara göre az olsa da, PlayOnLinux sayesinde oyun zevkimizden mahrum kalmıyoruz.

Pardus 2011'in duyurulduğu ve yeni sürüm heyecanını yaşadığımız şu günlerde, herkese iyi oyunlar diliyorum :)
2
May

Sıkça sorulan sorulardan biri. Neden Wine yok depoda ? Son aylarda gerek forumlarda, gerek bugzilla bununla ilgili yoğun bir şekilde şikayet geliyor. Bir geliştirici olarak ister istemez rahatsız oldum. Çünkü ben kendi adıma kullanıcılara hep en iyiyi sunmayı çalıştım ve hala da çalışıyorum. Ne zaman bir şikayet görsem “nerede hata yaptım” diye düşünmeden edemiyorum.

Bu konuyla ilgili sizleri bildirmek adına bu yazıyı yazıyorum. Bu yazdıklarımı bir bahane olarak görmezseniz sevinirim. Biraz da bizim içerimizdeki gizli kahramanların neler yaptıklarını ve sizler için gece gündüz çalıştıklarını da görmenizi istiyorum. Şimdi yerinizden kalkın, kendinize bir çay hazırlayın. Uzun bir yazı olacak. Ben bekliyorum :)

Çayınızı aldınız değil mi ? Hadi bakalım, başlayalım …

Her şey bundan yaklaşık beş ay önce bir Bugzilla hatası ile başladı. Kullanıcılardan Wine paketi ile ilgili bir istek geliyor. O zamanki Wine paket bakıcısı olan Fatih Aşıcı ise 32 bit deposuna Wine’in girdiğini, fakat 64 bit deposu için biraz zamana ihtiyacı olacağını söyledi.

Biraz zaman alacak derken neyi kast ediyordu peki ?

Fatih Aşıcı’nın kastettiği durum, Wine’in çalışması için gerekli lib32 paketleri idi. Yani 64 bit altında çalışan 32bit paylaşımlı kütüphaneler. Bunlar olmadan Wine çalışmaz. Mesela Skype, Google Earth, Picasa gibi uygulamalar da bunu istiyor. Pisi’nin güzel bir şekilde bu paketleri yapmasına olanak veren bir altyapısı mevcut değildi.

Fatih bu yorumu 16.01.2011 tarihinde yapmış. Depo’da hiç bir lib32 paketi mevcut değil. Usanmadım, Fatih Aşıcı’nın bu yorumundan sonraki tüm commitlerini tek tek inceledim. Gerek paketler deposunda, gerekse Uludağ deposunda yaptıklarını not aldım.

Şimdi beraber Fatih Aşıcı’ın bu günden sonra uğraştığı işlerle ve bu lib32 paketlerinin durumunun nasıl geliştiğine bakalım.

Ocak Ayı (16′sından sonra)

  • Kde’nin öntanımlı klasör ayalarını düzenlemiş.
  • Xorg-sunucusu Opengl sürümünü düzgün yüklemediği için Onur Küçük ile buna bir yama hazırlamış.
  • Ardından 2011 çıkışı için gerekli depo değişiklikleri yapmış (2011 adında bir tag oluşturmuş).
  • 2011 için testing deposunu açmış.
  • Depo’daki sahipsiz paketleri bakıcısız olarak işaretlemiş.
  • NVidia ve Ati’nin kapalı kaynak kodlarını güncellemiş.
  • Virtualbox sürümünü elden geçirmiş, önemli bir hatayı düzeltmiş.
  • Az sayılı karakterleri desteklemek amacıyla Çomar’ı yamalamış.
  • Pisi 2.4_Alpha2 sürümünü çıkarmış.
  • Xorg sunucusunu yeni geliştirme sürümüne geçirmiş.
  • Bunun yanında bir çok küçük paketi güncellemiş, düzenlemeler yapmış.
  • Sürüm notlarını gözden geçirmiş
  • Rusya dilinin desteklenmemesi için Yalı’yı düzenlemiş
  • Yalı’ya ayrı bir klavyeyı kolayca kullanılması için yama yapmış
  • Pisi’nin düzgün arşiv indirilmesi için “fetcher” sınıfını gözden geçirmiş
  • Çomar’daki modelerden birini gözden geçirmiş

Ocak ayının yarısı bu şekilde geçmiş. Ortada hala lib32 yok. Onun yerine 2011′in yetişmesi için elinden geldiğince kritik sistemleri düzeltmeye çalışmış. Tabi bu arada Bakalım şubat ayı nasıl geçiyor

Şubat ayı (01-28 arası)

  • Henüz 2011′e alınmamış paketlerin listesini çıkarmış.
  • İsmi değişmiş paketlerin depo indeksini bozulmaması için gerekli değişiklikleri yapmış.
  • “Patch” paketinde kritik bir güvenlik hatasını kapatmış ve paketi gözden geçirmiş
  • Gpg/ssh agent’lerin ile bir hatayı düzeltmiş
  • Yalı’nin kodunda bir kısmı sadeleştirmiş
  • Benim libicns ile yaptığım bir hatayı usanmamış gidip değiştirmiş
  • Network Manager’e küçük bir değişiklik yapmış
  • Çeşitli X11 paketlerini gözden geçirmiş (libpciaccess, pixman, vs…)
  • Playground’daki Koffice paketine de göz atmış ve paket içeriği ile ilgili sadeleştirme yapmış
  • Ntfsprogs paketinin bakımını yapmış
  • Depolar arasındaki paketler uyumsuzluğuna tekrar göz atıp gereken düzeltmeleri yapmış
  • Kde’ye bir yama hazırlamış (klavye ayarlarını Xorg sunucusundan düzgün almıyordu)
  • Gnupng paketinin bakımını yapmış
  • Benim review’e koydum bir pakete göz atmış (vim-plugin-pisi)
  • Yine depoya aldığım bir pakete göz atıp gereken değişiklikeri yapmış (keepassx)
  • Wine paketini güncellemiş(32bit tabi, çünkü hala henüz ortada 64 bit yok)
  • Wine 64 bit paketi için deneysel bir actions.py hazırlamış
  • Xorg sunucusunun bakımını yapmış, eski yamaları atmış, yeni olanları eklemiş
  • Yine kritik bir paket olan Mesa’ya göz atmış
  • Gramps adı altındaki paketin anlatımını düzeltmiş
  • Flashplugin’i güncellemiş, kritik bir güvenlik açığını düzeltildi bu sayede (sevgililer günü bugün bu arada:))
  • Kurumsal 2′deki Kde başlangıçta takılıp kalıyordu gidip baştan bir yama hazırlamış, bunu düzeltmiş
  • Virtualbox paketine bakmış tekrardan, önemli bir hatayı düzeltmiş

Şu an şubat ayının ortasına gelmişiz…

  • Ati kapalı kaynak kodlu sürücülere göz atmış tekrardan(güncelleme ve kod düzeltme)
  • Çizim tabletleri için gerekli olan bir paket olan xorg-input-wacom paketini güncellemiş tekrardan
  • Pisi için bir yama hazırlayıp onu pakete sokmuş.
  • Gecelik iso’ların çıkması için gerekli altyapıyı hazırlamış (Gökçen Eraslan ile hatırladığım kadarıyla)
  • Farm için gerekli olan betikleri gözden geçirmiş tekrardan.
  • Buildtype özelliği için pisiye sayısız değişikliler almış.
  • Pisi 2.4_alpha3 sürümünü çıkarmış. Bu paketle beraber lib32 için gerekli altyapıyı da başlatmış oldu. (Tarih 21.02.2011)

Bundan sonra şubat ayının sonun kadar benim de içinde olduğum bir dizi lib32 paketlerinin bakımını yapmış. O zamanlar Skype isteği de ön plandaydı. Bu yüzden Skype için gerekli lib32 paketlerini oluşturmaya başladık. Benim hazırladığım paketleri oyun alanıma alıyordum, Fatih de bir yandan onların üzerinden geçiyordu. Bununla ilgili bir mail de geliştirici listesine atmışım:

http://liste.pardus.org.tr/gelistirici/2011-February/055676.html

Bu arada tarihlere dikkatlice bakınız. Fatih 21.02 tarihinde lib32 için gerekli altyapı paketini, yani Pisiyi depoya koymuş. İki gün sonra neredeyse yaklaşık 40 tane lib32 paketi hazırlamıştık ve playground’a bekliyordu. O iki gün gerçekten inanılmaz işler yapmıştık.

Mart (başlangıç)

  • lib32 paketlerinden dolayı sıkan sorunları çözmeye zamanını ayırmış.
  • Nvidia ekran kartları sürücülerine göz atmış
  • Kısa kısa paket düzenlemeleri yapmış

Fatih sonra 04.03 gibi aramızdan ayrılıyor. Kendisi bir ay sonra Askere gidecekti. Tabi bununla bitmiyor, tatildeyken bile Pisi 2.4_alpha4′yı çıkartmış. Pisi’ye yeni buildfarm ile uyumlu olacak şekilde Delta desteğini de veriyor. Bunu yaptıktan sonra Nisan ayını başında zaten Askere teslim oluyor. Üzerinde 300′e yakın paket vardı. Bunların bir çoğunu ben aldım. Bunların arasına Wine’de vardı. Bunu da hata kaydında belirtmişim (03.03).

Fatih Aşıcı tarafında durum böyleydi. Kendisine Wine paketini Mart ayı başlangıçında sormuştum. Kendisi Askere teslim olmadan önce yapacağını dile getirmişti. Yani Nisan’ın başında gitmeden önce bakacağını söylemişti. Ben de haliyle Nisan’a kadar bekledim. Fakat işler istenildiği gibi gitmiyor. Hayat bu, demek ki Fatih de zaman bulamadı ve yapamadı.

Nisan’dan sonra peki ben ne yaptım da Wine 64bit paketi hala depo’da yok ?

Nisan (1-30 arası)

  • Libva paketini yeni sürüme çekmişsim,
  • Libva güncellendiği için, çeşitli paketleri tekrar derlemek zorunda kalmışız (geliştirici listesinde bununla ilgili mail mevcut)
  • Sayısız paket güncellemeleri yapmışım:
    1. Texmaker
    2. Aria2
    3. Git
    4. Libtorrent
    5. Dos2unix
    6. Xorg-sgml-doctools
    7. Chromium’u (ayda 3-4 kere oluyor bu güncelleme)
    8. Xscreensaver
    9. Flashplugin
    10. Intel ekran kartı sürücüleri
  • Yeni ati kapalı kaynak kodlu sürücülere göz atmışım
  • Ati sürücüleri ile ilgili değişiklikleri depoya yansıtmışım.
  • Xorg-app’deki bir güvenlik açığını kapatmışız
  • Çomak’da Gnome3 çıkabilir düşüncesi ile xkeyboard-config’u güncellemişsim
  • Xkeyboard’un düzgün çalışabilmesi için libX11′i de güncellemişsim
  • Bugzilla’daki Licq vardı onunla ilgili oyun alanımda Licq paketini hazırladım
  • Udev’deki 32 bit kütüphaneleri 64 bit olanları eziyordu onu düzeltmişsim (ilgili geliştirici maili)
  • Önemli bir bileşen olan libdrm’i paketine bakmışsım
  • Nvidia kapalı kaynak sürücülerini güncellemişsim
  • Geleneksel Vim yamaları eklemişim
  • Bir takım bileşenleri üzerime almışım
  • Nvidia açık kaynak kodlu sürücüleri güncellemişsim
  • Mutt’daki bir güvenlik açığını kapatmışsım
  • Phoronix test-suite’nin çalışabilmesi için Php’yi değişiklik yapmışız
  • Bir takım Nvidia reverse engineering uygulamalarını oyun alanıma yüklemişsim
  • Virtualbox ailesini güncellemişsim
  • Wine 64bit için gerekli olabilecek lib32 paketlerini depoya almışım (freeglut, glew, mesa)
  • Emre Erenoğlu’nun katkılarıyla daha fazla lib32 paketleri almışız depoya (libXft, libXtst, libXpm, libXinerama, libXcursor)
  • Kde randr modülüni devreye sokmuşum ve baştan yeniden değiştirerek yazmışsım (güzel bir özellik oldu bu)

Bunu dışında Bugzilla’daki hatalar da var elbet (sağ üst köşedeki noktalar gibi). Bunlar da haliyle zaman alıyor. Ha bugün ha yarın derken hala Wine ile uğraşamadım haliyle. Şimdi peki ne durumdayız ?

Yaklaşık bir haftadır Wine ve paket bağımlılıkları ile ilgileniyorum. Wine için mesa-32bit bunun bir önemli parçasıydı. Onu düzgün bir şekilde yaptıktan sonra çeşitli farklı paketler de mevcut yapmamız gerekiyor. Nihayetinde yerelimde Wine 64bit düzgün bir şekilde çalışmayı başardım :) Hatta deneme olarak Winamp uygulamasını indirip denedik Ofiste, sesi de güzelce veriyor (şu ünlü koyun sesi). Örnek ekran görüntüsü:

Wine 64 bit Pardus 2011 altında

Peki depo’ya ne zaman girecek ?

Wine henüz tam bitmedi. Açıkcası bir çok pakete ihtiyacı var hala. Bunlar şu şekilde:

  • libxinerama-32bit (depoda mevcut)
  • libxcomposite-32bit (depoda mevcut)
  • ldbus-32bit (depoda mevcut)
  • libgnutls-32bit
  • libsane-32bit
  • libgphoto2-32bit
  • liblcms-32bit
  • gstreamer-32bit
  • liboss-32bit
  • libcups-32bit
  • libgsm-32bit
  • libtiff-32bit
  • libmpg123-32bit
  • libopenal-32bit
  • libldap-32bit
  • libxml2-32bit
  • libXslt-32bit (depoda var)
  • openssl-32bit (bununla bugün uğraşıyordum bitmedi henüz)
  • libjpeg-32bit
  • libpng-32bit

Yukarıdaki paketlerin çoğunun bizdeki ismi farklı. Bazıları olmayabilir de depoda. Ama Wine’in düzgünce çalışabilmesi için bunların lib32 paketine ihtiyacımız var. Bazı paketlerin lib32 paketini oluşturmak kolay olsa da, bazıları çok zaman alabiliyor. O yüzden hani sizlere iki güne sonra hazır diyemiyorum. Paketlerin çoğunu bilmiyorum bile ne yaptığını, benim üzerime olmayan paketler.

Pardus’taki Wine 64bit’in hali bu durumda. Umarım en azından kafanızda bazı şeyler şekillenmiştir diye düşünüyorum. Hatırlarsanız, geliştiricileri bir hatayı iki ayda bir çözüyor demiştiniz ve bununla ilgili uzun bir yazı yazmıştım. “20-30 tane geliştirici var, bir Wine’i mi yapamıyorlar” diyenler de oldu, bu yazıyı okuduktan sonra belki farklı düşünen olmuştur, yok değişmediyse o zaman kendimizi hala anlatacağız demektir.

Örneğin yukarıda saydıklarımın arasında, ne kadarını kod geliştirmeye ayırdık sizce ? Ben kendi adıma konuşursam çok ama çok az. Gönül isterdi ki, paketlerin sayısı az olsun, bugzilla’daki hatalar az olsun, kullanıcıların isteklerini yerine getirelim, yeni teknolojiler geliştirelim. İnanın sizler ne kadar istiyorsanız bizler de istiyoruz bunları yapmayı. Ama buraya kadar okuyup geldiyseniz, yukarıda Fatih Aşıcı’dan verdiğim örnekleri de göz önüne alırsanız, ne durumda olduğumuzu herhalde çok iyi anlayacaksınızdır. Akşamları eve gelince, hafta sonları bile boş vakitlerinde sizlere zaman ayıran insanlar bunlar.

Bu sıkıntıyı gidermek için çözümlerden bir tanesi geliştirici sayısını artırmak. Buraya kadar okumuşsanız, “Madem böyle bundan sonra ben de Pardus için bir şeyler yapmak istiyorum” diyorsanız şimdi tam zamanı. Bugzilla’daki hatalara bakın, yeni paket isteklerindeki paketlerle ilgilenin, geliştirici adaylığına başvurun, ben güzel yazı yazarım diyorsanız güzel belgeler yazın, çeviri yapın, Pardus’u dünya’ya tanıtın.

Siz var olduğunuz sürece biz de bu işi yapıyor olacağız. Gelin hep beraber güzel işlere imza atalım. Sizden tek isteğim bu.

22
Mar

(Pardus, özgür yazılım hakkında fikirlerimi ve düşüncelerimi içeren uzunca bir yazıdır. Aşağıdaki tüm düşündüklerimi çevremdeki insanlarla konuşuyordum. Fakat yazacak cesareti bulamamıştım. Artistanbul ekibinin Öİ’ye elvedasından sonra bunları yazmak istedim.)

“Bir hayal, bir merak”

Bilgisayar ile uğraştığım süreç olarak, başından beri felsefem buydu. İlk önce uygulama(programlama dili) hakkında hayal kurar.(Şunu şunu yapabilirim.) Sonra tüm o merakınız ile devam edersiniz. Programlamaya girişmem de böyle olmuştu.

Pardus 1.0′dan başlayan Pardus 2011′e geldiğimiz şu dönemde, Pardus’un ne kadar değiştiğini, geliştiğini görmek çok sevindirici. Pardus için söylenen o sloganlar üzerinde hayaller kurdum ve düşündüm. “Virüslere geçit yok.”, “Hızlıdır.”, “Güvenlidir” gibi. Sonra oturup merakımı gidermek istedim. Bu aynısı en son Mac OS X’de oldu.

Pardus, bilgisayar sektöründeki maceramda yeri çok büyük. Beni saçma sapan programlama dillerinden kurtardı. Python’ı gösterdi. Linux’u öğretti. Terminal komutları öğretti.(Yeri geldi hem ana oldu hem baba oldu :) ) Ben Pardus’u büyük çapta programlama için kullandım. Çok eğlenceli vakit geçirdiğim zamanların yanında, çok sinirlendiğim, bu nasıl olmaz, dediğim zamanlar oldu. Güzel bir yolculuktu. Hala bu yolculuğa yeni katılanları görmek çok güzel. Yeni bilgiler öğrenen, katkı vermek isteyen insanları görmek beni hep şaşırtmıştır.

Tabi tüm bunların yanında, bazı şeylerin mükemmel olmasını istemek benim doğamda var. Kesinlikle bir şeyin tamamı ile mükemmel olması imkansız olsa da ben Pardus’u öyle istedim. Bazen sırf bu yüzden ciddi tartışmalara girdiğim oldu. Haksız olduğum, kendimce haklı olduğum zamanlar oldu. Mükemmeliyet kavramını açarsam, sadece hatasız ve hızlı bir sistem istemedim. Yenilikçi olmasını istedim.

Sıkıntı burada başlıyor, bir Linux dağıtımı nasıl yenilikçi olabilir ? Nasıl fark yaratabilir ? Örneğin Pardus KDE masaüstü ortamını kullandığını biliyoruz. Peki Kubuntu’da KDE kullandığını biliyoruz. Şimdi araya iki sistem arasındaki farkları düşündüğünüzde son kullanıcı olarak görsel olarak, işlev olarak çok büyük bir değişiklik olmadığını göreceksiniz. (Tabi ki ayrıntı da farklılıklar var.) KDE’de bir yenilik olduğunda tüm dağıtımlar bunu alıyor, bu da tüm KDE kullanan dağıtımlarda ortaya çıkmasına sebep oluyor. (Zamanlama olarak fark edebiliyor.)

Biraz daha düşündüğümde, Linux dağıtımlarının çıkışını bir araba modifiyesine benzettim. Elinizde bir altyapı var. Kim ? Linux çekirdeği. Her Linux dağıtımı kesinlikle bu çekirdeği kullanıyor.(Zaten kullanmazsa Linux dağıtımı olamaz.) Siz bir geliştirici ekibisiniz(bir amacınız var o amaç doğrultusunda), üzerine ne eklesek diye düşünüyorsunuz. Gelin GNOME koyalım, Debian paket yapısını alalım. Açılış yöneticisi olarak şunu seçelim. Kurulum aracı olarak şunu seçelim diye. Yenilik olarak baktığınızda hiçbir Linux dağıtımı oturup, son kullanıcı için bir masaüstü ortamı yazmamış. Son kullanıcının hayatını değiştirecek şeylere dağıtımdaki geliştiriciler dokunmuyor. Geliştiricilerin tek işi, arabanın en iyi şekilde çalışmasıdır.(Uygulama desteği aynı zaman da)

(Not: Zemeberek’i unutmamalı. Aklıma gelen bir istisna.)

Yenilik arayan biri olan ben, Pardus için masaüstü ortamı yazılsa yapılsa ? dediğimde benim yüzüme direk söylenecek laf şu(biliyorum). “Bir defa Amerika’yı niye keşfedelim ?” Şimdi bu cümle, öyle bir cümle ki yeni kullancılarımız çok kez bu lafı duymuş olabilir. (Genellikle Neden Pardus baştan yazılmadı ? sorusu sormularsa duymuşlardır.) Bana sorarsanız bunu söylememeli her zaman. Tabi sistem en başından oturulup kendi işletim sistemimiz yazılmasın. Ama Pardus bir fark yaratmalı, o fark “En iyi KDE uyumu” olmamalı. Düşünsenize Pardus son kullanıcının bilgisayar alışkanlıklarını değiştiren daha kolaylaştıran, daha sevimli bir masaüstü ortamı yaptığını.

Şimdi daha derin düşündüğümde Pardus kendi masaüstü ortamını yazdığında, eminim insanlar merak edip deneyeceklerdir. 1 haftaya kalmaz, bu masaüstü ortamı ile çıkan bir Ubuntu sürümü çıkarsa, işte o zaman ben bir Pardus geliştiricisi olsam, bunu Pardus için yaptığımdan pek hoşuma gitmezdi. Özgür yazılım işte bu yeniliği bence durduruyor. Onun yerine Pardus geliştiricileri KDE’nin gelişimi için çaba harcıyorlar, o daha iyi olsun diye düşünüyorlar, uğraşıyorlar. (Bu felsefe ile o zaman herkes bir mükemmel Linux dağıtımını için uğraşıp, bitirdiğinde en son amaçları doğrultusunda değiştirmeli.)

Ben Pardus 2011 çıkmadan önce inanılmaz şeyler geleceğini tahmin ediyordum. Malum 2009′dan 2011′e uzanmış uzun bir süreç. Buyrun yeniliklere bakın. Sizi heyecanlandırdı mı ? Ben açıkcası pek heyecanlanmadım.Pardus 2009′un hemen hemen aynısıydı. Ana sürüm için çok köklü değişiklik görmedim. Burada geliştiricilerin bir suçu yok. (Yanlış anlaşılmasın, geliştiriciler hiçbir iş yapmıyor demiyorum, ana sürüm için ortaya atılanların son kullanıcı için ortaya koyduklarını söylüyorum.) Benim beklediğim masaüstü ortamında inanılmaz değişikler. KDE 3.5′den 4.0 geçildiğinde ben şoke olmuştum, getirdiği yeniliklerle. Pardus 2008′e durmadan yüklüyordum merak ediyordum.

Ben bir son kullanıcıyım, az buçuk geliştiriciyim. Son kullanıcıların çoğu kesinlikle böyle düşünecektir. (Tabi ki çekirdekte değişikler oluyor, daha hızlanıyor, stabil oluyor vs.) Ama son kullanıcı hala aynı şekilde hayata devam ediyor.

Gelelim geliştiriciliğime. Bildiğiniz üzere Kontrolcu diye bir projemiz vardı. Pardus paket deposuna yerleşmesi konusunda geliştirici olarak en ufak fikrim yoktu, Kontrolcu’yu bitirdiğimizde. Ali Işıngör geliştirici olabilirsin diyince, (bu yazışmadan bir iki ay önce tüm gönüllü geliştirici katılımı tamamen değişti.) oturup bugzilla’ya istek açıp, geliştirici olmak istiyorum dedim.

Bana 10 soru (yanlış hatırlamıyorsam) soruldu. Eğer iyi yanıtlarsam 2. aşama olarak danışmanıma verilecektim. Danışmanım Bahadır Kandemir, kod yazımımı görmek için benden PyQt kullanılarak yapılmış bir metin editörü istedi. Bu metin editörü aynı zamanda kurulum dosyası(setup.py)na sahip olacaktı. Bu görevimi bitirdikten sonra, fstab düzenleyici görevi verildi. “Review süresini uzun tutarız.” diyen danışmanımın üzerine ben de zaman bulana kadar, elimdeki işleri bitirene kadar uğraşmadım. Sonra çok ilginçtir, 2009 Ağustos’unda (günü hatırlamıyorum.)” Seni Junior geliştiriciliğinden alıyoruz. İyi akşamlar” diyen danışmanımdan sonra düşünün halimi. :) Cevap yazamadan çevrimdışı olunca danışmanım etrafıma bakmaya başladım. Duvarımdaki Pardus posterine, üzerimdeki Pardus tişörtüne, çerçeveli Önder Yetiş’ten aldığım teşekkür belgesine baktım…

Neyse bu yanlış anlaşılmayı düzeltikten sonra verilen görevi yaptım.

Dikkat ederseniz tüm bu hikaye Kontrolcu’yü depoya atmak istememdeydi. Ali Işıngör haklıydı. Ali Işıngör’le konuşmadan önce Osman Karagöz ile yaptığımız tüm istekler yersiz kalmıştı. Doğru dürüst bir geliştirici ile konuşamamıştık.

Ben katkı vermek isteyen birisiyim. Tabi ki böyle şeyler insanı küstürmemeli ama bu kadar emek sonunda yazdığınız uygulamanın depoda olmasını görmek isterdim. Biri dese ki ya Kontrolcu depo politikasına uymuyor. Siz daha yolun başındasınız. Yolun sonuna gitmeyi denerdik.

Tüm bu geliştiricilik serüvenim sürerken geliştirici listesini çok yakından takip ettim. Bu arada yapılan bazı tartışmalarda gönüllü geliştiriciler ile konuşulmadan Tübitak geliştiricileri toplantılarında kararlar alıp, uygulamışlar.(Konunun detayını tam olarak bilmiyorum.) Ama Öİ gezegeninde geliştiriciliği bırakan bazı kişileri görünce sorgulamaya başladım bazı şeyleri.

Bazı dağıtımlar bilindiği üzere tamamen gönüllü geliştiriciler(bunlar bir şirket ya da kurum tarafından maaş almayan kişilerdir.) tarafından oluşturuluyor. Pardus ise bundan farklı olarak işin TÜBİTAK tarafı ve gönüllü tarafı var. Topluluk ile TÜBİTAK arasında sanki çok büyük bir dağ var. Tüm Pardus geliştiricilerinin hepsi toplulukta yer almıyor, forumlarda insanlarla konuşmuyor. Eğer halk yani son kullanıcı bir şey isterse şu an “Beyin’e” yazılıp, eğer tutarsa istek olarak geliştiricilere iletiliyor.

Ben şunu hayal ettim. Geliştirici ve kullanıcılar el ele forumlarda konuşuyor, fikir alış verişi yapıyor. Şöyle de bir algı vardı, geliştiriciler çok çalışıyor o yüzden topluluğa bakmıyor. Eğer Pardus ekibi Pardus yaygınlaşsın istiyorsa SON KULLANICISINI DİNLEMELİ!

Son kullancıyı dinlemezseniz, küsüp gider. En basit örnek babam. Babam, iş yerinde cups ile ilgili bir sorunu oldu. Son kullanıcı bir geliştirici kadar bilgili olmadığından, son kullanıcı olarak bazı yardımsever kullancılar yardım etmeye çalıştı. Ama babam oturupta yazıcılarla hata kaydı giremez, uğraşamaz. (Ben foruma yazmasını da beklemiyordum.) En son olan oldu. Gitti Macbook Pro aldı. :) (Pardus’un gelişimi takip ediyor, ama günlük hayatında kullanmak istemiyor.)

Verdiğim örnek bir kişi olabilir, ama eğer geliştiricinin zamanı yoksa son kullanıcının da her zaman zamanı olmayabilir. Bir kişiyi bile düşünmek gerekir diyorum. (Tabi ki herkesi düşünmek kolay iş değil ama düşünmeye çalışmak bile yeter.)

Açıkcası bu konu hakkında daha söylecek çok şeyim var. Belki devam ederim.

10
Şub

Pardus 2011 heyecanı ile birlikte camiaya daha fazla katkıda bulunma isteğiyle dolup taştım… Bunu tetikleyen ilk sebep ise Pardus 2011 depolarında Geany IDE‘nin olmaması idi. O zaman daha iyi anladım, her zaman armut piş, ağzıma düş mantığının bize hayır getirmeyeceğini… İş başa düştü diyerek, Pardus-wiki, Kaya Oğuz ve Pardus depolarını inceleyerek ilk pisi paketimi oluşturdum… Tabii PisiYap ile ayrıntılı pspec.xml ve actions.py hazırlama husunda  yardım aldığımdan bahsetmesem olmaz. Kesinlikle heyecan vericiydi. Özellikle şu görüntüyü Paket Yöneticisi’nde görmenin hazzı ise inanılmaz…

Paket Yöneticisi'nde bir Geany...:)

Geany 0.20 inşaa dosyalarını buradan indirebilirsiniz.

Geany 0.20 pisi paketini buradan indirebilirsiniz.

Geany benim için ilk basamaktı.. Asıl bahsetmem gereken kesinlikle Gambas. Bu paketi oluşturmam, bu hususta çok fazla şey öğrenmemi sağladı. Karşılaştığım hata-çözüm dağından sonra zafer tabii ki benim oldu:) Hata kaçtı, ben kovaladım tıpkı bir dedektif gibi hissettim kendimi…:) Gambas 3′ün kaynak koddan Pardus 2009′a nasıl kurulması gerektiğini daha önce bu yazımda bahsetmiştim. Öncelikle orayı okumanızı tavsiye ederim. Gambas 2 Pardus 2008′de kullanıcılar tarafından sevilerek kullanılmasına rağmen, Pardus 2009′da, bazı teknik sorunlardan dolayı, paketi oluşturulamamış bir yazılımdı. Gambas’ın şuan “2.22.0″ kararlı sürümü var fakat, qt3 gereksinimleri (Gambas 2 qt4 desteklemiyor) yüzünden paketini yapmak gereksiz gibi… Bunun yerine esasında daha donanımlı olan geliştirici sürümünün -2.99.0(Gambas3)- paketlerini nice hata engellerini aşarak oluşturdum. Bunun yanı sıra depoda olmayan bazı bağımlılıkları da pisilemek durumunda kaldım. Bunlar sqlite2-2.8.17 ve libiconv-1.13.1 dır. Şunu da belirtmeliyim ki, pisi yapılandırması sırasında pisitools dışındaki tüm yöntemlerde Sandbox İhlali aldım. Farklı kurulum yöntemlerinde neden bu hatanın alındığı hususunda ise detaylı bir araştırma yapmam gerektiğini anladım. Koruma kalkanı farklı yöntemlerde farklılıklar gösteriyor demek ki :)  Gambas3 arşivlenmiş şekilde websitesinden indirilmiyor. SVN kullanarak indirip, “./reconf-all” komutundan sonra işlenebilir hale geliyor. Daha sonra “./configure” ve “make” komutlarını verip görebildiğim hataları giderdikten sonra tar.gz arşivi haline getirip, kendi dropbox alanıma upload ettim. (Keza sqlite2*’de öyle…) Bu yüzden gambas3 için actions.py da sadece install() yordamı aktif.

Not 0 : Gambas 3, sqlite2 sürümüne de ihtiyaç duyuyor. Bu yüzden eski sürümü bulup kendi alanıma yükledim, pspec.xml dosyasında bu adresler var.

Not 1 : Bir de files/ dizini içerisinde XFree86 yazılımından gerekli dosyalar
mevcut. Bu yazılımı pisi paketi haline getiremedim. Fakat bu yazılımdan gerekli
dosyaları, istenen yere kopyaladığımda sorun düzeldi. Esasında gerekli 2 dosya
vardı. Bunlar “Xcursor.h” ve”xftint.h” dosyaları idi. Bunlar da bir diğer dosyalara gerek duyar diye, o dosyaların kaynak dosyasında bulunduğu klasörü tamamen ekledim. Böylelikle Pardus 2011 depolarında olmayan Gambas 3′ün gerek duyduğu bu bağımlılık hatasını da çözmüş oldum.

Not 2 : Gambas 3 libbz2 adlı kitaplığa gereksinim duyuyor. Ama Pardus 2011′de bu kitaplığın adı bzip2 ve bu kitaplık kurulduktan sonra /lib/ in altına libbz2.so adlı dosyayı atıyor. Gambas ise bu dosyayı /usr/lib altında arıyor. Bulamaz ise hata veriyor. Bunun için files/ dizini içinde /usr/lib altına kopyalamak
üzere bu dosyalar da mevcut.

Not 3: Bağımlılık ağacını çözebilmek için bağımlılık yönergesi ve Debian, Ubuntu paket veritabanından yararlandım. Bu hususta gerçekten yararlı kaynaklar.

Not 4: Paket yapımında yeni olduğum için görüşlere ve düzeltmelere ihtiyacım
var. Hatalarım için af diliyorum. Ayrıca ne yaptığınızın bilincinde değilseniz. Ekte sunacağım paketleri sadece incelemek için indirmenizi tavsiye ederim. Aksi halde tüm sorumluluk size aittir.

Ekler: sqlite2 pisi inşaa dosyaları(Gambas için gerekli)
libicov pisi inşaa dosyaları(Gambas için gerekli)
gambas3 pisi inşaa dosyaları
gambas3 pisi paket yöneticisi görüntüsü
gambas3 ekran görüntüsü

Paket Yöneticisi'nden Gambas3

Paket Yöneticisi'nden Gambas3

Gambas 3'den bir görünüm

Gambas 3'den bir görünüm

Gambas3 ve bağımlılıklarının inşaa dosyalarını buradan indirebilirsiniz…

Gambas 3 için gerekli sqlite2 pisi paketini buradan indirebilirsiniz.

Gambas 3 için gerekli libiconv pisi paketini buradan indirebilirsiniz.

Gambas 3′ün pisi dosyasını buradan indirebilirsiniz…

UYARI: Bu paketler test edilmemiştir ve geliştiriciler içindir. Lütfen bunun bilincinde olunuz. Aksi halde sisteminize ciddi zararlar verebilirsiniz…

İstek : Uyarıları dikkate alarak, kurulum sonrası geri bildirimde bulunur ve hataları bildirirseniz çok memnun olurum.

Saygılarımla…

22
Oca

Tüm Linux kullanan oyunseverlere bir kez daha merhaba.

PlayOnLinux‘un 3.8.8 numaralı son sürümü şu an Pardus 2009 için katkı deposundaki yerini aldı, Pardus 2011 için henüz şu an depolarda yer almıyor. Ancak Pardus 2011 32bit kullanıyorsanız SVN’den kendiniz derleyebilir veya derlenmiş olan paketi bilgisayarınıza indirebilir ve kurabilirsiniz. Pardus 2011 64bit kullanıcıları ise kısa bir süre daha beklemek zorundalar, çünkü Wine henüz 64bit depolarındaki yerini almadı (az sabır!).

Pardus 2011 i686 depolarında şu an için Wine’ın 1.3.11 sürümü bulunuyor ve kısa bir süre içerisinde 1.3.12 sürümü de depodaki yerini alacaktır. Yeni sürüm ile birlikte gelen hata düzeltmelerine bakıldığında bir çok sorunun giderildiğini görüyoruz. Aynı şekilde, PlayOnLinux’a son zamanlar oldukça fazla yenilik geldi ve içeriği de güncelleşti. Call of Duty: Black OpsDragon Age: OriginsLara Croft and the Guardian of LightMafia IIStar Wars: The Force Unleashed gibi oyunlar PlayOnLinux’un desteklediği oyunlar listesine girerken, listedeki daha bir çok oyunun kurulum betiği ise elden geçirildi. Böylelikle, doğrudan Linux için geliştirilen bilgisayar oyunlarının sayısı diğer platformlara göre az olsa da, PlayOnLinux sayesinde oyun zevkimizden mahrum kalmıyoruz.

Pardus 2011′in duyurulduğu ve yeni sürüm heyecanını yaşadığımız şu günlerde, herkese iyi oyunlar diliyorum :)

{lang: 'tr'}
14
Oca
“YGS-LYS var.” diye başladığım bir dönemin içinden el uzatarak sesleniyorum:”Çalışmaktan, yeni bir şeyler öğrenmekten iyisi var mı?” Bu sorunun cevabı görecelik kavramından dolaya farklılık gösterebilir. Benim için sorun yok diyorum. Biz kendi halimize bakalım derken Pardus yerinde durup öylece beklemedi tabi ki. 2011 sürümü için yola çıkmıştı zaten. Bıraktığım yerde olmadığını bende görüyorum. İlerlemeler kaydetmiş, [...]

Ofiste sürüm telaşı var. Haftaya çıkacak olan 2011 için herkes harıl harıl çalışıyor. Benim işlerim( bir sonraki blog yazımda onlardan bahsedeceğim) bittiği için Fatih’in yanına gidip yapabileceğim bir şeyler var mı diye sorunca, bana bu hatadan bahsetti. Bu sabah iki saat süren güzel bir araştırmanını sonunda çözmüştük. Teker teker nasıl çözüldüğüne dair bir yazı yazdım yine. Başlayalım.

Hata nedir ?

Pardus 2011′de bazı ekran koruyucuları çalışmıyor. Tıkladığınızda siyah bir ekran çıkıyor. Yani çalışmıyor. Bununla ilgili bir hata kaydı girilmiş (Bug 15578 – Ekran koruyucuların bazıları çalışmıyor ). Aşağıdaki resimde görebileceğiniz gibi ilk bölümdeki “Değişen Çizgiler” adındaki ekran koruyucu siyah bir şekilde gözüküyor

Elimizde ne var ?

Hata kaydında hangi ekran koruyucuların çalışmadı bilgisi var. Bunun dışında ekran koruyucuları oluştusan xscreensaver paketçisi olan Fatih Aşıcı‘nın bir yorumu mevcut: “Bu ekran koruyucular xscreensaver paketinden çıkmamaya başlamış. Pakette yanlış bir şey olup olmadığına bakayım.”

Çözüm

Sistem ayarlarında “Ekran ve Monitör” kısmında “Ekran Koruyucu” ile ekran koruyucularını seçebilir ve değiştirebiliriz. Bazı ekran koruyucuların neden çalışmadığına bakmak için doğrudan sadece bu modülü çalıştırıp bakmak gerekiyor. Sistem ayarlarında her ayarlama ünitesi aslında birer bağımsız bir uygulama. Bunları

kcmshell4 --list

ile görebilirsiniz. Buraya göz atınca “screensaver” diye bir modül olduğunu göreceksiniz. Bunu konsoldan doğrudan

kcmshell4 screensaver

ile çalıştırabilirsiniz. Çalıştırınca da “Ekran Koruyucu” olarak söylediğim pencerenin aynısı çıkıyor. Şimdi bu ünitenin ismini öğrendiğimiz göre ,kaynak kodlarını araştırmaya başlayabiliriz. Bu paketler genellikle kdebase-workspace ve kdebase-runtime paketlerinden çıkıyor. Ben kdebase-workspace paketini açıp içinde “screensaver” ismini aratınca karşıma şunlar çıkıyor:

find -iname screensaver
./kcontrol/screensaver
./plasma/design/screensaver
./plasma/screensaver
./plasma/screensaver/containments/screensaver
./doc/kcontrol/screensaver
./krunner/screensaver

görüldüğü gibi screensaver ile ilgili birden fazla klasör var. Bizim sorunumuz sistem ayarlarında olduğu için “kcontrol” klasörüne girip orayı kurcalamaya başladım. Birden fazla dosya olsa da, genelikle bu KDE modüllerinin bir ana dosyası olur. Bunların isimlendirmesi de kcmMODULISMI.cpp ya da main.cpp şeklinde. Fakat screensaver ile ilgili bu şekilde bir dosya yoktu. Ama klasör içinde .cpp dosyaları zaten azdı ve isimlere bakarak scrnsave.cpp dosyasının doğru olacağını düşünerek açtım.

Arayüzü oluşturan kodlar ana sınıfta olacağından oraya göz atmaya başladım. Şimdi diyeceksiniz ki, KDE ya da QT bilmek gerekiyor mu kodu anlamak için? Kesinlikle Hayır! Eğer başka dillerde bir iki syntax biliyorsanız hemen hemen her kodu okuyabilirsiniz. Mesela bu ana sınıfta şöyle bir kod parçası var:

mSaverListView->setColumnCount(1);
mSaverListView->header()->hide();
mSelected = -1;
connect( mSaverListView, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), this, SLOT(slotSetup()));
connect( mSetupBt, SIGNAL( clicked() ), SLOT( slotSetup() ) );
connect( mTestBt, SIGNAL( clicked() ), SLOT( slotTest() ) );
mEnabledCheckBox->setChecked(mEnabled);
connect(mEnabledCheckBox, SIGNAL(toggled(bool)), this, SLOT(slotEnable(bool)));
mWaitEdit->setRange(1, INT_MAX);
mWaitEdit->setSuffix(ki18ncp("unit of time. minutes until the screensaver is triggered", " minute", " minutes"));

Bu koda mSaverListView bizim aramamız gereken kısım. Yani ekran koruyucuları oluşturan kısım muhtemelen. Burada muhtemelen diyorum çünkü ben şu an bunun ne yapacağını bilmiyorum. Ama isimden yola çıkarak ve arayüzde sadece bir liste olduğunu düşünürsek bu yolun yanlış olmayacağını düşünebiliriz.

Şimdi koda (scrnsave.cpp) de bu değişken ismini aratınca karşımıza birden fazla fonksiyonda karşımıza çıktığını göreceksiniz. Bunlara yine şöyle göz atınca bir iki ipucu alabiliyoruz.

void KScreenSaver::findSavers()
{
if ( !mNumLoaded ) {
    mSaverServices = KServiceTypeTrader::self()->query( "ScreenSaver");
    new QTreeWidgetItem ( mSaverListView, QStringList(), 18n("Loading...") );
if ( mSaverServices.isEmpty() )
   mLoadTimer->stop();
else
   mLoadTimer->start( 50 );
}
for( KService::List::const_iterator it = mSaverServices.constBegin();
it != mSaverServices.constEnd(); it++,mNumLoaded++)
{
SaverConfig *saver = new SaverConfig;
QString file = KStandardDirs::locate("services", (*it)->entryPath());
if (saver->read(file)) {
    mSaverList.append(saver);
} else
    delete saver;
}

Bakınız yine kodun ne yapacağını anlamamıza gerek yok. Önemli olan sorunun nereden kaynaklandığına bakmak. Mesela yazımın başında da belirtiğim gibi, xscreensaver’de bazı paketler eksik olduğunu söyledi Fatih Aşıcı.

Ben ise olaya biraz farklı baktım. Madem bu paketler eksik, neden listede biz bunları görüyoruz ? Listeyi oluşturan nedir ? Oluşturuyorsa neye göre oluşturuyor ?

Yukarıda koda bakınca şu satır göze çarpıyor:

QString file = KStandardDirs::locate("services", (*it)->entryPath());

file adında bir değişken oluşturuyor. Bunu da KDE’nin standart dizinlerinden biri olan “services” klasöründen oluşturuyor (bakınız kodun ne anlama geldiğine yine bakmadım, ama değişken isimleri zaten kendini anlatıyor)

Bundan sonra bu dizinlerin nerede olduğunu bakmaya karar verelim. Genelikle kde paketlerinin veri dosyaları /usr/share/kde4 altın atılır. Bu dizine girdiğimizde ise “services” diye bir klasör olduğunu görececeğiz. Hatta bu klasörün içinde “ScreenSavers” adında bir klasör mevcut ve klasörün içeriği de şu şekilde devam ediyor:

[/usr/share/kde4/services/ScreenSavers ]$ ls
abstractile.desktop   decayscreen.desktop     halo.desktop            loop.desktop          rubik.desktop
anemone.desktop       deco.desktop            helix.desktop           m6502.desktop         sballs.desktop
anemotaxis.desktop    deluxe.desktop          hopalong.desktop        maze.desktop          shadebobs.desktop
...

Onlarca desktop dosyası mevcut. Demek ki ekran koruyucu listesini bu dosyalar oluşturuyor. Daha doğrusu “Ekran Koruyucu” modülü listeyi buradaki dosyalardan oluşturuyor. Bu desktop dosyaların İçeriği ise şu şekilde:

[Desktop Entry]
Exec=xflame
Icon=kscreensaver
Type=Service
X-KDE-ServiceTypes=ScreenSaver
TryExec=xscreensaver
Actions=InWindow;Root;Setup;
X-KDE-Category=Gadgets;Simulations
...

Burada “Exec=” ile başlayan kısımlar ekran koruyucusunun uygulama isimlerini gösteriyor. Yani bu dosyalar çağırılıyor. “Ekran Koruyucu” modülünde, listede herhangi bir ekran koruyucusuna tıkladığınızda işte buradaki Exec komutları çalıştırılıyor. Exec komutlarında belirtilen ekran koruyucuları da xscreensaver paketi ile beraber geliyor. O zaman bu dizinin içeriği ile xscreensaver’den çıkan paketleri karşlılaştırınca. Bakalım neler göreceğiz.

Konsolda dünyanın en iyi metin düzenleyicisi olan Vim’i açıp (swh), “ex” modunda

:vs

yazarak iki tane temiz pencere açalım

Ardından xscreensaver’den çıkan çalıştırabilinir dosyaları doğrudan vimin ilk penceresine yapıştıralım. Vim’de bash komutlarını doğrudan çağırıp, çıktılarını yapıştırabilirseniz. “ex” modunda şu komutu çalıştırmak yeterli

:r !pisi info xscreensaver -F |grep libexec

İkinci pencereye geçip (Ctrl-W, W) , bu sefer /usr/share/kde4/services/ScreenSaver içeriğini yapıştıralım. “Ex” modunda şu komutu çalıştırdım bu sefer:

:r !ls /usr/share/kde4/services/ScreenSavers/

Güzel olan ise desktop dosyalarını isimleri ile xscreensaver’den çıkan ekran koruyucu uygulamalarının ismi aynı. Tek yapmamız gereken bu isimleri karşılaştırmak. Fakat resimde de gördüğünüz gibi ilk pencerede her satırın başında dizin yolun adresleri mevcut. ikinci pencerede de dosyalar .desktop dosyası ile başlıyor.

Hepsini tek tek değiştirmiyorum tabi :) Elimizde Vim gibi şahane bir uygulama var, neden kullanmayalım ? (Vim konusunda biraz fanatikliğim var, özür). Vim’de de macrolar mevcut. “qa” tuşu ile macroyu başlatıp, bir takım işler yapıp “q” ile kapatabilirsiniz. Sonra bu kaydedilen makroyu her satırda “@a” ile çağırabilirsiniz. “a” ise macronun içeriğini kaydeden belleğin ismi. İlk pencerede her satır için yapmamız gerekenler şunlar (vim komutularıyla beraber)

  1. Satırın sonuna gitmek. Vim komutu: “$
  2. Sonra bir kelime geriye gitmek. Vim komutu : “b
  3. Kelimenin başlangıcından sonuna kadar silmek. Vim komutu: “d0
  4. Bir alt satıra inmek – Vim komutu: “j

Evet üç tane hamle ile bunu güzelce halledebiliriz. Bunları sırayla yaptıktan sonra tekrar “q” tuşu ile macroyu kapatacağım. Tüm satırlar için ex modunda

:%norm! @a

çalıştırınca aşağıdaki sonucu elde ediyoruz:

İkinci pencere için ise yine bir macro oluşturuyoruz. Her satır için yapmamız gerekenler ise

  1. Satırın başına gelmek – Vim komutu: “0
  2. Satırda . ile başlayan konuma gelmek . Vim komutu: “f.
  3. Sonra bu konumdan satırın sonuna kadar silmek Vim komutu: “d$
  4. Bir alt satıra inmek – Vim komutu: “j

:%norm! @a çalıştırınca aşağıdaki sonucu elde ediyoruz:

Evet şimdi yan yana iki tane liste elde ettik. Bunları kaydedip vimdiff ile açabilirdik. Ki genelikle öyle yapılır. Fakat bu şekilde iki tane pencere açıkken de diff komutunu kullanabilrsiniz. Yapmamız gereken “ex” modunda şu satırı yazmak:

:windo diffthis

Sol tarafta xscreensaver uygulamaları görülüyor. Sağ tarafta ise /usr/share/kde4/services/ScreenSavers altındaki desktop dosyaları. Buradan görüldüğü gibi desktop dosyalarında fazlalıklar var (yeşil olanlar). Yani var olan desktop dosyaları var fakat ona karşılıklı gelen xscreensaver ekran koruyucuları mevcut değil. Hata’da buradan kaynaklanıyor.Bazıları çalışmıyorsa, sistemde kurulmadığı anlamına geliyor. Peki sistemde kurulu olmayan bir ekran koruyucu için neden bu dosyalar oluşuyor ? Bu dosyalar nerden geliyor o zaman ?

Pisi’nin bununla ilgili çok güzel bir komut var, rastgele bir dosya üzerinde bu komutu çalıştırınca:

pisi sf /usr/share/kde4/services/ScreenSavers/boxed.desktop
Searching for /usr/share/kde4/services/ScreenSavers/boxed.desktop
Package <strong>kdeartwork-screensavers</strong> has file /usr/share/kde4/services/ScreenSavers/boxed.desktop

Bu paketin hangi bileşene ait olduğunu öğrenmek için de pisi info çalıştırıyorum:

pisi info kdeartwork-screensavers
Installed package:
Name                : kdeartwork-screensavers, version: 4.5.5, release: 43
Summary             : Additional KDE4 screensavers
Description         : Contains additional screensavers for KDE4.
Component           : desktop.kde.base

Bileşenin desktop.kde.base olduğunu görünce svn deposunda o dizine girdim. Kdeartwork-screensavers adında bir klasör mevcut değildi fakat kdeartwork klasörü mevcut idi. Bu paketin pspec.xml dosyasına bakınca kdeartwork ile gelen bir alt paket olduğunu görünce paketi açıp devam ettim:

pisi bi pspec.xml --unpack

/var/pisi/ altında kaynak kodunun dizinine girdiğimizde hiç bir şey aratmadan kscreensaver klasörü gözüme çarptığı için oradan başladım devam etmeye. Bu sefer doğrudan .desktop aratarak, bu dosyaların neden oluştuğuna veyahut da nasıl oluştuğunu öğrenmek istedim. Arayınca şunlar çıktı:

grep -rHIin desktop .
./kxsconfig/ScreenSavers/truchet.desktop:1:[Desktop Entry]
./kxsconfig/ScreenSavers/decayscreen.desktop:1:[Desktop Entry]
./kxsconfig/ScreenSavers/photopile.desktop:1:[Desktop Entry]
./kxsconfig/ScreenSavers/jigglypuff.desktop:1:[Desktop Entry]
...

Şeklinde desktop dosyaları mevcuttu. Bunlar bizim desktop dosyalarının ta kendisi. Bu yüzden kxsconfig klasörüne girip oraları kurcalamaya başladım. Klasörün içindeki CMakelists.txt dosyası çözümün ta kendisiydi:

########### install files ###############

FILE(GLOB _desktopfiles "ScreenSavers/*.desktop" )
foreach(_currentdesktopfile ${_desktopfiles})
·   STRING(REGEX REPLACE ".desktop" "" _newitem "${_currentdesktopfile}" )
·   #MESSAGE(STATUS "newItem &lt;${_newitem}&gt;")
·   GET_FILENAME_COMPONENT(_screensaverName ${_newitem} NAME_WE)
·   MESSAGE(STATUS "name without extension &lt;${_screensaverName}&gt;")
·   find_file(XSCREENSAVER_FILE_FOUND ${_screensaverName}.xml PATHS ${XSCREENSAVER_CONFIG_DIR} )
·   if(XSCREENSAVER_FILE_FOUND)
·   ·   MESSAGE(STATUS "xscreensaver name ${_screensaverName} found")
·   ·   install(FILES ${_currentdesktopfile} DESTINATION  ${SERVICES_INSTALL_DIR}/ScreenSavers )
·   else(XSCREENSAVER_FILE_FOUND)
·   ·   MESSAGE(STATUS "xscreensaver name ${_screensaverName} not found")
·   endif(XSCREENSAVER_FILE_FOUND)
endforeach(_currentdesktopfile ${_desktopfiles})

Burası tam olarak düşündüğüm şeyi yapıyordu. Desktop dosyalarının ismini XSCREENSAVER_CONFIG_DIR altından bakıyor ve eğer aynı dosya varsa gidip “desktop” dosyasını kuruyor.

İşte bütün sorun burada. Sorun şu ki, bu betik her koşulda tüm desktop dosyalarını yüklüyor. Xscreensaver’den çıkan ekran koruyucularını hiçe sayıyor. Yukarıdaki şu satırlarda sorun var yani:

find_file(XSCREENSAVER_FILE_FOUND ${_screensaverName}.xml PATHS ${XSCREENSAVER_CONFIG_DIR} )
if(XSCREENSAVER_FILE_FOUND)
...

Tam olarak hatayı görmek için cmake’in MESSAGE komutu ile şu şekilde yazıp Makefile’ı çalıştırıyorum tekrardan:

find_file(XSCREENSAVER_FILE_FOUND ${_screensaverName}.xml PATHS ${XSCREENSAVER_CONFIG_DIR} )
MESSAGE(STATUS ${XSCREENSAVER_FILE_FOUND} )
if(XSCREENSAVER_FILE_FOUND)
...

Aldığım sonuç ise şu şekildeydi.

-- /usr/share/xscreensaver/config/compass.xml
-- xscreensaver name truchet found
-- name without extension
-- /usr/share/xscreensaver/config/compass.xml
-- xscreensaver name decayscreen found
-- name without extension
-- /usr/share/xscreensaver/config/compass.xml
-- xscreensaver name photopile found
-- name without extension
-- /usr/share/xscreensaver/config/compass.xml
-- xscreensaver name jigglypuff found

Burada “compass” ile bitenler bizim XSCREENSAVER_FILE_FOUND değişkenin değeri. Gördüğünüz gibi aslında bu değişken her file_find komutu çağırıldığında değişmesi gerekiyordu. Fakat bizde değişmiyor

Peki neden ?

Fatih Aşıcı ve Gökçen Eraslan ile bu konuya bakarken, Gökçen şu komutu file_find’dan önce yerleştirmemizi söylemişti

unset(XSCREENSAVER_FILE_FOUND CACHE)
find_file(XSCREENSAVER_FILE_FOUND ${_screensaverName}.xml PATHS ${XSCREENSAVER_CONFIG_DIR} )

Bu şekilde tekrar make komutunu çalıştırdığımda şu çıktıyı almaya başladım

-- name without extension
-- /usr/share/xscreensaver/config/truchet.xml
-- xscreensaver name truchet found
-- name without extension
-- /usr/share/xscreensaver/config/decayscreen.xml
-- xscreensaver name decayscreen found
-- name without extension
-- /usr/share/xscreensaver/config/photopile.xml
-- xscreensaver name photopile found
-- name without extension
-- /usr/share/xscreensaver/config/jigglypuff.xml

Evet görüldüğü gibi artık XSCREENSAVER_FILE_FOUND değişkeni güzel bir şekilde değişmeye başlamıştı. Bu satırı ekleyip baştan derletip kdeartwork’u kurunca herşey güzelce çalıştı. Peki bu satırı neden eklememiz gerekiyordu ?

Cmake’de file_find komutunun yardım dosyasını şu şekilde açarak:

cmake --help-command find_file

Aşağıdaki kısmı okuyunca her şey daha iyi anlaşıldı:

This command is used to find a full path to named file.  A cache entry
named by <var> is created to store the result of this command.  If the
full path to a file is found the result is stored in the variable and
the search <strong>will not be repeated unless the variable is cleared</strong>. </var>

Yani file_find komutu ilk bulduğu değeri belleğe atıp kaydediyor. Ondan sonraki değerleri hiçe sayıyor. Bellekteki değeri silmemiz bekliyor.”unset” komutu ile işte bu değişkeni bellekten siliyor tam olarak. Paketi yamalayarak sisteme kurduktan sonra aşağıda “Ekran Koruyucu“yu açtığımda gördüğünüz gibi “Değişen Çizgiler” ekran koruyucusunun yok olduğunu görürsünüz:

Hepsi bu kadar. Yine bir satırlık bir yama ama gördüğünüz gibi bir çok şeyi değiştiriyor. Bunun gibi yüzlerce hata çözüldüğünü, çok daha eksantrik olanların olduğundan bahsetmeye gerek yok herhalde. Bazıları gerçekten çok zaman alabiliyor. Örneğin benim yazdığım bir diğer yazımdaki hata 2-3 günümü alırken, bu hata 2 saatimi almıştı. Biraz da o anki ruh halin de etkisi olabiliyor herhalde.

Bu arada yukarıda anlatıklarımın çoğu sesli düşünce. Hataya bakarken belki yüzlerce komut kullanıyorsunuz, vim macrolarını aslında çok hızlı bir şekilde yazıyorsunuz. Ben sadece adım adım neler yapıldığını ve nerelere gidebileceğini gösterdim yine. Vim ile yaptığım düzenlemelerde biraz ayrıntıya girdim biliyorum, fakat onu da macro ve iki dosya arasındaki karşılaştırma olayların sıkça yapıldığından biraz ipucu şekilde olsun dedim.Sorularınız varsa daha detaylı anlatabilirim.

14
Eki

2011 kullananlar bu gün güncelleme yapmaya çalıştığı taktirde aşağıdaki gibi bir hata ile karşılaşacaktır:

“Depolar güncelleniyor
Depo güncelleniyor: pardus
Program sonlandırıldı.
“http://packages.pardus.org.tr/pardus/2011/stable/x86_64/pisi-index.xml.bz2.sha1sum” hedef dosyasına erişilemedi: [Errno 14] HTTP Error 404 : http://packages.pardus.org.tr/pardus/2011/stable/x86_64/pisi-index.xml.bz2.sha1sum
Genel yardım için lütfen ‘pisi help’ komutunu kullanınız.”

Peki bu neden kaynaklanıyor? Yeterli bir açıklama olarak “Geliştirici” listesine “Fatih Aşıcı” adlı geliştiricinin attığı bir eposta yeterli olabilir:

“Selamlar,

Mass rebuild neredeyse tamamlandı. Yeni pisi ile oluşturulan paketler packages.pardus.org.tr’de
yerini aldı. Sıkıştırılmış index dosyasını artık xz ile sıkıştırdığımız için depo adreslerini
değiştirmek gerekiyor. Tabi bunu yapmadan önce yeni pisi’yi eski formattaki paketini kullanarak
kurmanız gerekiyor. 32 bit [1] ve 64 bit [2] için pisi paketlerini cekirdek’e koydum.

Mass rebuild sırasında debug paketleri de üretildi. [3] ve [4] adreslerinden bu paketleri içeren
depolara da ulaşabilirsiniz.

İyi çalışmalar…

[1] http://cekirdek.pardus.org.tr/~fatih/tmp/pisi-2.4_alpha1-182-p11-i686.pisi
[2] http://cekirdek.pardus.org.tr/~fatih/tmp/pisi-2.4_alpha1-182-p11-x86_64.pisi
[3] http://packages.pardus.org.tr/pardus/2011/devel/i686-debug/
[4] http://packages.pardus.org.tr/pardus/2011/devel/x86_64-debug/

Duyarlı bir 2011 kullanıcısı olarak bu bilgiyi paylaşmak istedim. Güle güle kullanın :)


Filed under: Özgürlükİçin Gezegenine Tagged: Özgürlükİçin Gezegenine, pardus 2011, Pisi