1905 lines
40 KiB
Plaintext
1905 lines
40 KiB
Plaintext
#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
|