pspec.xml
Bu dosya paketin tanımı ve içeriği ile ilgidir, XML yapısındadır.
Temel XML yapısı ve pspec.xml
XML dosyaları bir çeşit veritabanı gibidir, veriyi tanımlayan bir Tag ve bu verinin özelliklerini taşıyan Tag’a ait parametreleri ile bir XML verisi şu şekilde görünür:
<Path fileType="executable">/usr/kde/3.5/bin</Path> | | | | | | | \--Veri | | \--------------------Verinin özelliği | \----------------------------Özelliğin adı \-----------------------------------Tag
Bir başka örnek:
<bilgisayar monitor=”crt” islemci=”amd-x2” ram=”1024”>Ali Bey</bilgisayar> <bilgisayar monitor=”lcd” islemci=”intel-c2duo” ram=”512”>Ali Bey</bilgisayar>
Görüldüğü gibi Tag’lar <…> arasına yazılır ve </…> ile kapatılır, ayrıca tıpkı HTML’de olduğu gibi XML’de de taglar ağaç yapısında organize edilebilir. Şöyle ki;
<Bilgisayarlar> <bilgisayar monitor=”crt” islemci=”amd-x2” ram=”1024”>Ali Bey</bilgisayar>Ali Bey</bilgisayar> Ayşe Hanım</bilgisayar> </Bilgisayarlar>
Görüldüğü gibi yine <…> ile başlayıp </…> ile kapatılan bir tag’ın içine bir grup veri yerleştirilebiliyor, bu örnek ihtiyaca göre şöyle de organize edilebilir;
<Ofis> <Bilgisayarlar servis=”Muhasebe”> <Bilgisayar></Bilgisayar> <Bilgisayar></Bilgisayar> </Bilgisayarlar> <Bilgisayarlar servis=”Satış”> <Bilgisayar></Bilgisayar> <Bilgisayar></Bilgisayar> </Bilgisayarlar> <Fotokopiler servis=”ön büro”> <Fotokopi></Fotokopi> </Fotokopiler> </Ofis>
Bu <> ile başlama ve </> ile kapatma kuralı çok kesindir, XML yapısı bunun gibi çok kesin kurallarla tespit edildiğinden kural hatalarını asla kabul etmez ve tek bir hatadan dolayı tüm XML Tag’ları kırılmış olarak değerlendirilir. Ancak içinde veri grupları bulunan Tag’ların içindeki Tag’ları yazarken bir miktar içeriden başlamak bir zorunluluk olmayıp sadece herkesin kolay okuyup anlayabilmesi için genelde mutlaka uygulanır.
Pspec.xml’de temelde şu yapıdadır; Üstteki iki satır standarttır.
<?xml version="1.0" ?> <PISI> <Source> ... </Source>
<Package> ... </Package>
<History> ... </History>
</PISI>
Pspec.xml'deki bu bölümlerin içinde pek çok Tag bulunur ve bunlardan bazıları özeldir. Bu özel Tag'ların taşıdığı verilerin neler olabileceği Pisi Linux sistemi tarafından tanınabilmesi için önceden tespit edilmiştir. Bu özel tagların alabileceği değerler ve tüm tagların kullanımı ile ilgili bilgiler Pisi Linux geliştiricileri tarafından bir Relax NG (rng) dosyasında tutulur. Bu rng dosyaları bir XML dosyasındaki taglar hakkında bilgi alınabilecek şema dosyasıdır ve her tag burada bir şema içinde açıklanmıştır. Ancak merak etmeyin rng dosyası'da XML yapısında kolay okunup anlaşılabilir bir yapıdadır.
Source bölümü
Bu bölüm pisiye paket hakkındaki temel bilgileri verir. Bunun yanında paketin Pisi Linux sistem yapısında hangi kategori ve bölüme ait olduğu, derleme yapılırken sistemde hangi paketlerin bulunması gerektiği ve derleme işleminden önce paket kaynağına uygulanması gereken yamaların hangileri olduğu da bu bölümde tanımlanır. Bu bölüm temelde şöyle görünür;
<Source> <Name>Paketin adı</Name> <Homepage>Paketin web sayfası</Homepage> <Packager> <Name>Pisileyenin adı soyadı</Name> <Email>e-posta adresi</Email> </Packager> <License>Lisansı</License> <IsA>Paketin ait olduğu kategori</IsA> <IsA> </IsA> <PartOf> Paketin ait olduğu grup</PartOf> <Summary>Özet (İngilizce)</Summary> <Summary xml:lang="tr">Özet (Türkçe) </Summary> <Description>Paketin kısa tanıtımı (İngilizce)</Description> <Description xml:lang="tr"> Paketin kısa tanıtımı (Türkçe) </Description> <Archive type="sıkıştırma yöntemi" sha1sum="sha doğrulama kodu"> Kaynak dosyanın direk http veya ftp bağlantı adresi</Archive> <BuildDependencies> <Dependency>Varsa derleme bağımlılığı paketi</Dependency> <Dependency> </Dependency> </BuildDependencies> <Patches> <Patch>Varsa uygulanacak yama dosyaları</Patch> <Patch></Patch> </Patches> </Source>
Bu bölümdeki IsA ve PartOf Tag'ları en çok tereddüt edilen Taglar'dır.
IsA Tag'ı paketin hangi kategoriye ait olduğunu tespit etmeye yarar, bu sayede mesela Paket Yöneticisi gibi bir arayüz'de aynı kategoriye ait paketler birlikte listelenebilir, bu Tag birden fazla tanımlanabilir. Alabileceği değerleri 2.1.1 bölümünde anlatılan pisi-spec.rng dosyasından öğrenebilirsiniz.
PartOf Tag'ı paketin sistemdeki hangi bileşene ait olduğunu tespit etmeye yarar, bu sayede kullanıcılar belli bir bileşen grubu üzerinde toplu işlemler yapabilir. Sistemdeki bileşenleri görebilmek için "pisi list-components" komutunun çıktısına bakıp paketin uygun olduğunu düşündüğünüz bileşeni buraya yazabilirsiniz. Örneğin "applications.text" metin editörleri için kullanılan bileşen grubunun adıdır.
Eğer indirdiğiniz kaynak dosyanın doğrulama kodu sitesinde yoksa "sha1sum dosya_adı" komutuyla elde edebilirsiniz.
Yama dosyaları için 3.2 bölümüne bakınız.
Package bölümü
Bu bölüm pisileme sonucunda ortaya çıkacak olan pisi dosyaları ile ilgili tanımlamaları taşır. Eğer bir paketten birden çok pisi dosyası oluşturulması gerekiyorsa her bir pisi dosyası için aynı pspec.xml içinde ayrı bir Package bölümü yazılır. Pisi dosyalarının oluşturulması bu bölümlere göre yapılır.
<Package> <Name>pisi paketinin adı</Name> <RuntimeDependencies> <Dependency versionFrom="sürüm numarası">Varsa çalışma bağımlılığı</Dependency> <Dependency></Dependency> </RuntimeDependencies> <Files> <Path fileType="türü">Kurulacak klasör</Path> <Path></Path> </Files> </Package>
Buradaki en önemli bölüm Files bölümüdür. Bölüm 1.2'de anlatıldığı gibi, pisileme sırasında kaynak dosya açılıp varsa gerekli yamalar uygulandıktan sonra derleniyor ve /var/pisi/paket_adı/install dizinine kurulumu yapılıyordu. İşte Path Tag'ının değeri olan klasörler bu install dizininde oluşmuş olan klasörler olmalıdır. Burada belirtilen klasörlerin içeriği Pisi tarafından pisi dosyasına eklenir, Path Tag'ında belirtilmeyen klasörler eklenmez. Ancak bu klasörler pisi dosyasına eklenirken fileType ile belirtilen türe göre eklenecektir. "fileType" Özelliğinin alabileceği değerleri 2.1.1 bölümünde anlatılan pisi-spec.rng dosyasından öğrenebilirsiniz.
Zorunlu olmamakla birlikte RuntimeDependencies bölümündeki Dependency Tag'ı ile paketin çalışmak için başka hangi paketlere bağımlı olduğunu Pisi'ye bildirebiliriz. Böylece pisi dosyası kurulurken sistemde bu bağımlılıklarının bulunup bulunmadığını kontrol eder, eğer yoksa bunlar da kurulmaya çalışılır, eğer bağımlılıkları kurulamazsa bu paketin kurulumu da gerçekleşmez. Bu sayede programın doğru çalışması da garanti edilmiş olur. Dependency Tag'ının "versionFrom" gibi birkaç kullanışlı parametresi vardır, yine bunları 2.1.1 bölümünde anlatılan pisi-spec.rng dosyasından öğrenebilirsiniz.
Bir paketin hangi bağımlılıkları olduğunu öğrenmek için tek bir yol yoktur ancak daima ilk önce kaynak dosyasındaki belgelerde veya web sayfasındaki bilgilerde araştırma yapmak paket hakkında bilgi toplamak gerekir. Bazen en kolay yol programın gentoo gibi kaynak koddan kurulum yapılan dağıtımlar için yapılmış paketlerine bakmak da olabilir. Bu konu sizin pisilemek istediğiniz programı ne kadar iyi tanıyor olduğunuz veya pisileme konusunda ne kadar tecrübeli olduğunuzla ilgilidir. Anlamış olduğunuz üzere eğer pisilemek istediğiniz programın bağımlı olduğu paketler henüz pisi depolarında bulunmuyorsa önce bu bağımlılıklarını pisilemeniz gerekecektir.
History bölümü
<History> <Update release="Derleme numarası"> <Date>Derleme tarihi</Date> <Version>sürüm numarası</Version> <Comment>Yapılan değişiklik hakkında kısa açıklama</Comment> <Name>Değişiklik yapanın adı soyadı</Name> <Email>e-posta adresi</Email> </Update> <Update> ... </Update> </History>
Paketin her yeni derlemesinde değişikliği yapan paketçi tarafından yeni bir Update bölümü eklenerek yapılan değişiklik ve kimin hangi tarihte yaptığı gibi bilgiler kayıt edilir.
Bu bölümde dikkat edilmesi gereken konu derleme numarasıdır. Bazen paketin programcıları hata düzeltme veya yeni özellik ekleme amacıyla yaptıkları değişiklikleri yeni bir sürüm çıkartmak yerine bazı yamalar yayınlayarak duyururlar. Bazen de programınızın sizin sisteminizde daha verimli veya doğru çalışabilmesi için kaynak kodunda, belki de paketin ayarlama dosyalarında değişikliğe neden olan bir yama uygulamanız gerekir. Yani paketin sürüm numarası veya kaynak dosyası değişmemiş olur ancak yapılan değişiklik sonucunda paketin yeni bir derlemesi yapılmak zorundadır. İşte bu verilecek yeni derleme numarası pisi dosyasının adına eklenecek ve önceki derlemelerle karışmasının önüne geçilmiş olacaktır. Derleme numarası bir öncekinin bir fazlası şeklinde devam eder.