diff --git a/doc/pisi.lyx b/doc/pisi.lyx index 811d597d..5957c918 100644 --- a/doc/pisi.lyx +++ b/doc/pisi.lyx @@ -69,97 +69,355 @@ Bu paketleri kurup kald \layout Section Paket Yöneticisi Gereksinimleri +\layout Standard + +Bu kısımda önceki bölümde tanımlanan paket yöneticisi kavramının, sunması + beklenen gereksinimler listelenmiştir. \layout Subsection -Kullanıcı gereksinimleri +Kullanıcı Gereksinimleri +\layout Standard + +Kullanıcı gereksinimleri, bir bilişim okuryazarı olarak daha önce tanımladığımız +\begin_inset Foot +collapsed true + +\layout Standard + + +\begin_inset LatexCommand \url[http://www.uludag.org.tr/belgeler/okuryazar/okuryazar.html]{} + +\end_inset + + +\end_inset + + kullanıcı profiline bağlı kalınarak çıkarılmıştır. \layout Itemize -Bilişim okuryazarı adını verdiğimiz hedef kullanıcımızın temel isteği, sisteme - istediği uygulamaları kurabilmektir. +Bilişim okuryazarıın temel isteği, sisteme istediği uygulamaları kolayca + kurabilmekten ibarettir. \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. + bir pakete ihtiyaç olduğunu saptamasıyla kolayca verilebilmeli, bu görev + 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 -\series bold -ÇOMAR -\series default - 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. +Kullanıcı, paketin sistemde doğru şekilde çalışabilmesi için gerekli olan + yapılandırma gereksinimlerinin karşılanmasından mümkün olduğuncayalıtılmalıdı. + Yapılandırma ile ilgili görevler paket yöneticisi dışındaki bir araçla + sağlanabilmeli, ya da kullanıcının verdiği emirlerle sonradan yapılabilmelidir. + \layout Itemize -Kurulum elden geldiğince hızlı olmalıdır. +Kurulum mümkün olduğunca 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. + güvenlik onarımları yapılmış yeni paket sürümleri yayımlandıkça, kullanıcı + 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. +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ırabilmelidir; + bunun yapılabilmesi için paketin her sürümündeki güncellemelerin önem derecesi + (yeni özellikler, hata düzeltmeleri, güvenlik açığı düzeltmesi) paketleme + esnasında belirtilebilmelidir. \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. +Bir paketin eski veya deneysel sürümlerini kurmak bilişim okuryazarının + bir ihtiyacı değildir. + Dolayısıyla eski sürümler ve geliştirme sürümleri alternatifleri ile kullanıcın +ın kafasının karıştırılmaması için; kullanıcı paketler deposunda her eriştiğinde + en son düzeltmeleri içeren son ve tek bir sürüme ulaşabilmelidir. + Bu hem basitlik hem de kullanıcının istemeyerek yanlış bir paket kurmasının + önüne geçer. \layout Itemize -Benzeri şekilde, paketler üzerinde ayrı ayrı güncelleme politikası belirleyebilm -ek, faydasından çok kafa karışıklığı yaratacağından dolayı desteklenmeyecektir. +Paket güncelleme ile ilgili paket bazında ayrı ayrı politikalar belirlenmesi + yukarda bahsedilen kullanıcı profilinden bakıldığında gereksiz ve kafa + karıştırıcıdır. \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. + edebilmesi sağlanabilmeldiir (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 daha + net bir şekilde ortaya çıkmaktadı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 bilgiler sunulabilmelidir. + Kullanıcının bu seçimi kolayca yapabilmesi için, hiç bir paket tarafından + ihtiyaç duyulmayan paketler, kurulu paketlerin kapladığı alan gibi bilgiler + paket yöneticisinden kolayca alınabilmelidir. \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. + uygulamaya ait olduğunu ve benzeri paket yöneticisinden kolayca alabilmelidir. \layout Itemize -Varolan paket yöneticilerinin (rpm, dpkg, portage, vs) paket kapsamları - kullanıcılara bazı zorluklar yaşatmaktadır. +Paketler farklı hedeflere kurulabilecek biçimde +\begin_inset Quotes eld +\end_inset + + +\emph on +relocatable +\emph default + +\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ı, özet fonksiyonları + yardımıyla tespit edilebilmelidir. + 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/Geliştirici Gereksinimleri +\layout Itemize + +Paket hazırlamak kolay olmalıdır. + Paket hazırlanırken ve inşa edilirken gerekli dosyalar bir çok ayrı kaynaktan + temin edilebilmelidir. + +\layout Itemize + +Kolayca paket oluşturabilmek için, tercihen bir grafik arayüz ile paket + hazırlanabilmelidir. + Paket yöneticisi, üst geliştirici kodunu alıp, gerekli bilgileri hazırlatacak, + gerekli işaretlemeleri kolayca yapabilecek bir araç sunmalıdır. +\layout Itemize + +Paket yöneticisinin geliştirme sistemi, paketleyici hatalarının gözden kaçmasını + zorlaştıracak araçlar sunmalıdır. +\layout Subsection + +Paket Kaynağı Gereksinimleri +\layout Itemize + +Paketler CD, Internet, uzak dosya sistemi gibi çeşitli kaynaklardan kurulabilmel +idir. + Temel olarak iki tip kaynak sözkonusudur. +\layout Itemize + +İlk tip, pakedi tek bir dosya olarak taşıyabilen ve programı depolama aygıtları, + e-posta ve benzeri yollarla dağıtmaya uygun bir arşiv dosyasıdı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. +Bu arşiv içinden, arşiv hakkında bilgi alınabilecek dosyalara, 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 ve hızlı şekilde erişilebilm +elidir. +\end_deeper +\layout Itemize + +Paketler birden fazla kaynaktan temin edilebilmelidir. +\layout Subsection + +Güvenlik Gereksinimleri +\layout Itemize + +CD, Internet gibi değişik yollarla temin edilen paketlern kim tarafından + paketlendiği bilgisi ve içeriğinin yolda değişmediği garantisi 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 gereklidir. +\layout Subsection + +Kurumsal Gereksinimler +\layout Comment + +Bu kısmı biraz daha açmak gerekli. +\layout Itemize + +Paket yöneticisi birden fazla paket kaynağı ile aynı anda sorunsuz bir şekilde + çalışabilmelidir. +\layout Itemize + +Kurumlar ya da bireyler tarafından ön tanımlı depoda da bulunan kimi paketlerin + özelleştirlmiş versiyonlarının bulunduğu depolar overlay olarak tanımlanabilmel +idir. +\layout Itemize + +Ön tanımlı depoda bulunmayan çeşitli paketlerin bulunduğu depolar addon + olarak tanımlanabilmelidir. +\layout Section + +Neden PİSİ? +\layout Standard + +Bu kısımda neden varolan paket yöneticisi çözümlerinden yararlanmak yerine + yeni bir paket yöneticisi yazmaya karar verildiği açıklanmaya çalışılacaktır. +\layout Standard + +Öncelikle Pardus'ta kullanılacak paket yöneticisinin, sisteme kurulan paketlerin + kendilerini sistem koşullarına göre otomatik bir şekilde yapılandırmasına + da olanak sağlayacak olan yapılandırma yöneticimiz ÇOMAR tarafından ihtiyaç + duyulan gereksinimleri de yerine getirmesi gerekliliği söz konusudur. + ÇOMAR'ın paket yöneticisi gereksinimleri şu şekilde listelenebilir: +\layout Itemize + +Bir paket kurulduktan sonra, pakete ait +\series bold +CSL +\series default + betikleri +\series bold +ÇOMAR +\series default +'a bildirip kayıt ettirebilmelidir. +\layout Itemize + +Bir paket kaldırılmadan önce +\series bold +ÇOMAR +\series default +'dan bu pakete ait betikleri kaldırmasını isteyebilmelidir. +\layout Itemize + +Bir paket eğer +\series bold +CSL +\series default + betiği sağlıyorsa, paketin hangi +\series bold +OM +\series default + dallarına ait betikler içerdiği bilgisini tutabilmelidir. +\layout Itemize + +Bir paketin ihtiyaç duyduğu yapılandırma görevlerinin bulunduğu bir +\series bold +OM +\series default + dalı için, hangi paketlerin bu dala ait betik içerdiği bilgisi sorgulanabilmeli +dir. +\layout Itemize + +Kurulması emredilen bir paket, kitaplık ve programların yanısıra +\series bold +OM +\series default + ü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 Standard + +Kolaylıkla görülmektedir ki yukarda belirtilen ÇOMAR gereksinimleri, diğer + paket yöneticilerinin özelleştirilmesi ile sağlanamayacak gereksinimler + değillerdir. + +\layout Standard + +Fakat hali hazırda kullanılan bir paket yöneticisine bu tip özelliklerin + eklenmesi, paket yöneticisinin kalan kısmının elden geçirilmesi ve ana + geliştirici tarafından yapılan güncellemelerin takibi anlamında çok büyük + bir iş yükünü de beraberinde getirir. + Bunun dışında, varolan ve geniş kullanım kitlesine sahip paket yöneticileri + (RPM, DPKG ve Portage) yukarda saydığımız gereksinimlerin kimilerini bizim + olması gerektiğini düşündüğümüz basitlikte yerine getirememekte, kimilerini + de hiç vaad etmemektedirler. +\layout Standard + +Aşağıda bizce ne gibi dezavantajlar barındırdıkları listelenmeye çalışılmıştır: +\layout Comment + +İşte arkadaşlar buralar dolacak güzelcene. + Hadi bakalım. +\layout Subsection + +Neden DPKG Değil? +\layout Subsection + +Neden RPM Değil? +\layout Subsection + +Neden Portage Değil? +\layout Standard + +Yukardaki gereksinimleri tam olarak sağlayabilmek için çeşitli tipte bağımlılıkl +ar, farklı özelliklerle kurulabilen paketler, en az dosya indirme ile kurulum + gibi özelliklere ihtiyacımız olduğu anlaşılmıştır. + Halihazırdaki paket sistemlerinin yukardaki örneklerde de anlatıldığı gibi + bunları beklediğimiz oranda sağlamadıkları ve onlara bu özellikleri kazandırman +ın yeni bir tane yazmaktan daha kolay olmamasından dolayı yeni bir paket + yöneticisi yazmak gereği doğmuştur. +\layout Standard + + +\series bold +PİSİ +\series default + ( +\series bold +Packages Installed Successfully as Intented +\series default +) bu nedenle geliştirilmektedir. +\layout Subsection + +JUNKKİEEEE +\layout Comment + +Alttaki kısım daha önce yukarlarda bir yerlerde idi, kaybolmsaın diye buraya + koyuyorum, uygun bir yere monte edecek sonra da burdan sileceğizdir. +\layout Standard + +DPKG ve RPM gibi ikili paketlerin ile çalışan paket yöneticilerinin paket + kapsamı ile ilgili sıkıntılar mevcuttur: Kapsam çok geniş olduğunda (örneğin + tek bir KDE pakedi), kullanıcı her güncellemede ç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. +\begin_deeper \layout Itemize Kullanıcıya uygulamaları belli özellikleri (örneğin geliştirme kitleri, @@ -180,182 +438,6 @@ mplayer \emph default programı gibi). \end_deeper -\layout Itemize - -Paketler farklı hedeflere kurulabilecek biçimde -\begin_inset Quotes eld -\end_inset - - -\emph on -relocatable -\emph default - -\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 -\series bold -CSL -\series default - betikleri -\series bold -ÇOMAR -\series default -'a bildirip kayıt ettirmelidir. -\layout Itemize - -Bir paket kaldırılmadan önce -\series bold -ÇOMAR -\series default -'dan bu pakete ait betikleri kaldırmasını istemelidir. -\layout Itemize - -Bir paket eğer -\series bold -CSL -\series default - betiği sağlıyorsa, paketin hangi -\series bold -OM -\series default - dallarına ait betikler içerdiği bilgisini tutmalıdır. -\layout Itemize - -Verilen bir -\series bold -OM -\series default - 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 -\series bold -OM -\series default - ü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 - - -\emph on -TODO: Bu soruya verebileceğimiz bir kaç satır cevap daha vardır eminim :). - PİSİ ne iyileştirmeler getirecek/getiriyor maddeler halinde de yazabiliriz - yine... -\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 -\series bold -PİSİ -\series default - ( -\series bold -Packages Installed Successfully as Intented -\series default -) adını verdiğimiz yazılımı geliştiriyoruz. \layout Section PİSİ Tasarımı