26
Ara

ÇOMAR ve PiSi kardeş, sanırım herkes biliyor bunu. Biri paketleri kuruyor, güncelliyor; diğeri kurulu paketlerin yapılandırma işlerini üstleniyor. Peki, ÇOMAR ve PiSi beraber nasıl çalışıyor? Paket yapıyorsanız ya da yapmak istiyorsanız, eninde sonunda "ÇOMAR betiği yaz" diyecektir birileri size, ve elbet bu soruyu soracaksınız. PiSi paketi yapmak çocuk oyuncağı olduğundan, diğer paketlerdeki ÇOMAR betiklerini alıp ufak değişikliklerle kendi PiSi paketlerinizde kullanabildiğinizden cevabını bilmemeniz ya da öğrenmemeniz muhtemelen uzunca bir süre etkilemez sizi, ama paket yapım işinizi kolaylaştırabilir de.

PiSi kaynak paketlerinde (pspec.xml), ikili paketin (.pisi uzantılı) sağladığı ÇOMAR görevlerinin ve her görevin hangi Python dosyası tarafından sağlandığının listesi bulunur:

    <Package>
        <Name>python</Name>
        <Files>
            ...
        </Files>
        <Provides>
            <COMAR script="package.py">System.Package</COMAR>
            <COMAR script="packhandler.py">System.PackageHandler</COMAR>
        </Provides>
    </Package>

Betikler, kaynak paket ile aynı dizindeki comar/ dizininde (hiç akla gelmez, değil mi?) bulunur. System.Package, System.PackageHandler ve System.Service dışındaki görevler PiSi ile ilgili olmadığından başka bir yazının konusu, bunlar muhtemelen Sistem Ayarları ekranındaki uygulamalardan birinin ihtiyaç duyduğu altyapıyı sağlar.

System.Package görevini yerine getiren betik, paket kurulduktan sonra, kaldırılmadan önce ve kaldırıldıktan sonra çalıştırılacak metodları içerir. Betik içinde, metodlardan herhangi birinin tanımlı olması zorunlu değildir. Dosya haklarını ve sahiplerini değiştirecekseniz postInstall() metodu, paket kaldırılmadan önce ayar dosyalarında değişiklik yapacaksanız (mod_php'yi kaldırmadan önce Apache ayarlarını değiştirmek gibi) preRemove() metodu, paket kaldırıldıktan sonra artık dosyaları temizleyecekseniz postRemove() metodu kodlarınızı yazmanız gereken yer.

import re

def postInstall(fromVersion, fromRelease, toVersion, toRelease):
    module_enable('PHP5')

def preRemove():
    module_disable('PHP5')

def module_enable(mod):
    ...

def module_disable(mod):
    ...

System.PackageHandler'da durum biraz daha farklı. Bu betikler, betiğin çıktığı paket kurulması/kaldırılması sırasında değil, sisteme herhangi bir paket kurulduğunda ya da kaldırıldığında çalıştırılıyor. Çekirdek modülleri ve Python kütüphaneleri gibi, paket deposunda onlarcası bulunan ve hepsine birer System.Package betiği yazsanız üç aşağı beş yukarı aynı betiğin ortaya çıkacağı paketlerde, paketçinin yükünü ve kod tekrarını azaltmak için kullanılıyorlar.

Django paketini kurduğunuzda, sistemdeki her System.PackageHandler betiği çalıştırılır ve betik içindeki metodlara, pakete ait iki XML dosyası parametre olarak verilir: metadata.xml ve files.xml. Bu dosyalardan ilki, pakete ait kimlik bilgilerinin barındırır, ikincisi ise, paketten çıkan her dosyayı ve dosyalara ait özet bilgileri. ÇOMAR betikleri, files.xml dosyasında, kendilerini ilgilendiren bir dosya varsa (mesela, Python'a ait SPH betiği, ikili paket .py dosyası içeriyorsa) ya da metadata.xml'de ilgili oldukları bir veri/etiket bulunuyorsa işlem yaparlar.

Python'a ait SPH betiği aşağıda, yeni başlayanlar için ağır bir örnek ancak örnek olsun diye yazacağım basit bir betik gerçekçi olmazdı.

import piksemel
import sys
import os

pythonPath = "/usr/lib/python%d.%d" % sys.version_info[:2]

def byteCompile(filepath):
    doc = piksemel.parse(filepath)
    paths = []
    for item in doc.tags("File"):
        path = item.getTagData("Path")
        if path.endswith(".py"):
            paths.append("/"+path)

    if paths:
        os.system("/usr/bin/python %s/py_compile.py %s" % (pythonPath, " ".join(paths)))

def removeByteCompiled(filepath):
    doc = piksemel.parse(filepath)
    for item in doc.tags("File"):
        path = item.getTagData("Path")
        if path.endswith(".py"):
            try:
                # Remove .pyc and .pyo
                os.unlink("/%sc" % path)
                os.unlink("/%so" % path)
            except OSError:
                pass

def setupPackage(metapath, filepath):
    byteCompile(filepath)

def postCleanupPackage(metapath, filepath):
    removeByteCompiled(filepath)

Bu gecelik bu kadar...

22
Ara

ÇOMAR (COnfiguration MAnageR - Yapılandırma Yöneticisi), sıradan bir işi yapmak için Google'da saatler geçirmeyin, anlamadığınız bir formatta yazılmış ayar dosyalarını kurcalamayın ve bu sırada sisteminizi uçurmayın diye oluşturulmuş bir ayar yönetim sistemi. PiSi'nin kardeşi olur kendisi; biri uygulamaları kurar, diğeri yapılandırır - ya da en azından yapılandırma işi için kolay kullanılabilir bir ortam yaratır.

Misal, ağ bağlantısı kurmak istiyorsunuz. Bunu farklı yollarla, farklı yöntemlerle yapabilirsiniz. Ethernet, wireless, modem ve 3G kullanabilirsiniz. Ethernet ile yapacaksanız iş nispeten kolaydır; DHCP istemcisini açar, IP almaya çalışırsınız. makul bir süre sonra IP alamazsanız, ağda bir sorun olduğunu anlarsınız; ya da IP alıp hayatınıza devam edersiniz. Kablosuzda durum biraz daha karışıktır. DHCP ile IP almadan önce -varsa- kimlik doğrulama yaparsınız, doğrulama şekline göre farklı ayarlar yapar, farklı uygulamalar çalıştırırsınız. Her işi konsoldan yapmanızı gerektiren sadist bir işletim sistemi kullanmıyorsanız, genelde bu iş için bir araç kullanırsınız. İşlem yapmadan önce sizden yetkili kullanıcı parolasını ister, ilgili dosyaları değiştirir, gerekli programları çalıştırır.

Çoğu Linux dağımı bu işi böyle yapar. Belirli bir görevi yerine getirmek için oluşturulmuş -çoğu dağıtıma özgü- yönetim arabirimleri, kendi yöntemleri ile ayarları değiştirir, komut çalıştırır ve sonuçta kullanıcının isteğini yerine getirir. Sorun ise, aynı ayar dosyaları ya da uygulamalar farklı yönetim araçları ve bu araçlardan bilgi almak isteyen diğer uygulamalar tarafından kullanılmak istendiğinde ve kullanıcılara bir işi yapabilmeleri için yetkili kullanıcı (root) hesabı parolası verilmesi gerektiğinde ortaya çıkar.

ÇOMAR, burada devreye girer, sade ve basit bir çözüm ile. Pardus'ta sık yapılan işler için görev modelleri tanımlanır ve bu görevleri üstlenecek uygulamaların birbirlerinin ayağına basmadan, altyapıdaki değişikliklerden (değişen sürümler, kullanılan yeni teknolojiler, ...) çalışmalarını sağlayacak ve gerektiğinde yetki kontrolü yapabilen bir yönetim katmanı oluşturulur.

  • Ağ bağlantısı yönetimi
    • Aygıtları listele
    • Aygıt üzerinde bir bağlantı oluştur
    • Adres ayarları yap
    • Bağlantıyı aç
    • Bağlantı bilgilerini göster
    • ...
  • Servis yönetimi
    • Servisleri listele
    • Servisi aç
    • Servis bilgilerini al
    • ...
  • ...

Görev modelleri yukarıda görüldüğü gibi olabildiğince sadedir, uygulamalardan ve teknolojilerden bağımsızdır. Alt görevleri yerine getirecek kodlar ise görevi yerine getirecek uygulamanın PiSi paketi ile beraber gelen Python betikleridir (bunlara ÇOMAR betikleri diyoruz) ve bu betikler içinde modelde tanımlı her alt görevi yerine getiren bir fonksiyon bulunmaktadır. Her uygulama, aynı görevi farklı şekillerde yerine getirdiğinden, her uygulamanın ÇOMAR betiği farklıdır. Betikler, uygulamaların PiSi paketlerini hazırlayan -teorik olarak, Pardus geliştiricileri arasında, o uygulamayı en iyi bilen- geliştiriciler tarafından yazıldığından, arabirimlerin keyfi yöntemlerle ayar dosyası değiştirme ya da komut çalıştırmasından daha güvenli ve düzenlidirler. Detaylı bilgi için, mevcut görev modelleri ve bu görevleri yerine getirecek ÇOMAR betiklerinin formatları incelenebilir.

Arabirimler ve ÇOMAR betikleri arasında duran ve yetki kontrolü yapan katmanda ise, yapılan iş teknik olarak karışık görünse de, aslında son derece basittir. Arabirimden alınan bir çağrı, örneğin ağ bağlantısı kurma emri; çağrıyı yapan kullanıcının o işi yapmaya yetkisi olup olmadığı kontrol edildikten sonra, ilgili uygulamanın ÇOMAR betiğine yönlendirilir ve betikte tanımlı fonksiyon çalıştırılır. Sıkıcı detaylar için, iletişim için kullanılan DBus'a (İngilizce) belgeler ve ara katman ile ilgili tasarım notları incelenebilir.

Arabirimlerin, bu ara katman ile iletişimi kolay bir şekilde yapabilmeleri için -nispeten- basit bir Python kütüphanesi bulunmaktadır:

    import comar
    link = comar.Link()
    print "Servis betiği olan uygulamalar:"
    print list(link.System.Service)

Bu Python kütüphanesi ile ilgili daha fazla örnek, COMAR API projesine ait Beni Oku dosyasında ve örnekler dizininde bulunabilir.

21
Ara

Özgür Yazılım Sohbetleri'nin ilki, 26 Aralık 2009 Cumartesi 13:30'da Beşiktaş Çıtır Cafe'de yapılacak. Çıtır Cafe, Barbaros Bulvarı ve Hasfırın Caddesi'nin kesiştiği yerde.

Facebook etkinlik sayfası burada.

19
Ara

Ayda bir toplanalım, özgür yazılım konuşalım. Var mısınız?

Ek: Konuları önceden planlanmamış, belki içeriği diğer şehirlerden kalkıp gelmenize değmeyecek, sıradan arkadaş toplantıları tadında olacak bu ÖY sohbetleri.

Sürekli aynı şehirde, aynı mekanda da olmayacak bu sohbetler. İstanbul/Ankara'da her ay düzenli yapılacak muhtemelen bu sohbetler, ama ara sıra otobüse atlayıp Çanakkale'ye, İzmir'e, Burdur'a (Gökçen, bu senin için) gidelim diyeceğiz. Belki de başkaları organize edecek bu tür sohbetleri, kendimizi bir hafta sonu farklı diyarlarda bulacağız.

Ek 2: Ankara Öİ ekibi yapıyordu bu tür etkinlikler, katılamadığım için üzülüyordum. Fikir sizden çıktı, herkese selamlar.

14
Ara

Pardus'un hata takip sistemini kullandıysanız, hata arama sayfalarının tepesindeki nükteleri (quips) farketmişsinizdir.

Bugzilla Quips
  • Yazdığım kodda hata yok, hatalı olan GCC.
  • Bugün API kıran yarın kalp de kırar...
  • Kötü laptop yoktur, backport edilmemiş patch vardır.
  • Butonun etiketini psmillah yaptım, takdir-i ilahi'den seed ediyor.
  • Yani bir hata çıkmışsa bir hata vardır.
  • Firefox'un yumuşak kaydırmasını kapatınca traktör ile aşşağı yukarı kaydırmada duraksamalı çalışması düzeldi.
  • Seni sürüm yöneticisine söylicem, sürüm sürüm süründürücem.

gibi efsanevi açıklamalar, sağda solda duyulup akla kazınan cümlelerdir bunlar. Hepsinin bir hikayesi vardır, ve çoğu ayrı bir blog girdisi olmayı hak eden hikayelerdir.

30
Kas

ÇOMAR (COnfiguration MAnageR - Yapılandırma Yöneticisi), sıradan bir işi yapmak için Google'da saatler geçirmeyin, anlamadığınız bir formatta yazılmış ayar dosyalarını kurcalamayın ve bu sırada sisteminizi uçurmayın diye oluşturulmuş bir ayar yönetim sistemi. PiSi'nin kardeşi olur kendisi; biri uygulamaları kurar, diğeri yapılandırır - ya da en azından yapılandırma işi için kolay kullanılabilir bir ortam yaratır.

Misal, ağ bağlantısı kurmak istiyorsunuz. Bunu farklı yollarla, farklı yöntemlerle yapabilirsiniz. Ethernet, wireless, modem ve 3G kullanabilirsiniz. Ethernet ile yapacaksanız iş nispeten kolaydır; DHCP istemcisini açar, IP almaya çalışırsınız. makul bir süre sonra IP alamazsanız, ağda bir sorun olduğunu anlarsınız; ya da IP alıp hayatınıza devam edersiniz. Kablosuzda durum biraz daha karışıktır. DHCP ile IP almadan önce -varsa- kimlik doğrulama yaparsınız, doğrulama şekline göre farklı ayarlar yapar, farklı uygulamalar çalıştırırsınız. Her işi konsoldan yapmanızı gerektiren sadist bir işletim sistemi kullanmıyorsanız, genelde bu iş için bir araç kullanırsınız. İşlem yapmadan önce sizden yetkili kullanıcı parolasını ister, ilgili dosyaları değiştirir, gerekli programları çalıştırır.

Çoğu Linux dağımı bu işi böyle yapar. Belirli bir görevi yerine getirmek için oluşturulmuş -çoğu dağıtıma özgü- yönetim arabirimleri, kendi yöntemleri ile ayarları değiştirir, komut çalıştırır ve sonuçta kullanıcının isteğini yerine getirir. Sorun ise, aynı ayar dosyaları ya da uygulamalar farklı yönetim araçları ve bu araçlardan bilgi almak isteyen diğer uygulamalar tarafından kullanılmak istendiğinde ve kullanıcılara bir işi yapabilmeleri için yetkili kullanıcı (root) hesabı parolası verilmesi gerektiğinde ortaya çıkar.

ÇOMAR, burada devreye girer, sade ve basit bir çözüm ile. Pardus'ta sık yapılan işler için görev modelleri tanımlanır ve bu görevleri üstlenecek uygulamaların birbirlerinin ayağına basmadan, altyapıdaki değişikliklerden (değişen sürümler, kullanılan yeni teknolojiler, ...) çalışmalarını sağlayacak ve gerektiğinde yetki kontrolü yapabilen bir yönetim katmanı oluşturulur.

  • Ağ bağlantısı yönetimi
    • Aygıtları listele
    • Aygıt üzerinde bir bağlantı oluştur
    • Adres ayarları yap
    • Bağlantıyı aç
    • Bağlantı bilgilerini göster
    • ...
  • Servis yönetimi
    • Servisleri listele
    • Servisi aç
    • Servis bilgilerini al
    • ...
  • ...

Görev modelleri yukarıda görüldüğü gibi olabildiğince sadedir, uygulamalardan ve teknolojilerden bağımsızdır. Alt görevleri yerine getirecek kodlar ise görevi yerine getirecek uygulamanın PiSi paketi ile beraber gelen Python betikleridir (bunlara ÇOMAR betikleri diyoruz) ve bu betikler içinde modelde tanımlı her alt görevi yerine getiren bir fonksiyon bulunmaktadır. Her uygulama, aynı görevi farklı şekillerde yerine getirdiğinden, her uygulamanın ÇOMAR betiği farklıdır. Betikler, uygulamaların PiSi paketlerini hazırlayan -teorik olarak, Pardus geliştiricileri arasında, o uygulamayı en iyi bilen- geliştiriciler tarafından yazıldığından, arabirimlerin keyfi yöntemlerle ayar dosyası değiştirme ya da komut çalıştırmasından daha güvenli ve düzenlidirler. Detaylı bilgi için, mevcut görev modelleri ve bu görevleri yerine getirecek ÇOMAR betiklerinin formatları incelenebilir.

Arabirimler ve ÇOMAR betikleri arasında duran ve yetki kontrolü yapan katmanda ise, yapılan iş teknik olarak karışık görünse de, aslında son derece basittir. Arabirimden alınan bir çağrı, örneğin ağ bağlantısı kurma emri; çağrıyı yapan kullanıcının o işi yapmaya yetkisi olup olmadığı kontrol edildikten sonra, ilgili uygulamanın ÇOMAR betiğine yönlendirilir ve betikte tanımlı fonksiyon çalıştırılır. Sıkıcı detaylar için, iletişim için kullanılan DBus'a (İngilizce) belgeler ve ara katman ile ilgili tasarım notları incelenebilir.

Arabirimlerin, bu ara katman ile iletişimi kolay bir şekilde yapabilmeleri için -nispeten- basit bir Python kütüphanesi bulunmaktadır:

    import comar
    link = comar.Link()
    print "Servis betiği olan uygulamalar:"
    print list(link.System.Service)

Bu Python kütüphanesi ile ilgili daha fazla örnek, COMAR API projesine ait Beni Oku dosyasında ve örnekler dizininde bulunabilir.

2
Kas

Uzun bir süredir zamanımı alan en büyük iş, Kurumsal 2.0 ile birlikte görücüye çıkacak olan uzaktan yönetim sistemi Ahenk'in ikinci sürümü. Ahenk 2.0, zamanında, fazlasıyla MSB odaklı bir yazılım haline geldiğinden hiçbir Pardus sürümüne dahil etmediğimiz, sadece kaynak kodları (hep yaptığımız, ve hep yapacağımız gibi) SVN depolarında yayınladığımız ilk sürüm ile hemen hemen aynı özelliklerle piyasaya çıkacak.

Ahenk 2.0, ilk sürüme göre çok daha uzun bir ömre sahip olacak ve hayatını "dolu dolu" yaşayacak. İlk adımda planlanan özellik listesi şöyle:

  • Kullanıcı/grup yönetimi [2.0]
  • Paket güncellemeleri yönetimi [2.0]
  • Sistem servisleri yönetimi [2.0]
  • Paket yönetimi [2.1]
  • Güvenlik duvarı yönetimi [2.1]
  • Log yönetimi [2.1]

Ahenk 2.0 ile ilgili bir sonraki blog girdisinde uzaktan yönetim arabirimi Lider 2.0'ın ekran görüntülerine yer vereceğim, görüşmek üzere.

10
Eyl

Etkinlik içeriğinin gizlilik seviyesi hakkında bilgi sahibi olmadığımdan, önceki yazımda Bosna-Hersek'te ne amaçla bulunduğumu yazmamış, sadece katıldığım etkinliğin adını vermekle yetinmiştim. Sıkı durun açıklıyorum: katılan ülkelerin ordularının, kullandıkları iletişim sistemlerin birlikte çalışma testlerini yaptığı Combined Endeavor 2009 tatbikatındayım, bir diğer Pardus geliştiricisi Ekin Meroğlu, farklı kurumlardan mühendisler ve TSK personeli ile.

CE 2009'a kendi sertifika otoritesi (kök SM dışında, elbette) ve tüm sunucu ve istemcilerinde Windows harici bir işletim sistemi kullanan tek ikinci (ABD'nin bazı sunucularında RedHat kullandığını sonradan öğrendik, teste katılan sunucularda hâlâ tekiz) ülke olarak hem havamızı atıyor, hem de sistemlerimizi farklı senaryo ve ortamlarda test ederek tecrübe kazanıyoruz. Bosna-Hersek'in ev sahipliği yaptığı, ABD Avrupa Komutanlığı'nın organize ettiği bu organizasyonda en farklı ülke olmak gurur verici olsa da, farklılıktan kaynaklanan problemler can sıkıcı bir hal alabiliyor. Internet Explorer için yazılmış bir JavaScript, ya da Outlook düşünülerek hazırlanmış bir test maddesi, test öncesi 30º sıcakta ülke ülke dolaşıp sorumluları ikna etmenizi gerektiriyor. Bana sorarsanız, bu da diğer testler gibi, yeşil renkli kocaman bir "GEÇTİ" işaretini hakediyor.

Etkinliğin ikinci haftasında PKI testleri yapılacak ve imzalama/şifreleme işlemleri Pardus üzerinde MA3 (Milli Açık Anahtar Altyapısı) kullanan akıllı kart AKIS ile yapılacak. Yerel ağda akıllı kart ile yapılan SSL testleri başarıyla geçiyor, resmi testlerden de başarıyla geçmeyi umuyoruz.

Ek: VPN testleri son güne ertelendi, kimlik denetimsiz ve PKI'lı tüm testler geçildi. Bundan sonra aynı testler farklı bölgelerdeki ülkelerle yapılacak. Hayat da yarısından sonra hep tekrar değil mi zaten?

2
Eyl

Eylül'ün 18'ine kadar Banja_Luka'daki Combined Endeavor 2009 etkinliğindeyim. Uzun bir aradan sonra yine business casual (arada bir informal attire, ya da başka bir deyişle Suit Up!) giyinecek olmak zor gelse de (tamam, kabul ediyorum, takım elbiseleri seviyorum) keyfim yerinde.

30
Ağu

Üzerinde çalıştığım projeler hakkında haftada birkaç kez bir şeyler karalamaya çalışıyorum ama uzun süredir ekipteki herkes gibi aynı anda bir çok proje üzerinde çalıştığım ve her birine yaptığım katkı, hakkında blog yazamayacak kadar ufak olduğundan her "bloglama" çabam başarısızlıkla sonuçlanıyor. Kabul ediyorum, normal blog girdilerim birkaç kısa paragraftan oluşuyor; ancak ~20 cümlelik bir liste verip "bugün bunları yaptım" yazmak garip geliyor. Hastalıklar ve yazmaya çalışırken yaşanan diğer dış etkenler de bloglamayı baltalıyor, ortaya böyle kısa yazılarla dolu, seyrek yazılan bir "günlük" çıkıyor.

Geçtiğimiz haftanın yarısını hasta, önceki haftanın yarısını da şehir dışında görevde geçirince ortaya tek maddelik bir iş listesi çıktı. O da 2009 ilk dönem stajyeri Mete Bilgin ile NOAN'ı yayına hazır hale getirmemiz. NOAN, geliştiricilerin paket süreçlerini takip ve gerektiğinde sürece müdahale etmesini, kullanıcıların ise paketler hakkında bilgi almasını sağlayan bir web uygulaması. Arayüz cilalanıp parlatıldıktan sonra yayına alacağız.

Bir kez daha "umarım bu blog girdisi bir dönüm noktası olur da her gün yazmaya başlarım" diyeyim de tam olsun...

29
Ağu

Ev ve iş arkadaşım Gökmen'in askere gitmesi, yaklaşık bir senedir oturduğum evden ve evin bulunduğu ortamdan kurtulmak için iyi bir fırsat olmuştu ve iki senedir ara sıra uğrayabildiğim İzmit'teki evime dönmüştüm. Pencereden baktığımda gördüğüm şu manzaraya rağmen, İzmit'e "Tatillerde görüşürüz" dedim ve İstanbul'da ev aramaya başladım. Öyle görünüyor ki, önümüzdeki ay sonu yeni evime yerleşmiş olacağım, iki Pardus geliştiricisi ile beraber...

Başlık, Pinhani'nin enfes şarkısından.

10
Ağu

2 haftalık idari izin sonrası, daha (2 gün ayrı kaldığımda özlediğim) ofisimle hasret gideremeden, Ankara'nın yolunu tuttum; her zamanki gibi Deniz Kokusu'nu mırıldanarak. İstanbul'a İzmit'e dönüş kısmı hala seyahatin en güzel kısmı olsa da, seviyorum bu şehri garip bir şekilde. Akşam 8'e kadar, daha önce gitmediğim bir kurumda, en az ofisteki kadar yoğun çalışıp Atatürk Bulvarı'ndaki uzun bir yürüyüşün ardından Tübitak misafirhanesine gidiyorum. Yol üstünde biryerlerde yemek yiyor, kitap ya da müzik marketlere uğruyor, ya da farklı bir deyişle "hiçbir şey yapmadan" ertesi güne hazırlanıyorum. Sanırım buraya her geldiğimde, farkına varmadan bir "uslu kentli" oluyorum.

3
May

Uzun zamandır yazmıyorum, ama yazacak şey olmadığından değil. Bilakis, geçtiğimiz bir ay boyunca olanlar, önceki birkaç ayda olanların toplamından da fazlaydı. Buna rağmen 20 gün boyunca yazı yazmamamın sebebi; okuyucuları sıkmayacak, yapılanların küçümsenmemesini sağlayacak uzunlukta blog girdisi yazmaya çalıştığım her denemenin, "dur şu paketi 2009 deposuna alayım" ya da "şu hatayı düzelteyim" düşüncesiyle bölünmesi ve "daha sonra yazarım" dememin ardından uzunluğu sürekli değişen yapılacaklar listemin içinde kaybolmamdı.

Daha fazla ertelemenin anlamsız olduğunu ve ayda iki girdi yayınlanan sitenin de "günlük" olamayacağını düşünerek, "bu ay daha fazla yazı yazacağım" sözü ile ("gece sabahlayacağıma, şimdi yatarım; sabah dinç kafa ile kalkar çalışırım" sözü ile aynı kefeye konmamalı), geçtiğimiz ay neler olduğunu kısa cümlelerle anlatmaya karar verdim, buyrun...

Diyordum ki, "sudo libdb-4.5.so bulunamadı diye hata veriyor" diyen Gökmen, yazamama sebeplerinden biri oldu. Sona bu kadar yaklaşmışken, yazılanları silmek olmaz. Bu da "yazamamak" hakkında bir yazı olarak defterimde bulunsun.

12
Nis

Pardus'un uzaktan yönetim çatısı Ahenk'in yeni sürümü için çalışmalara başladık. İlk sürümde, istemcilere ait politikaların LDAP'ta tutulduğu, istemcilerin kendilerine (ve bağlı oldukları gruba) ait politikaları belirli aralıklarla çektiği ve politikaların COMAR ile uygulandığı basit bir yapı kullandık, kurulum zorluğu ve arabirimin kullanışsız olması dışında ciddi problemlerimiz olmadı.

Mevcut sürüm, ajan uygulamasında yapılacak ufak COMAR değişiklikleri ile 2008/2009'da çalıştırılabilir durumda. Paket yönetim modülüne uzaktan paket kurma/kaldırma desteğini eklemek (ilk sürümde sadece güncelleme desteği vardı) ve servis modülünü hayata geçirmek elzem görünüyor ilk adımda. Sonrasında ise yapılması gereken değişikliklerden aklıma gelenler şöyle:

Politikaların anında uygulanabilmesi ve gerektiğinde istemciden anlık bilgi alabilmek için server-push desteği. Tek başına (Open)LDAP ile yapamayacağımız bir şey bu. İstemcilerin politika alma frekansını artırabiliriz elbet, ancak istemci sayısının fazla olduğu ortamlarda trafik yükü de artar. LDAP'la birlikte Jabber kullanmak geliyor aklıma, sevdiğimiz bir protokol kendisi. Uçlarda çalışacak ajan uygulamasına Jabber istemcisi eklemek yetiyor, İksemel'imiz, Piksemel'imiz varken oldukça kolay bir iş :)

Yönetim arabiriminin bir çeşit LDAP editörü olmaktan öteye gitmesi gerekiyor bir de. Ahenk'in ilk yönetim arabirimi Lider'in yetenekleri sınırlı, arayüzü kullanışsız. Server-push desteği için Jabber özelliklerine sahip olmalı, elbette daha fazlası yapılabilir bu enfes protokol ile.

İlk sürümde bulunan paket, kullanıcı hesapları ve servis yönetim politikalarının yeterli olmayacağı aşikâr. Muhtelif kurum ve kullanıcılarla yapılan toplantı ve sohbetlerde hangi işlerin uzaktan yönetilmesi gerektiği ortaya çıkıyor, bunların ne olacağı başka bir blog girdisinin konusu olsun...

1
Nis

UEKAE bahçesinde bizimle her sabah ve öğlen çay içmek; bir yandan da 2009 staj projelerinden biri ya da bizim aklımıza gelmeyen ancak faydalı olacağını düşündüğünüz başka bir proje üzerinde çalışarak Pardus'a katkıda bulunmak istiyorsanız, her sene olduğu gibi bu sene de başvurularınızı staj@pardus.org.tr adresine gönderebilirsiniz. Şimdiden başarılar.

Programcılar Nasıl CV Okur?* belgesi bizim için de geçerli, okumanızı öneririm :)

* Steve Hanov'un günlüğünden.

31
Mar

Bölünerek çoğalmaya devam ediyoruz. Geliştiricilerimizden Mete Alpaslan, bundan böyle çalışmalarına UEKAE çatısı altında devam edecek. Ofisimize hoş geldi, sefalar getirdi.

Ben de bu haftadan itibaren görevime tam zamanlı olarak devam edeceğim, eylemlerim şiddetini arttırarak devam edecek, iyi seyirler.

18
Şub

En iyi fikirler, bilgisayar başında olmadığım zamanlarda gelmiştir hep. Bugün de öyle olmasını umarak, defterimi alıp dışarı çıkıyorum, aklımda bir dizi 2009 planıyla.

Listenin başında, ilk sürümden bu yana fazla değiştirmediğimiz Network Manager var. Yeni yılda, yeni sürümde bağlantı profilleri anlayışı biraz değişecek. Kurulmasını istediğiniz bağlantıları tek tek seçmek yerine, bulunduğunuz mekanı seçeceksiniz (ya da o kendi bulacak), mekan ile ilişkilendirilmiş bağlantıları kuracak, güvenlik duvarı ayarlarını yapacak. Mekana bağlı diğer görevler de dahil edilebilir bu sisteme, elbette.

Arayüz mock-up'larıyla dönerim belki, kim bilir?

5
Oca

Bitirme tezine son kez göz atacak, ufak tefek hataları düzeltecek ve sunumda kullanmak üzere notlar çıkarmak üzere kendimi (kayak merkezi değil, ilçe olan) Kartepe'deki evime kapattım. "Şuraya biraz daha açıklama", "şuradaki kodda biraz düzeltme" derken tezin yarısından fazlasını yeniden yazarken buldum kendimi. Kod dışında bir şeyler yazmayı özlemişim açıkçası, eğlenceli bir deneyim oldu.

Yarın tezin son halini danışmanıma teslim edecek ve -nihayet- mezuniyet yolunda son düzlüğe gireceğim, mutluyum. Tez konusu, bir yıldan uzun süredir geliştiriciliğini üstlendiğim, Pardus'un yapılandırma yöneticisi ÇOMAR. Hakim olduğum bir konuda tez yazmak iyi bir fikirdi ve eğlenceliydi, umarım tez savunmam da yazma aşaması kadar rahat ve eğlenceli olur...

19
Ara

Saat 5 olmuş, mesai bitmiş, bugün yapılacaklar listesi bitmemiş. Cuma trafiğine takılıp işlere 2 saat ara vermek yerine (Cuma günü olsa da, yapılacak listesinde bir şeyler varsa yapılır) mesaiye kalmaya ve işleri bitirmeye karar verdik. İyi de ettik.

Katie Melua o harika sesi ile şarkılar söylemekte, bir yanda Qt/KDE paketleri elden geçirilirken, diğer yanda depodaki bir kod geliştiriciler tarafından incelenmekte, geliştiricisine geri besleme verilmekte, aynı anda geliştirici listesine mesajlar düşmekte, bize yalnız olmadığımızı göstermekte...

16
Ara

Yapılan bir paketin son kullanıcıya ulaşma süreci, geliştiricinin paketi inceleme deposuna koyması ve paketler(at)pardus.org.tr adresine bir inceleme talebi göndermesi ile başlıyor. Paket, paketler listesini takip eden tecrübeli paket geliştiricilerinin en az ikisinin onayını aldıktan sonra, paketin geliştiricisi tarafından geliştirme deposuna taşınıyor.

Geliştirme deposundaki paketler derlenmiyor, bir sonraki Pardus sürümüne girmek üzere beklemeye alınıyor. Paketin, mevcut ya da eski Pardus sürümleri için derlenmeleri için, sürümlere ait kaynak depolara (2007, 2008) aktarılmaları gerekiyor. Bunun için ise, stable(at)pardus.org.tr'ye (kararlı depo listesi) paketin neden o sürümde bulunması gerektiğin bildiren bir eposta atılması gerekiyor. Uygulama aktif olarak geliştiriliyorsa, Türkçe sorunu yoksa ve gerçekten ihtiyaç duyuluyorsa ilgili depoya kopyalanıyor. Bu aşamadan sonra, depoya ait derleme tarlasında paket derleniyor ve ikili paketler test deposuna (2007-test, 2008-test) kopyalanıyor. Test deposunu kullanan deneyimli kullanıcılar ve geliştiricler, paketi hemen kurup deneyebiliyor.

Burada bir hatırlatma yapayım: Geliştirme deposunda yapılan değişiklikler de bu adımdan sonra aynı "aktarma" sürecinden geçiyor ve önce test deposuna giriyor. Yapılan güncellemeler, sistemi kullanılmaz hale getiren hata(lar) içerebileceği için, "en son sürümü önce ben kullanayım" diyerek test deposu kullanmak kesinlikle kötü bir fikir.

Makul bir süre test deposunda bulunan paketler, geliştirici listesinde yapılan bir oylamadan geçiyor. Güncellemeyi yapan geliştiriciden ve testçilerden onay alan paketler, kararlı depolara (2007, 2008) alınarak kullanıcılara sunuluyor.

Şu sıralar, kararlı depoya geçiş süreci geliştirici e-posta listesinde tartışılıyor. Sürecin son halini Kararlı Depo Süreci belgesinde bulabilirsiniz. Paket değişikliklerinin kararlı depoya aktarılması, ikili paketlerin onaylanması ve bütünlük testleri gibi işlerin mümkün olduğunda otomatize edilmesi için bir web uygulaması yazmaya başladık bile. Uygulamayı her zaman olduğu gibi, Uludağ deposunda bulabilirsiniz.

Şimdilik bu kadar.