Belgeyi bi ton değişiklikler.

This commit is contained in:
A. Murat Eren
2005-07-06 13:25:24 +00:00
parent 6b172f08a0
commit e650e69771
+301 -219
View File
@@ -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ı