PiSi Paket Yöneticisi

PiSi paketleri

PiSi paketleri PKZIP formatında arşivlerdir, paketin içerdiği dosyalar dışında 
paketle ilgili gerekli bilgileri taşıyan metadata.xml adlı bir XML dosyası, yükleme sonrası ve 
kaldırma öncesi çalıştırılan betikler ve ÇOMAR yapılandırma betikleri içerir. 
Paket kaynakları da temel olarak pspec.xml adlı bir tanım dosyası , actions.py adındaki
kaynak codeun yapılandırılması, inşa edilmesi ve istenilen dizine yerleştirilmesi için
gerekli komutları içeren python betiği ve paketlerin özet ve açıklamalarına yerelleştirme desteği  
verilebilmesi  için translations.xml  dosyasından ibarettir. Buna ek olarak, yamalar, sözü 
geçen diğer betikler ve ek dosyalar içerir....

Bazı ayırıcı özellikler

PiSi Python'da yazılmıştır, bu sayede performans kaybetmeden taşınabilirlik ve paketlerin boyutunun küçültülmesi sağlanmıştır. Kaynak paketler basit XML dosyaları ve python programcıklarıyla 
ifade edilir.
Paketler kaynak tabanlı paket sistemlerindeki gibi kısa ve anlaşılabilir bir inşa reçetesiyle
tanımlarır, bunun için geliştirilmis olan bir API gereken ortak komutları
toplar. Yüksek seviyeli ve düşük seviyeli paket yönetim işlevlerini tek bir yazılımda birleştirir.
Bağımlılıkları takip etmek ya da depoları yönetmek için ayrı bir yazılıma gereksinim duymaz.
Hangi dosyanın hangi pakette olduğu ve bağımlılıklar gibi paket bilgilerinı takip etmek
için Berkeley DB'yi kullanır.
Bağımlılıklar hızlı algoritmalarla hesaplanır. Paketler bileşen ve kategorilerle düzenlenir.
İkili paketler PKZIP arşivleridir. Birçok işlemde şeffaf biçimde URL desteği verilir, http ve 
ftp protokolleri desteklenir. Örneğin sadece bir pspec.xml URL'i verilerek uzaktaki bir kaynak 
inşa edilebilir. Kaynak arşivini URL ile gösterir, orijinal kaynak code'unu içermez, bu da subversion gibi
sürüm sistemleriyle geliştirmeyi kolaylaştırır. Kitaplık yaklaşımıyla tasarlandığı için üzerinde uygulama geliştirmek 
kolaydır. 
Program mesajları için özgür yazılımlarda yaygın olarak kullanılan
gettext uluslararasılaştırması, xml dosyaları için xml:lang uluslararasılaştırması kullanılmıştır.

Depolar ve bağımlılıklar

Depolar bir dizinin altındaki paketlerin indeksini içeren bir XML dosyasının URL'i ile tanımlanır (pisi-index.xml).
Paket bağımlılıklarının takibi iyi bilinen basit çizge algoritmaları ile yapılır.
Önce paket ilişkilerinin gerekli alt kümesi database'den gereken en az sayıda erişim yapılarak getirilir, 
sonra “topological sort” ile basit ama güvenli bir plan hesaplanır. Paket yükleme, kaldırma
ve yükseltme işlemleri için oluşturulan planlar, bir hata durumunda sistemin tutarlı durumda
kalmasını sağlamaya çalışır. Yükseltme planlarında hem düz hem ters bağımlılıklar hesaba
katılır. Bir emniyet mandali önemli paketlerin kaldırılmasını öntanımlı olarak önler.

Sürümler

Yazılım dağıtımında önemli bir sorun gelişme tarihini takip etmektir. PİSİ'nin çözümü 
orijinal, paket kaynağı ve ikili paket inşa sürümlerini ayırmaktır. Paket sürüm numarası bir
paket kaynağının kaç kere değiştirildiğini ve paket inşa numarası bir ikili paketin kaçıncı inşa 
olduğunu tutar. Bu sayede farklı boyutlara ayırılan sürüm numarası pratikte karşılaşılan bazı
sorunları çözmektedir.

Arama işlevleri

Anahtar sözcük araması (search komutu) özetler ve tanımlar üzerinde çalışır. Hızlı işlem için bir 
ters indeks (inverted index) kullanır ve çok dilli çalışır. Ayrica search-file komutu dosya adıyla 
paket bulur.

Veritabanı yapısı

Özelleştirilebilir ve esnek olması sebebiyle berkeley veritabanı tercih edilmiştir (örneğin liste saklamak vs. kolaydır). 
Bütün ara (intermediate) veri XML olarak saklanır. XML yapıları otomatik olarak python nesnelerine aktarılır.
Felaket durumunda bütün veritabanı saklanan XML dosyalarından yeniden yaratılabilir (rebuild-db komutu).

Kuşbakışı PiSi komut satırı

SVN tarzı komut satırı işlemcisi 29 komut içerir. Aşağıda komut çeşitlerine göre bir ayrım verilmiştir.
Bilgi/arama komutları: search, search-file, info, list-available, list-components, list-installed, list-pending, list-repo, list-upgrades, graph
Depo komutları: index, add-repo, remove-repo, update-repo
Paket inşası: build, build-until,build-build, build-install, build-package, build-setup, build-unpack
İkili paket işlemleri: install, remove, upgrade, check, configure-pending
Yardımcı komutlar: rebuild-db, clean, delete-cache

Grafiksel arayüz

Qt tabanlı arayüze sahiptir. Sadece Pisi Linux kullanmaktadır . SolusOS, GTK tabanlı bir paket yöneticisi geliştirmektedir, henüz tamamlanmamıştır
Kullanımının mümkün olduğu kadar basitleştirildiği düşünülen bir arayüzdür. Bütün işlemler 
için tek bir pencere ve depo ayarları için ayrı bir pencereden oluşur. 
Paket işlemleri için üç ayrı kip bulunmaktadır (yükseltme, yükleme, kaldırma). Arama fonksiyonu
paketlerin üstünde tanıdık bir arama çubuğu ile sağlanır. Paketler bileşenlere ayrılır. 
Öntanımlı olarak sadece uygulamaları gösterir, bir filtre seçeneği ile bütün uygulamalar seçilebilir.
Bütün sistem tek bir tuşla güncellenir.