diff --git a/doc/pisi.lyx b/doc/pisi.lyx new file mode 100644 index 0000000..72e314b --- /dev/null +++ b/doc/pisi.lyx @@ -0,0 +1,1631 @@ +#LyX 1.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 221 +\textclass article +\language turkish +\inputencoding auto +\fontscheme pslatex +\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, Onur Küçük, Barış Metin +\layout Date + +29 Mart 2005 +\layout Date + +Sürüm 0.4 +\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 + +Paket Oluşturma +\layout Standard + +Pisi bir dizin içinde verilen tanımlama dosyaları yamalar ve betikleri kullanara +k bir pakedi oluşturur. + Burdaki dizin yapısı aşağıdaki gibidir. +\layout Subsubsection + +PSPEC Dosyası +\layout Standard + + +\series bold +PSPEC (PİSİ SPECification) +\series default + dosyası paketin oluşturulması için gerekli olan temel bilgiyi tanımlar. + Oluşturulacak paketin ne olduğu, kaynağı, kim tarafından paketlendiği, + hangi başka paketlere ne tür bağımlılıklar içerdiği gibi bilgileri içerir. +\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 + +Dosya biçimi XML'dir ve aşağıdaki etiketleri içerir: +\layout Paragraph + +Pisi +\layout Subparagraph + +Source +\layout Itemize + + +\series bold +Name +\series default +: Uygulamanın adı. +\begin_deeper +\begin_deeper +\layout Itemize + + +\series bold +Homepage: +\series default +Uygulamanın web sitesinin URL'sini belirtir. +\layout Itemize + + +\series bold +Packager: +\series default +Paketi oluşturan kişilerin adı/soyadı ve e-posta adresi belirtir. +\begin_deeper +\layout Itemize + + +\series bold +Name: +\series default + Paket geliştiricisinin adı ve soyadı. +\layout Itemize + + +\series bold +Email: +\series default + Paket geliştiricisinin e-posta adresi. +\end_deeper +\layout Itemize + + +\series bold +License +\series default +: Uygulamanın lisansını belirtir (GPL, BSD, vb). +\layout Itemize + + +\series bold +Archive: +\series default + Uygulamanın orjinal kaynak kodunun bulunduğu URL'yi belirtir. + +\series bold +archType +\series default + ile arşiv tipi (tar.gz, tar.bz2, zip, vb), +\series bold +md5sum +\series default + ile MD5 hash değeri verilir. +\layout Itemize + + +\series bold +Patches +\series default +: Orjinal koda uygulanacak yamaların sıralı bir listesini içerir. +\begin_deeper +\layout Itemize + + +\series bold +Patch +\series default +: Yamanın dosya adını içerir. + +\series bold +compressionType +\series default + ile varsa sıkıştırma biçimi (gz, bz2, vb) verilebilir. +\end_deeper +\layout Itemize + + +\series bold +BuildDependencies +\series default +: Pakedi oluşturmak için gereken bağımlılıkları listeler. +\begin_deeper +\layout Itemize + + +\series bold +Dependency +\series default +: Bir bağımlılık tanımlar. +\begin_deeper +\layout Itemize + + +\series bold +Name +\series default +: Bağımlılık duyulan pakedin adı. +\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 +History +\series default +: Pakete yapılan güncellemelerin bir listesini verir. +\begin_deeper +\layout Itemize + + +\series bold +Update +\series default +: Bir güncellemeyi tarif eder. +\begin_deeper +\layout Itemize + + +\series bold +Date +\series default +: Güncellemenin tarihi. +\layout Itemize + + +\series bold +Version: +\series default +Uygulamanın sürüm numarası. +\layout Itemize + + +\series bold +Release: +\series default + Pakedin sürüm numarası. +\end_deeper +\end_deeper +\end_deeper +\end_deeper +\layout Subparagraph + +Package: +\layout Standard + +Uygulamadan oluşturulacak bir pakedi tanımlar. +\layout Itemize + + +\series bold +Name +\series default +: Oluşturulacak pakedin adı. +\begin_deeper +\begin_deeper +\layout Itemize + + +\series bold +Summary +\series default +: Tek satırlık açıklayıcı bilgi. + Çoklu dil desteğine sahiptir. +\layout Itemize + + +\series bold +Description +\series default +: Uygulama hakkında özet açıklama. + Çoklu dil desteğine sahiptir. +\layout Itemize + + +\series bold +Category +\series default +: +\layout Itemize + + +\series bold +RuntimeDependencies +\series default +: Pakedin çalışabilmesi için gereken bağımlılıkların bir listesini verir. + +\series bold +Dependency +\series default + alt etiketlerinden oluşur. +\layout Itemize + + +\series bold +Files +\series default +: Pakedin kurulacak dosyalarının tiplerini belirlemek için kullanılır. + Dosya tipleri ile ilgili bigi +\begin_inset LatexCommand \ref{FType} + +\end_inset + + kısmında verilmiştir. +\begin_deeper +\layout Itemize + + +\series bold +Directory +\layout Itemize + + +\series bold +Wildcard +\layout Itemize + + +\series bold +File +\end_deeper +\end_deeper +\end_deeper +\layout Subsubsection + +Actions Dosyası +\layout Standard + +Bu dosya bir Python betiği olup, kaynağın kurulması, derlenmesi, test edilmesi, + sisteme kurulması gibi işlevleri yerine getiren fonksiyonlardan oluşur. +\layout Subsubsection + +ChangeLog Dosyası +\layout Standard + +Pakedin sürümlerindeki değişikliklerin açıklamalarını içerir. +\layout Subsubsection + +Files Dizini +\layout Standard + +Orjinal kaynağa uygulanacak yamalar ve kaynakta bulunmayan fazladan dosyalar + bu dizine konur. +\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 +\begin_inset LatexCommand \label{FType} + +\end_inset + +: +\series default + Dosyanın tipini belirtir. + Paket sisteme kurulduğunda, veritabanına bu tip tanımı ile işaretlenerek + yerleştirilecektir. + Bu tip tanımları şunlardan birisi olabileceği gibi boş da bırakılabilir: + +\noun on +executable, conf, doc, sharedLib, localeData, programData, header +\noun default +. +\layout Itemize + + +\series bold +Hash: Path +\series default + ile belirtilen dosyanın SHA1 algoritması ile elde edilmiş +\emph on +cryptographic 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 Standard + +Bunlarin da acaba attribute seklinde olmasi daha mi dogru olur? -- Eray +\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 + +actions +\layout Itemize + +ChangeLog +\layout Itemize + + +\series bold +files/ +\begin_deeper +\layout Itemize + +acpid-1.0.2-branch.patch +\layout Itemize + +acpid.init +\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.xml +\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 +Summary: +\series default + Paketin kısa adı +\layout Itemize + + +\series bold +Description: +\series default +Paketin uzun 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 +RuntimeDependencies: +\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.xml +\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 +Config/ dizini: +\series default + Kurulum betikleri +\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.xml +\series default +) alır. +\layout Itemize + +Gerekiyorsa +\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 +BerkeleyDB +\series default +\emph default + veritabanlarıdır. +\layout Standard + +Beta versiyonda tek bir depo desteklenecektir. +\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.xml +\series default + dosyası içeriği depo veritabanına aktarılacaktır. +\layout Subsubsection + +Kurulum Veritabanı +\layout Standard + +Will be... +\layout Subsubsection + +Depo Veritabanları +\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şturma 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 +\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. +\the_end