[Gelistirici] Package-diff-notify Betiği

Gökhan Özbulak gozbulak at pardus.org.tr
28 Ara 2010 Sal 11:04:59 EET


Merhaba,

Paketçilerin, sahip oldukları paket(ler) ile ilgili güncel bilgiyi özet 
şekilde dosyaya yazan ve(ya) e-posta yoluyla ileten bir Python betiği 
uludag/trunk altında [1] yerini aldi. Betik, özetle, tanımlanmış dağıtım 
depolarındaki pisi index dosyalarını kullanarak bir paketçiye ait paketleri 
saptayıp, bu paketlere ait yama ve alt paket sayıları ile sürüm ve yayım 
numaralarını dağıtım depoları arasında karşılaştırmalı olarak kullanıcıya 
sunuyor. Bir pakete ait örnek çıktı aşağıdaki gibi:

package-name
-----
  Package Names:
     Pardus 2011                   : package-name
     Pardus Corporate 2        :
     Pardus 2009                   : obsolete-package-name
  Packager:
     Pardus 2011                   : Packager <packager at pardus.org.tr>
     Pardus Corporate 2        : Packager2 <packager2 at gmail.com>
     Pardus 2009                   : 
  Release:
     Pardus 2011                   : 8
     Pardus Corporate 2        : 9
     Pardus 2009                   : 6
  Version:
     Pardus 2011                   : 2.0.15
     Pardus Corporate 2         :
     Pardus 2009                   : 2.0.10
  Number of Sub-Package:
     Pardus 2011                   : 3
     Pardus Corporate 2        : 2
     Pardus 2009                   : 1
  Number of Patches:
     Pardus 2011                   : 4
     Pardus Corporate 2        : 3
     Pardus 2009                   :


Betik, aynı paketin bakımını yapan farklı paketçileri ve eskimiş olarak 
işaretlenmiş paketleri(obsolete) dikkate alarak gerçeklendi. Buna göre, 
paketçi, paketin bakımını başka paketçilerle paylaşıyorsa ve(ya) paket daha 
eski depo(lar)da farklı bir isim ile barınıyorsa, bunu betiğin ürettiği 
çıktıda görebiliyor. Yukarıdaki çıktı incelenecek olursa "package_name" isimli 
paket 2011 ve Corporate2 dağıtımlarında aynı isimle bulunurken 2009'daki 
"obsolete-package-name" isimli paketi replace etmiş. Ayrıca "package-name", 
"Packager" ve "Packager2" isimli iki ayrı paketçi tarafından güncelleniyorken, 
2009'daki "obsolete-package-name" "Packager2" tarafından güncelleniyor. Bu 
bilgileri, paketin farklı dağıtımlardaki sürüm ve yayım numaraları ile alt 
paket ve yama sayısı takip ediyor. Yukarıdan da anlaşılacağı üzere dağıtımın 
karşısındaki boşluk bir üstteki değeri temsil ediyor.

Betiğin, paketçilerin paket durumları hakkında bilgi sahibi olmaları ve 
gereken müdaheleleri yapmaları için belirli aralıklarla calıştırılmasını 
planlıyoruz (Burada siz geliştiricilerin yorumları da önemli tabi :)). Bunun 
dışında paketçiler de betiği bireysel olarak çalıştırıp paketlerinin 
durumlarını sorgulayıp, istediği paketleri filtreleyebilir ve belirli 
bileşenleri hariç tutabilirler. Çeşitli kullanım şekilleri aşağıdaki gibi:

1) Paketçi, tüm paketleri ile ilgili bilgi almak istiyorsa (Varsayılan olarak 
"desktop.kde" ve "kernel" bileşenlerindeki paketler hariç tutuluyor):
$ ./package-diff-notify -p "Packager name"

2) Paketçi, yalnız p1 ve p2 paketleri ile ilgili bilgi almak istiyorsa
$ ./package-diff-notify -p "Packager name" -k "p1,p2"

3) Paketçi, c1, c2 ve c3 bileşenleri altına düşen paketler dışındaki paketler 
ile ilgili bilgi almak istiyorsa
$ ./package-diff-notify -p "Packager name" -x "c1,c2,c3"

4) Paketçi, üretilen çıktıyı paketlerinde belirttiği e-posta 
adresine/adreslerine göndermek istiyorsa (Betik içerisindeki e-posta ile 
ilgili ayarların yapılması gerekiyor, bkz. satır 51,52,53,54)
$ ./package-diff-notify -p "Packager name" -m

5) Paketçi, betik içerisinde tanımlanmış depo adreslerini ezmek istiyorsa
$ ./package-diff-notify -p "Packager name" repoURL1 repoURL2 repoURL3

6) Paketçi, uzak adres yerine yerel dosya sistemindeki pisi index dosyalarını 
kullanmak istiyorsa (Index dosyaları, betik ile aynı dizinde barınıyor olmalı)
$ ./package-diff-notify -p "Packager name" -u

7) Paketçi, paket bilgilerini sadece e-posta olarak almak istiyorsa (dosyaya 
yazma varsayılan davranış)
$ ./package-diff-notify -p "Packager name" -n -m

8) Betik hakkında detaylı bilgi ve yardım almak için
$ ./package-diff-notify -h

Son olarak betik xz ve bz2 formatlarındaki index dosyaları için çalışıyor, 
direk xml vermek sorun olacaktır.

Betik ile ilgili fikirleriniz, aldığınız hata vs. şeyler olursa paylaşmaktan 
çekinmeyim.

İyi çalışmalar

[1] http://svn.pardus.org.tr/uludag/trunk/scripts/package-diff-notify.py

--
Gökhan Özbulak / go
Pardus -- Tübitak/UEKAE
http://www.pardus.org.tr/eng



Gelistirici mesaj listesiyle ilgili daha fazla bilgi