[Gelistirici] paketler arayüzü kararları

A. Murat Eren meren at pardus.org.tr
10 Mayıs 2007 Per 00:28:23 EEST


On 09 May 2007 Wed 20:50:14 Oğuz Yarımtepe wrote:
> Bir diğeri ArchieveAddress kısmı var pspeclerde, kaynak adresini veren.
> Bunu da alsam ve sayfada bunu da göstersem diyorum. pisi api ile bu bilgiyi
> de alamadım.

pspec'ten:

In [1]: from pisi.specfile import SpecFile

In [2]: spec = SpecFile()

In [3]: spec.read("applications/admin/acct/pspec.xml")

In [4]: spec.source.archive.uri
Out[4]: 'http://www.physik3.uni-rostock.de/tim/kernel/utils/acct/acct-6.3.5-ts02-12.tar.gz'

index'ten:

In [6]: from pisi.index import Index

In [7]: index = Index()

In [8]: index.read("pisi-index.xml")

In [9]: [p.source.archive.uri for p in index.specs if p.source.name == "acct"]
Out[9]: 
['http://www.physik3.uni-rostock.de/tim/kernel/utils/acct/acct-6.3.5-ts02-12.tar.gz']
  


> * Yenilenen paketler: Bunlar da hata düzeltmelerini ve iyileştirmeleri
> kapsayacak ama bunları nasıl tespit edip ayrırım konusunda genel bir
> çözümüm yok.

 History altındaki Update'lerin attribute'lerine bakmaktan başka yol yok..

> Yeni eklenen paketleri bulmak için düzenli çalışan bir programa
> gereksinimim olacak (yapacağı DepoUpdate tablosunu güncellemek olacak,
> Django uygulaması çalışırken yeni eklenen paket bilgisini veya son yapılan
> düzenlemeyi buradaki tarihe göre bulabilir). Uygulamanın bir kısmı düzenli
> çalışıp tabloları güncellerken django kısmı da oradan veriler alıp
> gösterecek.

 Bir Cron uygulaması olur, belirli aralıklarla bir betik çağırır, betik pspec 
repository'sini günceller, svn'deki değişikliklere göre etkilenen paketleri 
veritabanında günceller (ya da index üzerinden gitmeyi düşünürsen tüm index 
ile tüm veritabanını günceller, ki pek efektif olmaz). Günceller derken, tüm 
paket verilerini spec'ten okuyup eskisinin üzerine yazar basitçe. Paketler 
ile ilgili veriler güncel olduğu sürece yeni eklenen paketleri bulmak ekstra 
bir iş değil sanki: Veritabanındaki paketleri son Update imi altındaki tarihe 
göre sırala, release'i 1 olanlar ile yeni paketlerdir, release'i 1'den büyük 
olanlar ile son güncellenen paketlerdir. Tabi bunları statik olarak tutmak, 
her istek için yeniden generate etmemek mantıklı (yoksa DepoUpdate tablosu 
derken bunu mu kast ediyordun :)).

> Paketlerle ilgili mümkün olduğunca çok bilgi göstermek istiyorum. Meren'in
> söylediği gibi installedsize, packagesize bilgilerini de pisi api ile
> göstermeyi planlıyorum.

 Devel deposu için bu bilgiyi alamayacaksın. Ahmet index demiş ama source 
repoların index'lerinde de bu bilgiler yer almıyor sonuçta. Fakat kalan bir 
çok şey için index'in kullanılabileceği doğru. Öte yandan devel deposundaki 
her güncelleme için index yeniden oluşturulmadığı için güncel bilgiyi 
index'ten almak mümkün değil, bununla beraber değişiklikleri incremental 
olarak veritabanına uyarlamak mümkün olmayacak index ile çalışırken, 
pspec'ler ile çalışmanın avantajı o olacak. Buradaki performans farkı ne 
kadar olur şu anda bilemiyorum.

> Yorumlar, öneriler?

 Bence kodlamaya giriştiğinde çeşitli detaylar için tasarımdaki eksikler 
kendiliğinden belirecektir.


 Eline sağlık + kolay gelsin.
 Selamlar.
-- 

- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
 A. Murat Eren
 http://cekirdek.pardus.org.tr/~meren/blog
 Pub Key ID: 0x527D7293
 http://meren.org/
- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -

--
 Gnome seems to be developed by interface nazis,
 where consistently the excuse for not doing
 something is not "it's too complicated to do",
 but "it would confuse users" (Linus).
-



Gelistirici mesaj listesiyle ilgili daha fazla bilgi