Files
pisi/pisi.lyx
T
Gürer Özen 8bca914561 sadeleştirme.
2005-06-03 18:10:51 +00:00

1905 lines
40 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#LyX 1.3 created this file. For more info see http://www.lyx.org/
\lyxformat 221
\textclass article
\language turkish
\inputencoding auto
\fontscheme default
\graphics default
\paperfontsize default
\spacing single
\papersize Default
\paperpackage a4
\use_geometry 0
\use_amsmath 0
\use_natbib 0
\use_numerical_citations 0
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation skip
\defskip medskip
\quotes_language english
\quotes_times 2
\papercolumns 1
\papersides 1
\paperpagestyle default
\layout Title
PISI
\newline
(Packages Installed Succesfully as Intented)
\layout Author
S.Çağlar Onur <caglar@uludag.org.tr>, Onur Küçük <onur@uludag.org.tr>,
\newline
Barış Metin <baris@uludag.org.tr>
\layout Date
29 Mart 2005
\layout Date
Sürüm 0.3
\layout Standard
\pagebreak_top \pagebreak_bottom
\begin_inset LatexCommand \tableofcontents{}
\end_inset
\layout Section
Giriş
\layout Standard
Paket, bir uygulamayı ya da işletim sisteminin bir parçasını tüm bileşenleriyle
toplu olarak ifade eden bir kavramdır.
Uygulamaların bir yerden bir yere taşınması (örneğin bir CD yada ağ kaynağından
gelip, sisteme kurulması) sırasında bazı bileşenlerin geride unutulmamasını
sağlar.
Bir sistemdeki onbinlerce dosyayı, görevleri ve ait oldukları uygulamalar
bazında birkaç yüz pakete ayırarak yönetilebilir kılar.
Kullanıcının büyük bir sistemde neler bulunduğuna hakim olabilmesini kolaylaştı
rır.
\layout Standard
Bu paketleri kurup kaldırmak, çeşitli kaynaklardan temin etmek, sorgulamak,
sistemdeki değişiklikleri takip etmek için, paket yöneticisi adını verdiğimiz
bir uygulamaya ihtiyaç vardır.
\layout Section
Paket Yöneticisi Gereksinimleri
\layout Subsection
Kullanıcı gereksinimleri
\layout Itemize
Bilişim okuryazarı adını verdiğimiz hedef kullanıcımızın temel isteği, sisteme
istediği uygulamaları kurabilmektir.
\begin_deeper
\layout Itemize
Kur emri, komut satırı, grafik arayüzler, ya da sistemin otomatik olarak
pakete ihtiyaç olduğunu saptamasıyla kolayca verilebilmeli, mümkün olduğunca
soru sorulmadan ve kullanıcıyı rahatsız etmeden yerine getirilmelidir.
\layout Itemize
Aynı şekilde yapılandırma sorularından kaçınılmalıdır.
Bu işler ÇOMAR tarafından otomatik halledilecek, ya da kullanıcının verdiği
emirlerle sonradan yapılacaktır.
Bu, örneğin sunucu uygulamaları kurulurken sunucu ayarı soruları vs sorulmaması
nı getirir.
\layout Itemize
Kurulum elden geldiğince hızlı olmalıdır.
\end_deeper
\layout Itemize
Kurulu programların yeni sürümleri çıktıkça, veya üzerinde düzeltmeler ve
güvenlik onarımları yapılmış yeni paket sürümleri yayımlandıkça, bilişim
okuryazarı kullanıcımız elindeki uygulamaları güncellemek isteyecektir.
\begin_deeper
\layout Itemize
Paketin her sürümünün önem derecesini (yeni özellikler, hata düzeltmeleri,
güvenlik açığı düzeltmesi) belirtebilmek gereklidir.
Böylece kullanıcı vakti yada ağ bağlantı hızı yetersiz olduğunda acil önem
taşıyan ve yapılması gerekli güncellemeleri, diğerlerinden kolayca ayırabilecek
tir.
\layout Itemize
Bir paketin eski veya deneysel sürümlerini kurmayı, hedef kullanıcımızın
bir ihtiyacı olarak görmüyoruz.
Kullanıcımız paketteki en son düzeltmeleri isteyecektir, ve eğer uygulama
ayrı özellik kümesine sahip iki ayrı yoldan geliştirilmekteyse, bu uygulamayı
iki ayrı paket olarak tutabiliriz.
Bu basitleştirmedeki amacımız paket yöneticisini basit tutmaktan ziyade,
kullanıcının paketin eski bir sürümünü kurup, sonra bunu unutarak daha
sonra çıkacak güncellemeleri kaçırmasını önlemektir.
\layout Itemize
Benzeri şekilde, paketler üzerinde ayrı ayrı güncelleme politikası belirleyebilm
ek, faydasından çok kafa karışıklığı yaratacağından dolayı desteklenmeyecektir.
\end_deeper
\layout Itemize
Nerdeyse her uygulama kendi sürüm numarası verme politikasına sahip olduğundan,
paketin asıl sürüm numarası yanında, düzenli olarak artacak bir numara
daha vererek, kullanıcının kolayca hangi sürümlerin yeni olduğunu ayırt
edebilmesini sağlamalıyız.
Aynı uygulama sürümünün çeşitli hata düzeltmeleri içeren farklı paket sürümleri
olabileceği de düşünülürse bunun önemi anlaşılır.
\layout Itemize
Kullanıcı, artık ihtiyaç duymadığı bir uygulamayı, yer ve takip tasarrufu
amacıyla kaldırmak isteyebilir.
Kullanıcının bu seçimi kolayca yapabilmesi için, ihtiyaç duyulmayan paketler,
kurulu paketlerin kapladığı alan gibi bilgileri sunabilmeliyiz.
\layout Itemize
Kullanıcı sistemde nelerin kurulu olduğunu, hangi paketleri kurabileceğini,
kurulu paketlere ait bilgileri, sistemdeki bir bileşen veya dosyanın hangi
uygulamaya ait olduğunu ve benzeri bir takım bilgileri sorgulayabilmelidir.
\layout Itemize
Varolan paket yöneticilerinin (rpm, dpkg, portage, vs) paket kapsamları
kullanıcılara bazı zorluklar yaşatmaktadır.
\begin_deeper
\layout Itemize
Kapsam çok geniş olduğunda (örneğin tek bir KDE pakedi), kullanıcı her güncellem
ede çok büyük dosyalar çekmekte, sisteme kullanmayacağı bileşenleri (örneğin
KDE oyunları, ya da bilmediği dillere ait destekler) kurmaktadır.
\layout Itemize
Kapsam dar tutulup küçük paketler oluşturulduğunda ise paket sayısının artmasınd
an dolayı, paket kavramının getirdiği soyutlama azalmakta, sisteme büyük
bir platformu kurmak için kendisi bir bileşen içermeyip yalnızca diğer
paketleri kurdurtan sanal paketler gibi yama çözümler gerekmektedir.
\layout Itemize
Kullanıcıya uygulamaları belli özellikleri (örneğin geliştirme kitleri,
grafik arayüzü, dil destekleri, ek uygulamaları, vs) opsiyonel olarak kurulabil
ecek biçimde sunabilirsek, ve paket temin sistemimizi yalnızca gereken özellikle
ri getirecek biçimde inşa edersek, hem kapsam sorunları, hem vakit ve ağ
bağlantı hızı açısından yaşanan sorunlar çözülecektir.
\layout Itemize
Uygulamayı kod olarak çekip, değişik özellikler ile derleyebilecek portage
benzeri bir sistem hedef kullanıcımıza zorluklar çıkaracak ve doğrudan
bir fayda sağlamayacaktır.
Ancak kimi programların farklı biçimde derlenmiş hallerini pakede ayrı
bir özellik olarak koyabiliriz (örneğin mplayer pakedinde farklı işlemciler
için derlenmiş birkaç tane
\emph on
mplayer
\emph default
programı gibi).
\end_deeper
\layout Itemize
Paketler farklı hedeflere kurulabilecek biçimde
\begin_inset Quotes eld
\end_inset
relocatable
\begin_inset Quotes erd
\end_inset
özellik taşımalıdır.
Bu, farklı hedeflere kurulum, ya da başkasına ait sistemde ev dizinine
kurulum gibi yeteneklerin sağlanması için gereklidir.
\layout Itemize
Paket bileşenlerinin değişip değişmediği kontrol toplamları, hash fonksiyonları
gibi yöntemlerle tespit edilebilir.
Paket yöneticisinin böyle bir durumu kontrol edebilmesi, ve örneğin bir
kullanıcı hatası sonucu silinen/değişen dosyaları tekrar temin edip düzeltebilm
esi kullanıcıya kolaylık sağlar.
\layout Subsection
Paketleyici gereksinimleri
\layout Itemize
Paket hazırlamak kolay olmalıdır.
\layout Itemize
Kolayca paket oluşturabilmek için, tercihen bir grafik arayüz ile paket
hazırlanabilmelidir.
Üst geliştirici kodunu alıp, gerekli bilgileri hazırlatacak, gerekli işaretleme
leri kolayca yapabilecek bir araç kullanılabilir.
\layout Itemize
Paketleyici hatalarının farkedilmeden gözden kaçması önlenmelidir.
\layout Subsection
Paket kaynağı gereksinimleri
\layout Itemize
Kullanıcı paketleri CD, disket, internet gibi çeşitli kaynaklarla ulaşıp
kurabilmek isteyecektir.
Temel olarak iki tip kaynak sözkonusudur.
\layout Itemize
İlk tip, pakedi tek bir dosya olarak taşıyabilen ve programı disketle, epostayla
ve benzeri yollarla dağıtmaya uygun bir arşiv dosyasıdır.
\begin_deeper
\layout Itemize
Bu arşiv içinden belirli bir dosyaya, bütün arşivi açmadan erişilebilmelidir.
\layout Itemize
Mümkünse arşivin yaygın olarak bilinen ve kullanılan araçlarla açılabilmesinde
yarar vardır.
\end_deeper
\layout Itemize
İkinci tip kaynak ise internet yada yerel ağ üzerinden bir paket grubunun
indeks bilgilerini ve kendilerini sunabilecek bir
\begin_inset Quotes eld
\end_inset
depo
\begin_inset Quotes erd
\end_inset
sunucusudur.
\begin_deeper
\layout Itemize
Aynı biçimde, bir pakedin belirli dosyalarına direk erişilebilmelidir.
Paketler Web üzerinden sunulurken bunu sağlamak için pakedi açık olarak
tutabiliriz.
\end_deeper
\layout Itemize
Kullanıcı birden fazla kaynaktan paketleri temin edebilmelidir.
\layout Subsection
Güvenlik gereksinimleri
\layout Itemize
Kullanıcının CD, internet, vs gibi değişik ortamlar aracılığı ile temin
ettiği paketlerin kimden geldiğini bilebilmesi, ve içeriğinin yolda değişmediği
nden emin olması için bir dijital imza sistemi desteklenmelidir.
\layout Itemize
Gerektiğinde pakedi oluşturan kişinin imzası dışında, üçüncü parti kurum
veya kişilerin de pakedi deneyip, güvendiğini belirtebilmesi için, birden
fazla kişi tarafından pakedin imzalanabilmesi iyi olacaktır.
\layout Subsection
Yapılandırma Yöneticisi (ÇOMAR) gereksinimleri
\layout Itemize
Bir paket kurulduktan sonra, pakete ait CSL betikleri ÇOMAR'a bildirip kayıt
ettirmelidir.
\layout Itemize
Bir paket kaldırılmadan önce ÇOMAR'dan bu pakete ait betikleri kaldırmasını
istemelidir.
\layout Itemize
Bir paket eğer CSL betiği sağlıyorsa, paketin hangi OM dallarına ait betikler
içerdiği bilgisini tutmalıdır.
\layout Itemize
Verilen bir OM dalı için, hangi paketlerin bu dala ait betik içerdiğini
verebilmelidir.
\layout Itemize
Kurulması emredilen bir paket, kitaplık ve programların yanısıra OM üzerinden
sağlanan bazı görevlere ihtiyaç duyabilir.
Bu durumda paket yöneticisinin o bacaktaki görevi sağlayan uygun bir pakedin
kurulu olup olmadığına bakması, gerekiyorsa o görevi sağlayan paketlerden
birini kurması gereklidir.
\layout Itemize
Paket yöneticisi, bir pakete ait bir dosyanın sistemde nereye yerleştirilmiş
olduğunu söyleyebilmelidir.
\layout Section
Neden PİSİ?
\layout Standard
Gereksinimlerimizi sağlayabilmek için çeşitli tipte bağımlılıklar, farklı
özelliklerle kurulabilen paketler, en az dosya indirme ile kurulum gibi
özelliklere ihtiyacımız olacaktır.
Halihazırdaki paket sistemleri bunları sağlamadıkları için yeni bir paket
yöneticisi yazmak gereği doğmuştur.
\layout Standard
Bu amaçla PİSİ (Packages Installed Successfully as Intented) adını verdiğimiz
yazılımı geliştiriyoruz.
\layout Section
PİSİ Tasarımı
\layout Subsection
PSPEC Dosyası
\layout Standard
\series bold
PSPEC (PİSİ SPEC)
\series default
dosyası paketin oluşturulması için gerekli olan temel bilgiyi tanımlar.
PSPEC dosyası, oluşturulacak paketin ne olduğu, hangi başka paketlere bağımlılı
k içerdiği, nasıl derlenmesi ve sisteme nasıl kurulması gerektiğini tanımlayan
betikleri gösteren; kısaca paketin oluşturulması için gerek duyulan her
türlü bilginin içinde bulunduğu dosyaya verilen isimdir.
\layout Standard
Bir PSPEC dosyasından, dolayısı ile bir kaynaktan birden fazla paket oluşturulab
ilir.
Örneğin kpdf paketi kdebase-sürüm.no.tar.gz kaynağından oluşturulabilecek
yalnızca bir pakettir.
\layout Standard
PSPEC dosyalarının içerebileceği alanlar şu şekilde tanımlanmıştır;
\layout Itemize
\series bold
Global
\begin_deeper
\layout Itemize
\series bold
Meta
\begin_deeper
\layout Itemize
\series bold
Homepage:
\series default
Uygulamanın web sitesinin URL'sini belirtir.
\layout Itemize
\series bold
Version:
\series default
Uygulamanın sürüm numarasını belirtir.
(3.4.0 gibi)
\layout Itemize
\series bold
Release:
\series default
Bu uygulama için hazırlanan paketin sürüm numarasını belirtir.
(12 gibi)
\layout Itemize
\series bold
CFlags:
\series default
Paketin hangi ek derleyici bayrakları ile derleneceğini belirtir.
\layout Itemize
\series bold
Source:
\series default
Uygulamanın orjinal kaynak kodlarının bulunduğu adresi belirtir.
\layout Itemize
\series bold
SourceCheckSum:
\series default
Orjinal kaynak kodun doğrulama bilgisini (MD5, SHA v.s) verir.
\layout Itemize
\series bold
File(s):
\series default
Uygulama ile gelmeyen ama sistemde bulunması gereken dosyaları belirtir.
File, farklı dosyalar için birden fazla tekrarlanabilir.
(init betikleri, belirli bir yere yerleştirilecek simgeler, vb.)
\begin_deeper
\layout Standard
\series bold
Attribute(s)
\layout Itemize
\series bold
Destination:
\series default
Harici dosyaların kopyalanacağı yeri belirtir.
Kaynak kod açıldığında oluşacak dizin sıradüzeni (hiyerarşi) içerisindeki
konumunu bağlantılı (rölatif) olarak gösterir.
\end_deeper
\layout Itemize
\series bold
Patch(s):
\series default
Uygulamaya hazırlanan yamaları ve uygulanış sıralarını belirtir.
\begin_deeper
\layout Standard
\series bold
Attribute(s)
\layout Itemize
\series bold
Order:
\series default
Uygulanacak yamaların sırasını belirtir.
Nümerik bir değerdir.
\end_deeper
\layout Itemize
\series bold
Packager(s):
\series default
Paketi oluşturan kişilerin adı/soyadı ve e-posta adresi belirtir.
\begin_deeper
\layout Itemize
\series bold
PackagerName:
\series default
Paket geliştiricisinin adı ve soyadı.
\layout Itemize
\series bold
PackagerEmail:
\series default
Paket geliştiricisinin e-posta adresi.
\end_deeper
\layout Itemize
\series bold
License(s):
\series default
Uygulamanın lisansını belirtir.
(GPL, BSD v.s gibi)
\end_deeper
\layout Itemize
\series bold
BuildRequirments:
\series default
Kaynağın derlenmesi sırasında ihtiyaç duyulan bağımlılıklardır.
\begin_deeper
\layout Itemize
\series bold
BuildTimePackage(s):
\series default
Kaynağın derlenebilmesi için mutlaka sistemde kurulu olarak bulunması gereken
paketleri belirtir.
\begin_deeper
\layout Itemize
\series bold
Name:
\series default
Bağımlı olunan paketin adıdır.
\layout Itemize
\series bold
Version:
\series default
Bağımlı olunan tek bir sürüm numarasını bildirir.
\layout Itemize
\series bold
VersionFrom:
\series default
Bu sürüm numarasından sonraki tüm sürüm numaralarına bağımlılığı tarif
eder.
\layout Itemize
\series bold
VersionTo:
\series default
Bu sürüm numaralarına kadar olan bağımlılığı tarif eder.
\end_deeper
\end_deeper
\layout Itemize
\series bold
Actions:
\series default
Kaynağın derlenmesinden kurulumuna kadar kullanılacak olan BASH betiklerini
işeret eder.
Bash betikleri PSPEC dosyasının bulunduğu dizindeki
\emph on
actions
\emph default
dizininde saklanırlar.
\begin_deeper
\layout Itemize
\series bold
Setup:
\series default
Kaynağın kurulması, ayarlanması için gerekli bash betiğinin adını verir.
Kaynak derleme dizinine Source, File ve Patch bölümlerinde ifade edilen
dosyalar kullanılarak PİSİ tarafından otomatik bir şekilde açılır.
Derleme öncesi kaynağa yapılması gereken tüm işlemler (Autotools kullanan
paketlerde ./configure betiğinin çalıştırılması gibi) setup betiği tarafından
yapılır.
\layout Itemize
\series bold
Build:
\series default
Kaynağın derlenmesi için gerekli bash betiğinin adını verir.
\layout Itemize
\series bold
Test:
\series default
Kaynağı derlendikten sonra test edilmesi için gerekli bash betiğinin adını
verir.
\layout Itemize
\series bold
Install:
\series default
Kaynağı sisteme kuran bash betiğinin adını verir.
Bu betik içerisinde kaynak kullanılmakta olan sistemin dizin sıradüzeninden
bağımsız olarak, PİSİ tarafından tanımlanan kurulum dizinine (installroot)
kurulur.
\end_deeper
\layout Itemize
\series bold
History:
\series default
Paket üzerine bir güncelleme yapıldığında, güncelleme ile ilgili temel bilgileri
verecektir.
\begin_deeper
\layout Itemize
\series bold
Update:
\series default
Kaynağa yapılan bir güncellemeyi tarif eder (yeni yama, yeni bir dosya
eklenmesi veya Actions içerisindeki betiklerden birinin yeniden düzenlenmesi
gibi).
\begin_deeper
\layout Itemize
\series bold
Date:
\series default
Güncellemenin yapıldığı tarih ve saat bilgisini belirtir.
\layout Itemize
\series bold
Version:
\series default
Güncellemenin yapıldığı versiyonu belirtir.
\layout Itemize
\series bold
Release:
\series default
Güncellemenin yapıldığı revizyonu belirtir.
\layout Itemize
\series bold
Status:
\series default
Güncellemenin kritikliği belirtir.
(BugFix, SecurityUpdate, Enhancement)
\end_deeper
\end_deeper
\end_deeper
\layout Itemize
\series bold
Package
\begin_deeper
\layout Itemize
\series bold
Meta
\begin_deeper
\layout Itemize
\series bold
Name:
\series default
Paketin birden fazla küçük parçaya bölündüğünde oluşacak parçalardan ilkinin
adını belirtir.
\layout Itemize
\series bold
Description:
\series default
Uygulama hakkında özet bir açıklayıcı bilgi içerir.
Çoklu dil desteğine sahiptir.
\layout Itemize
\series bold
Container(s):
\series default
Uygulamanın hangi uygulama grubuna dahil olduğu bilgisini tanımlar.
Bir paket birden fazla
\series bold
\emph on
Container
\series default
\emph default
'a dahil olabilir.
(Farklı aitlikler olabilir, bir ana kaynaktan türeme veya belirli, ortak
bir işlevi yerine getirme gibi.
\series bold
\emph on
Container
\series default
\emph default
bunların hepsini tanımlamaktadır).
\series bold
\emph on
Container
\series default
tanımları her
\series bold
Pardus
\series default
sürümü için sabit bir liste olarak sunulacaktır.
\emph default
Paket geliştiricileri bu listeyi kullanarak paketledikleri yazılımı bir/bir
kaç
\series bold
Container
\series default
'a dahil edebilirler.
\end_deeper
\layout Itemize
\series bold
RunTimeRequirements:
\series default
Oluşturulan paketin kurulabilmesi/kullanılabilmesi için sağlanması gereken
bağımlılıklardır.
\begin_deeper
\layout Itemize
\series bold
RunTimePackage:
\series default
Uygulamanın derlendikten sonra çalışabilmesi veya ek özellik kazanabilmesi
için gerekli paketleri belirtir.
\begin_deeper
\layout Itemize
\series bold
Name:
\series default
Bağımlı olunan paketin adını belirtir.
\layout Itemize
\series bold
Version:
\series default
Bağımlı olunan tek bir sürüm numarasını belirtir.
\layout Itemize
\series bold
VersionFrom:
\series default
Bu sürüm numarasından sonraki tüm sürüm numaralarına bağımlılığı tarif
eder.
\layout Itemize
\series bold
VersionTo:
\series default
Bu sürüm numaralarına kadar olan bağımlılığı tarif eder.
\end_deeper
\layout Itemize
\series bold
ComarOM:
\series default
Uygulamanın
\series bold
ÇOMAR
\series default
'ın hangi
\series bold
OM
\series default
bacağına ihtiyacı olduğunu belirtir.
\end_deeper
\layout Itemize
\series bold
Provides
\begin_deeper
\layout Itemize
\series bold
CSL:
\series default
Paketin yanında taşıdığı
\series bold
CSL/CSL
\series default
'lerin nerede/nerelerde olduğunu belirtir.
\layout Itemize
\series bold
OM:
\series default
Uygulamanın
\series bold
ÇOMAR
\series default
'ın
\series bold
OM
\series default
bacağında hangi uca/uçlara oturduğunu belirtir.
\end_deeper
\layout Itemize
\series bold
Conflicts
\begin_deeper
\layout Itemize
\series bold
ConflictedWith:
\series default
Paketin kurulmasını engelleyen, kurulduğu zaman sistemde hangi paketler
ile çakışacağını, hangi paketler ile uyumsuz olduğunu belirtir.
(modutils ve module-init-tools gibi)
\end_deeper
\layout Itemize
\series bold
Provides (Paketin bir parçası OM ve CSL provide edebilir)
\begin_deeper
\layout Itemize
\series bold
CSL:
\series default
Paketin yanında taşıdığı
\series bold
CSL/CSL
\series default
'lerin nerede/nerelerde olduğunu belirtir.
\layout Itemize
\series bold
OM:
\series default
Uygulamanın
\series bold
ÇOMAR
\series default
'ın
\series bold
OM
\series default
bacağında hangi uca oturduğunu belirtir.
\end_deeper
\end_deeper
\layout Standard
\emph on
\begin_inset Marginal
collapsed true
\layout Standard
\emph on
örnek 1-2 spec dosyası hazırlayıp buraya yerleştirmek gerekiyor
\end_inset
\layout Standard
PSPEC dosyasında Global bölümü kaynaktan oluşturulacak tüm paketleri etkiler.
Tanımlanan her Package bölümü ise kaynaktan oluşturulacak bir paketin tarifidir.
Her PSPEC dosyasında en az bir Package bölümü olmak zorundadır.
\layout Standard
PSPEC dosyası, belirlenecek paket formatının içinde
\series bold
\emph on
XML
\series default
\emph default
dosyası olarak tutulacaktır.
XML dosyalarının doğrulanması için kullanılabilecek bilgi
\emph on
pisi-spec.dtd
\emph default
dosyasında tanımlanmıştır.
\layout Standard
Aynı uygulamanın farklı mimarilere veya farklı amaçlara hizmet eden sürümlerini
paket haline getirmek için farklı
\series bold
PSPEC
\series default
dosyaları kullanılacaktır.
\layout Subsection
metadata.xml
\layout Standard
\series bold
Metadata
\series default
dosyası bir uygulamanın paket haline geldikten sonra yanında taşıyacağı
ve paket ile ilgili bilgileri barındıran dosyadır.
\layout Standard
\series bold
Metadata
\series default
dosyası sadece oluşturulan paket ile ilgili bilgileri tutmaktan sorumludur.
Paket'den hakkında temel bilgi bu dosyadan alınacaktır.
\layout Standard
Bu bilgilerin büyük kısmı
\series bold
PSPEC
\series default
dosyasının işlenmesi sonucu ile
\series bold
Metadata
\series default
dosyasına yazılmaktadır.
PSPEC dosyasındaki Global/Meta, Global/History ve Package içerisindeki
tüm bilgiler Metadata içerisine yazılır.
Metadata PSPEC dosyasından alınan bilgilerin yanında kaynak derlendikten
ve paket oluşturulduktan sonra alınabilecek diğer bilgileri de içerir (paketin
kurulduktan sonra sistemde kapyacağı alanın boyutu gibi).
\layout Standard
\series bold
Metadata
\series default
dosyasının içeriği şöyle tanımlanmıştır;
\layout Standard
\begin_inset Marginal
collapsed true
\layout Standard
metadata.xml'i de spec dosyasında olduğu gibi detaylandırmak ve XML biçimi
şeklinde (iç içe) yazmak gerekiyor
\end_inset
\layout Itemize
\series bold
Metadata
\begin_deeper
\layout Itemize
\series bold
PSPEC dosyasının Global/Meta bölümü
\layout Itemize
\series bold
PSPEC dosyasının Global/History bölümü
\layout Itemize
\series bold
PSPEC dosyasının
\series default
\series bold
ilgili Package bölümü
\layout Itemize
\series bold
Distribution:
\series default
Paketin ait olduğu dağıtımı belirtir (Pardus).
\layout Itemize
\series bold
DistributionRelease:
\series default
Paketin ait olduğu dağıtımın hangi sürümü için oluşturduğunu belirtir (1.0).
\layout Itemize
\series bold
Architecture:
\series default
Paketin hangi mimari için yapıldığını belirtir.
\layout Itemize
\series bold
InstallSize:
\series default
Paketin sisteme kurulduğunda kaplayacağı alanın tahmini boyutunu belirtir.
\end_deeper
\layout Standard
Yukarıda tanımlanan
\series bold
Metadata
\series default
dosyası, belirlenecek paket formatının içinde
\series bold
\emph on
XML
\series default
\emph default
dosyası olarak tutulacaktır.
Metadata XML dosyalarının doğrulanması için kullanılabilecek bilgi
\emph on
pisi-metadata.dtd
\emph default
dosyasında tanımlanmıştır.
\layout Subsection
files.xml
\layout Standard
Kaynak derlendikten sonra oluşan dosyaların oluşturulan pakete göre
\series bold
(Package)
\series default
sınıflandırılması gerekmektedir.
Tek bir kaynaktan birden fazla paket oluşturulması, kaynağın derlenmesinden
sonra oluşan dosyaların sınıflandırılması ile olur.
\layout Standard
files.xml dosyası paket geliştirme aracı/araçları ile oluşturularak paket
içerisine yerleştirilir.
\layout Itemize
\series bold
Files
\begin_deeper
\layout Itemize
\series bold
Package:
\series default
Dosya serisinin hangi
\series bold
\emph on
SubPackage
\series default
\emph default
'i oluşturduğunu belirtir.
(örn.
mysql-devel, mysql-client, mysql-server , mysql-doc)
\layout Itemize
\series bold
File:
\series default
Pakete dahil edilecek bir dosyayı tarif eder.
\begin_deeper
\layout Itemize
\series bold
Path:
\series default
Dosyanın, paket içerisindeki yerini belirtir.
\series bold
PISI
\series default
gereklerinden biri paketin belirtilen konuma kurulabilmesi olduğu için
konum bilgisi bağımlı (rölatif) olarak verilir.
\layout Itemize
\series bold
Type:
\series default
Dosyanın tipini belirtir.
Paket sisteme kurulduğunda, veritabanına bu tip tanımı ile işaretlenerek
yerleştirilecektir.
(binary, conf, lib, data gibi)
\layout Itemize
\series bold
Hash: Path
\series default
ile belirtilen dosyanın
\emph on
hash
\emph default
değerini verir.
\end_deeper
\end_deeper
\layout Standard
files.xml dosyalarının doğrulanması için kullanılabilecek bilgi
\emph on
pisi-files.dtd
\emph default
dosyasında tanımlanmıştır.
\layout Subsection
PSPEC Deposu
\layout Standard
Paketleri oluşturmak için gerekli PSPEC dosyaları hiyerarşik bir yapıda
bir
\emph on
subversion
\emph default
deposunda sunulacaktır.
Geliştirme işlemleri bu depo üzerinde yapılacaktır.
PSPEC deposunda paketler
\emph on
\begin_inset Quotes eld
\end_inset
\series bold
\emph default
ilk harflerine göre
\series default
\emph on
\begin_inset Quotes erd
\end_inset
\emph default
konumlandırılırlar.
Her paket kendine ait bir dizinde PSPEC dosyası, paket oluşturma için gerekli
olan ek dosyalar ve yamaların içinde bulunduğu files
\series bold
/
\series default
dizini ve paket oluşturmada kullanılacak betiklerin bulunduğu actions
\series bold
/
\series default
dizinine sahiptir.
\layout Standard
Bir geliştiricinin
\series bold
Pardus Linux
\series default
'a paket yapması için yalnızca PSPEC depo sıradüzeninde paket için gerekli
olan dosyaları sağlaması yeterlidir.
\series bold
Pardus Linux
\series default
'un belirli zamanlarda kullanıcılara sunulacak sürümlerini oluşturmak için
bu PSPEC deposundaki bu bilgiler kullanılarak PİSİ paketleri oluşturulacaktır.
\layout Standard
Bir yazılımın birden fazla sürümünün depoya eklenmesi gerekiyorsa, farklı
paket isimleri ile depoya yerleştirilirler.
(gtk1, gtk2 gibi...)
\layout Subsubsection
Örnek PSPEC Deposu Sıradüzeni
\layout Itemize
\series bold
a
\series default
/
\begin_deeper
\layout Itemize
\series bold
a
\series default
cpid/
\begin_deeper
\layout Itemize
\series bold
a
\series default
cpid-1.0.2.pspec
\layout Itemize
files.xml
\layout Itemize
\series bold
files/
\begin_deeper
\layout Itemize
acpid-1.0.2-branch.patch
\layout Itemize
acpid.init
\end_deeper
\layout Itemize
\series bold
actions/
\begin_deeper
\layout Itemize
setup.sh
\layout Itemize
build.sh
\layout Itemize
install.sh
\end_deeper
\end_deeper
\end_deeper
\layout Subsection
Container
\layout Standard
(Will be...)
\layout Standard
Container nedir? Ne işe yarıyor?
\layout Standard
Container listesi...
\layout Subsection
İkili Paket Deposu
\layout Standard
Oluşturulan ikili paketler
\series bold
PSPEC
\series default
dosyalarının tutulduğu hiyerarşik yapının aynısına sahip bir depoda sunulacaktı
r.
Paketlerin içerisinde bulunan
\emph on
metadata.xml
\emph default
dosyaları depodaki paketlerden alınarak ve birleştirilerek
\series bold
pisi.index
\series default
isminde bir içerik (depo içeriği) dosyası düzenli aralıklar ile oluşturulacaktı
r (
\series bold
Çağlar:
\series default
Burada cron illa mecbur yöntem olmak zorunda değil sanki, şimdilik zikretmeyeli
m, build farm zamanında bir çözüm buluruz ).
İçeriğinde mevcut sürümün bilgilerini içerecek bir dosya oluşturulacaktır.
Bu dosya dağıtımın tüm paketleri için şu bilgileri içerecektir;
\layout Itemize
\series bold
Name:
\series default
Paketin adı
\layout Itemize
\series bold
Definition:
\series default
Paketin kısa tanımı
\layout Itemize
\series bold
Version:
\series default
Yazılımın sürüm numarası
\layout Itemize
\series bold
Release:
\series default
Paketin revizyon numarası (kaçıncı paketlenmesi)
\layout Itemize
\series bold
License:
\series default
Paketin lisansı
\layout Itemize
\series bold
RuntimeReq:
\series default
Kurulmak/Çalışmak için hangi paketlere ihtiyacı var?
\layout Itemize
\series bold
Provides:
\series default
Paket neler sağlıyor (tanım yukarıda)
\layout Itemize
\series bold
History:
\series default
PSPEC dosyasından alınmış olan paket durumunu gösteren bölüm.
\layout Itemize
\series bold
Conflicts:
\series default
Paketin sistemde hangi paketler ile aynı anda kurulu olarak bulunamayacağı
bilgisi.
\layout Itemize
\series bold
PackageSize:
\series default
Paketin kapalı (kurulmadan önceki) boyutu.
Bu bilgi pisi paketinin dosya sisteminde kapladığı alan alınarak oluşturulacakt
ır.
\layout Itemize
\series bold
InstalledSize:
\series default
Paket kurulduğunda sistemde ne kadar yer kaplayacak?
\layout Standard
\series bold
pisi.index
\series default
dosyasının biçimi XML'dir.
Dosyanın doğrulanması için kullanılabilecek bilgi
\emph on
pisi-index.dtd
\emph default
dosyasında tanımlanmıştır.
\layout Standard
Bu dosya değiştirilmeyecek ve sadece Dağıtım Sürüm değiştirdiği zaman yenisi
oluşturulacaktır.
Aktif sürüm sırasında tüm değişiklikler
\series bold
ChangeSet
\series default
olarak sunulacaktır.
İstemci bilgisayarlarca çekilecek ve bağımlılık çözme, paket veritabanını
arama, paket kurma/kaldırma işlemleri bu dosyaların
\series bold
pisi.index
\series default
ile birleştirilmesi yardımı ile yapılacaktır.
\layout Standard
\series bold
ChangeSet
\series default
'ler
\series bold
pisi.index
\series default
dosyasına yama olarak sunulacaklardır.
Kolay oluşturulan, az bant genişliği isteyen ve efektif olmaları açısından
içeriklerini
\series bold
pisi.index
\series default
'in bir önceki revizyonlarından olan farkları arttırımsal (incremental)
olarak oluşturacaktır.
\layout Standard
Kullanıcı bilgisayarında oluşturulacak depo veritabanı pisi.index ve Changeset'le
r yardımı ile yaratılacaktır.
Kullanıcının depodaki paketlerin en güncel bilgilerini alabilmesi için
depo veritabanını düzenli olarak güncellemesi gerekmektedir.
Bu işlem bir arkaplan uygulaması ile otomatik olarak yaptırılabilir.
\layout Standard
Depoya eklenecek ikili paketler geliştiriciden alınmayacak, PİSİ derleme
ortamı tarafından hazırlanıp uygun görülen depoya yerleştirilecektir.
Böylece geliştiricinin sisteminden kaynaklanabilecek olası problemlerin
(sürüm farklılıkları, sorunlu ya da güvensiz yazılımlar vs.) önüne geçilecektir.
\layout Standard
PİSİ istemcisi birden fazla depo ile çalışabilecektir.
Birden fazla depo tanımlanması durumunda öncelikli depo her zaman
\series bold
Pardus Resmi Deposu
\series default
olacaktır.
Diğer depolar eşit önceliğe sahip olacaklardır ve kullanıcı elle belirtmediği
sürece tüm depolarda bulunan paketler resmi depodan alınacaktır.
\layout Subsection
PİSİ Paketinin Yapısı
\layout Standard
PİSİ paketleri ikili bir biçimde sunulacaktır.
Bu bölüm paketlerin biçemini (format) ve içerdiklerini tanımlamaktadır.
\layout Standard
\series bold
PISI
\series default
paketi, içerisinde aşağıdaki bölümler olan bir
\emph on
PK-ZIP
\emph default
paketidir.
Bu sayede paketler standart araçlar ile açılabilir/erişilebilir olacaklardır.
\layout Itemize
\series bold
metadata.xml:
\series default
PSPEC dosyasından alınacak ve üzerine eklenecek bilgiler ile oluşturulacak
Meta bilgisi
\layout Itemize
\series bold
files.xml:
\series default
Paket içerisinde bulunan dosyaların bir listesi
\layout Itemize
\series bold
Ek dosyalar:
\series default
CSL betikleri ve bunun gibi...
(Barış: Bunları da bir dizin içerisine koymak uygun olabilir)
\layout Itemize
\series bold
Install/ dizini:
\series default
Paketin kurulu biçimi.
Paketin sisteme kurulumu bu dizinin belirtilen dizine açılır.
\layout Subsection
Süreçlerin Tarifi
\layout Standard
Süreç tariri paket sisteminin en temel görevlerini, tasarımı özetlemek amacı
ile anlatır.
\layout Subsubsection
Paket Oluşturmak
\layout Standard
\begin_inset Graphics
filename images/pisi-gelistirici-small.png
rotateOrigin center
\end_inset
\layout Standard
Bir geliştiricinin paket oluşturmak için izleyeceği adımlar şöyledir;
\layout Itemize
\series bold
Geliştirici Grafik Arayüzü
\series default
ya da konsol araçları yardımı ile PSPEC dosyası yukarıda anlatılan yapıya
uygun olarak oluşturulur.
Gerekli olacak yamalar ve dosyalar yukarıda tarif edildiği gibi files/
dizinine yerleştirilir.
\layout Itemize
Oluşturulan PSPEC dosyası, hazırlanan paketin derlenebilmesi için PİSİ tarafında
n işlenir.
Eğer gerekli paketler sistemde mevcut değil ise bu paketler PİSİ tarafından
sisteme kurularak, sistem derleme işlemine hazır hale getirilir.
\emph on
(bunun için kullanıcıdan bir onay gerekiyor mu? Evet?)
\layout Itemize
Oluşturulan PSPEC dosyasının Global bölümündeki bilgiler işlenerek kaynak
kod sisteme alınır ve doğruluğu kontrol edilir.
Gerekli dosya ve yamalar yukarıda anlatılan biçime uygun bir şekilde PISI
\series bold
\series default
tarafından açılır ve gerekli yamalar koda uygulanır.
\emph on
(Adam kaynağın hash'ini kendisi çıkarmayacak sanırım.
Doğruluğunu burada kontrol etmek mantıklı değil gibi?)
\layout Itemize
\series bold
PSPEC
\series default
dosyasının
\series bold
Actions
\series default
bölümündeki
\emph on
\emph default
betikler sıra ile
\series bold
Pisi
\series default
tarafından işletilerek kaynak koddan ikili veri oluşturulur.
\layout Itemize
Geliştirici (tercihen grafik arayüz yardımı ile) derleme sonrası oluşturulan
dosyaları, PSPEC dosyasında tanımlanan Package bölümlerine göre sınıflandırır.
Oluşturulacak her paket için files.xml dosyası yaratılır.
\layout Itemize
PİSİ, PSPEC ve files.xml dosyalarını işleyerek paketi veya paketleri oluşturur.
\layout Itemize
Geliştirici oluşturduğu paketleri sisteminde test eder.
\layout Itemize
Oluşturulan paket oluşturma dosyaları (PSPEC dosyası, files/ dizini ve actions/
dizini)
\series bold
Merkezi Paket Derleme Çiftliği
\series default
tarafından derlenmek üzere
\series bold
PSPEC
\series default
\series bold
Dosyalar Deposu
\series default
'na iletilir.
\layout Itemize
İletilen
\series bold
PSPEC
\series default
dosyası
\series bold
Merkezi Paket Derleme Çiftliği
\series default
tarafından ikili paket veya paketler haline getirilir.
\layout Itemize
Oluşturulan paket veya paketler
\series bold
Paket Deposu
\series default
'na yerleştirilir.
\layout Subsubsection
Paket Kurmak
\layout Standard
\begin_inset Graphics
filename images/pisi-istemci-small.png
rotateOrigin center
\end_inset
\layout Standard
Bir istemcinin sisteme paket kurmak için izleyeceği yol şöyledir;
\layout Itemize
Sistemdeki ilgili uygulamalardan biri PİSİ'ye paket kurması için istekte
bulunur.
\layout Itemize
PİSİ, kendi yapılandırma dosyasını işleyerek, kendi yapılandırma dosyasının
içindeki bilgilerin ışığında
\series bold
Paket Deposu
\series default
ndan deponun durumu ile ilgili bilgileri (
\series bold
ChangeSet
\series default
ler ve kullanıcı yeni bir depo kullanmaya başladıysa
\series bold
pisi.index
\series default
) alır.
\layout Itemize
\series bold
Depo
\series default
dan aldığı bilgileri
\series bold
Depo Veritaban
\series default
ına yerleştirir.
\layout Itemize
PİSİ istenen paketin kurulması için gerekli olan bilgileri, ihtiyaç duyulan
paketleri belirler.
Gerekli olan paketleri
\series bold
Paket Deposu
\series default
ndan çekerek sisteme kurar.
Eğer çakışan paketler var ise bunları çözer.
\layout Itemize
PİSİ Kurulacak paketi
\series bold
Paket Deposu
\series default
ndan çeker ve çektiği paketin doğruluğunu kontrol ederek sisteme kurar.
Kurduğu paket ile ilgili bilgileri
\series bold
Kurulu Paket Veritabanı
\series default
'na yerleştirir.
\layout Itemize
Paketlerin yanında taşıdığı
\series bold
CSL
\series default
betiklerini
\series bold
ÇOMAR
\series default
'a verir.
\layout Subsubsection
Paket Kaldırmak
\layout Standard
Bir istemcinin sisteme paket kaldırmak için izleyeceği yol şöyledir;
\layout Itemize
Sistemdeki ilgili uygulamalardan biri PİSİ'ye paket kaldırmak için istekte
bulunur.
\layout Itemize
PİSİ, kendi yapılandırma dosyasını işleyerek,
\series bold
Kurulu Paket Veritabanı
\series default
ndan paketin başka bir paket tarafından gereksinim duyulup duyulmadığını
kontrol eder.
\layout Itemize
PİSİ paketi kaldırır.
\layout Itemize
ÇOMAR'a ilgili CSL betiklerini kaldırması için silinen paket ile ilgili
bilgi verir.
\layout Subsubsection
Bağımlılık çözmek
\layout Standard
PİSİ içerisinde paket bağımlılığı, doğrudan paket isim ve sürüm numarasına
bağımlılık olarak tanımlanmıştır.
Bu yüzden paket bağımlılığının çözümü depo veritabanından bağımlılığı oluşturan
paketleri iteratif olarak çıkarmak ile sınırlıdır.
\layout Standard
Paketler için tanımlanan bir diğer bağımlılık tipi ise COMAR OM (Object
Model) bacaklarına olan bağımlılıktır.
Bu bağımlılığın çözümü için Kurulu Paketler ve Depo veritabanları sorgulanarak
ilgili OM bacağını sağlayan bir paketin sistemde kurulu durumda olup olmadığı
bilgisi çıkartılır.
Eğer yoksa ilgili OM bacağını sağlayan paketlerin bir listesi sunulur.
\layout Subsection
Veritabanları
\layout Standard
İstemci makinadaki paket veritabanı aşağıdaki bölümlere sahip olacaktır.
Veritabanları
\series bold
\emph on
BerkleyDB
\series default
\emph default
veritabanlarıdır.
\layout Itemize
\series bold
Kurulu Paketler Veritabanı:
\series default
\emph on
Paket adı, sürüm numarası, hangi depodan kurulduğu ve dosyalar (files.xml)
\emph default
bölümlerini içerecektir.
\layout Itemize
\series bold
Depo Veritabanları:
\series default
Birden fazla depo veritabanı olabilir.
Her depo için
\series bold
pisi.index
\series default
dosyası içeriği depo veritabanına aktarılacaktır.
\layout Subsubsection
Kurulu Paketler Veritabanı
\layout Standard
Will be...
\layout Subsubsection
Depo Veritabaları
\layout Standard
Will be...
\layout Subsection
libpisi
\layout Standard
Paket veritabanının ana yüklenicisi libpisi kütüphanesi olacaktır.
Kütüphanenin temel görevleri aşağıdaki liste ile özetlenebilir.
\layout Itemize
Bir paketi sisteme kurma
\layout Itemize
Sistemden bir paketi kaldırma
\layout Itemize
Verilen bir PİSİ paketini açma
\layout Itemize
Verilen bir PİSİ paketi içerisinden yalnızca bir dosyayı/dizini çıkarma
(metadata.xml dosyası veya install/ dizini gibi)
\layout Itemize
Bağımlılık çözümleme
\layout Itemize
Depo veritabanını sorgulama
\layout Itemize
Kurulu paketler veritabanını sorgulama
\layout Itemize
Verilen bir ikili paketi sorgulama
\layout Itemize
İkili paketler deposundan bir paketi çekme/alma (fetch).
\layout Itemize
PSPEC dosyalarını okuma/işleme/oluşturma.
\layout Itemize
PSPEC dosyasında belirtilen bir uygulama kaynağını çekme/alma (fetch)
\layout Itemize
Farklı dosya tiplerini (zip, tar, tar.gz, tar.bz2) açma
\layout Itemize
Action betiklerini çalıştırma
\layout Itemize
İkili PİSİ paketi oluşturma
\layout Itemize
Kurulu paketler veritabanını güncelleme (yeni girdi ekleme, girdi silme
veya bir girdiyi güncelleme)
\layout Itemize
Dosya sistemini paket işlemleri için sorgulama (bir paketin kurulumu için
diskte yeteri kadar boş yer bulunuyor mu?)
\layout Itemize
Dosya özetlerini (hash) oluşturme ve doğruluklarını kontrol etme.
\layout Itemize
Paketi imzalama ve imzanın doğruluğunu kontrol etme.
\layout Itemize
COMAR sistemi ile iletişim kurma (CSL betiklerinin COMAR'a bildirilmesi,
betiklerin COMAR'dan kaldırılması)
\layout Standard
Bu gerekleri sağlamak için libpisi modülleri aşağıdaki şekilde gruplanmışlardır.
\layout Itemize
XML
\layout Itemize
DB
\layout Itemize
ZIP
\layout Itemize
Utils
\begin_deeper
\layout Itemize
unpack (tar, tar.gz, tar.bz2, zip)
\layout Itemize
md5
\layout Itemize
patch
\layout Itemize
gpg
\layout Itemize
fileutils (stat, vb.
şeyler için)
\end_deeper
\layout Itemize
DepSolver (bağımlılık çözümleyici)
\layout Itemize
Fetcher (curl)
\layout Itemize
ActionExec (Action betiklerinin çalıştırılması)
\layout Itemize
COMAR
\layout Itemize
Package (xml, zip, gpg, md5 modüllerini kullanıyor...)
\layout Subsection
PİSİ Package Builder (GUI)
\layout Itemize
PSPEC dosyasını kullanıcının tanımları doğrultusunda oluşturacak
\layout Itemize
Action betiklerini kullanıcıya yazdıracak
\layout Itemize
files.xml dosyasını/dosyalarını oluşturacak.
\layout Itemize
libpisi kullanarak paket oluşturacak.
\layout Section
Diğer
\layout Standard
PİSİ C++ ile yazılacak
\layout Standard
XML işlemleri için xerces-c kütüphanesi kullanılacak.
\layout Standard
berkleyDB
\layout Standard
libcurlpp
\the_end