[Gelistirici] mit-kerberos paketi check hatası
Ozan Çağlayan
ozan at pardus.org.tr
2 Oca 2011 Paz 18:22:02 EET
On 02.01.2011 16:48, Erdem Bayer wrote:
> Selamlar
>
> * Şu anki paket inşa sistemimiz runtime bağımlılıkları çözebilmek için
> bütün paketleri inşa ettiği alana kuruyor, dolayısı ile bir paketin
> bağımlılıkları doğru yazılmamışsa farm'ın bunu yakalama ve uyarma şansı
> olmuyor.
Bu sadece, bağımlılık olarak yazılmamış *ancak* farmda tüm paketler
olduğu için derleme esnasında bulunarak bağlanılmış dinamik
kitaplıkların kullanıcı sisteminde kurulu olmamasından dolayı olası
kırılabilme sorunlarını çözer. Yani paket bağımlılıkları doğru
yazılmamışsa farm'ın bunu yakalaması ve uyarmasıyla birebir ilintili
değil. Ama yine de şu anki tüm paketleri üstüne kurma mekanizması da
sağlıklı bir mekanizma değil, bunu herkes kabul ediyor.
>
> * A paketinde bir değişiklik olmuş ise, A paketinin tüm ters
> bağımlılıklarının bu değişiklikten etkilenip etkilenmedikleri test
> edilmiyor. Bu testi yapmasını sınırlı kaynağı ve zamanı olan paket
> sahibinden bekliyoruz.
Değişikliğe göre değişir. Bu A paketi bir defa kitaplık olmak durumunda.
Kitaplık olmadığı durumda A'daki değişikliğin geriye yayılarak sorun
çıkarmasını anlamanın tek yolu paketçinin durumdan haberdar olmasıdır.
A kitaplığının sürümü yükseldiyse, ona bağlanmış paketlerin kırılması
durumunda buna yaptığımız bir şey maalesef yok, ancak kırıldıktan sonra
sürüm yöneticisi paketçiyi uyarıyor.
>
> * Paketçiden bir pakette yapılan ufak bir değişikliği bile 3 farklı
> dağıtım ve iki mimari üzerinde kendi başına inşa ve test etmesini
> bekliyoruz. (Yine sınırlı kaynak ve zaman problemi)
Buna nasıl bir çözüm bulunabilir bilmiyorum. Sonuçta paketçi bu ufak
değişikliği test edecekse zaten 3 farklı dağıtım ve 2 mimarinin
halihazırda önünde olması lazım. Bu durumda da pisi bi pspec.xml ile
paketi oluşturup kurması çok da zor değil. Ha test etmeyecekse zaten
etmiyor ve commit edip geçiyor.
>
> * Paket yönetim sistemimizin bir paketi güncellemekten anladığı şey
> paketin eski sürümünü kaldırıp yeni sürümünü kurmak. Bu durum paketin
> güncellenme aşamasında yapılması gereken özel birşey varsa elimizi
> kolumuzu bağlıyor.
postInstall, preRemove var?
>
> * Paket yönetim sistemimiz içinden servis betiği çıkan paketleri servis
> ile ilgili herhangi bir işlem yapmadan kaldırıyor, daha sonra yeniden
> kurmaya çalıştığında (örn: güncelleme) karşılaşılan bir hata sistemi
> geri dönülmez durumda bırakabiliyor. Örn: Paket kaldırıldı, ancak servis
> durmadığı için yeniden kurulamıyor, artık paket de gittiği için servisi
> durdurmanın herhangi bir yolu da yoksa ne yapacağımızı şaşırabiliyoruz.
> (Teorik bir örnek değil, geçen gün eski bir makine üzerinde nfs-server
> paketini güncellerken başıma geldi.)
Bundan dolayı oluşan bir sorunla hiç karşılaşmadım şu ana kadar ancak
RPM paketlerinde gerçekten de aç/kapa yapılıyor. Bunu mevcut PiSi
altyapısıyla yapmak oldukça kolay olmalı.
>
> * Paketlerimizin farklı mimarilerde farklı ihtiyaçları var ise (örn:
> farklı bağımlılıklar) bu ihtiyaçları karşılayamıyoruz veya karşılamakta
> zorlanabiliyoruz.
Hiç karşılaşmadık. Karşılaşılınca nasıl çözüleceğine dair geliştirici
listesi arşivlerinde yapıcı bir tartışma var zaten oradaki çözümlerden
birini uygulamak sorunu çözecektir.
> Bazı testler 4-5 saat sürebiliyorsa bu testlerin yapılmasının yeri bence
> elle yapılan bir inşa yerine tam da otomatik çalışan bir sistem olan
> farm olmalıdır. Uzun süren işlemi otomatik çalışan uygulamaya değil de
> elle çalıştırılan ve kişisel çalışma ortamlarımızın kaynağını harcayan
> bir yönteme bırakmak sadece bana mı mantıksız geliyor?
Hayır. Zaten mevcut sıralı paket derleme mekanizması yerine dağıtık ve
asenkron bir yapı olsa testler açılabilir. Şu anki tüm paketleri sırayla
derle, üstüne kur mantığı yanlış olduğu için bu yanlışın üstüne testler
de açılırsa paket derleyemeyiz.
Bir de dipnot, PiSi kodunun düzeltilip check() fonksiyonunun dönüş
değerine göre hata değil uyarı vermesi gerekiyor. check() paketin
oluşumunu engellememeli.
Bir de her şeyi düzgün yapsak, sandbox'a takılacak bir sürü test olacaktır..
>
> Ayrıca yukarıda yazdığın cümle her ne kadar doğru gözükse de yazılan
> testlerin sadece o paketle ilgili olmadığı, paketin bağımlı olduğu diğer
> tüm uygulamalar ile o paket arasındaki ilişkiyi de kontrol ettiğini
> düşündüğümüzde testlerin sadece o paket üzerinde bir değişiklik
> yapıldığında değil bağımlılıkları içinde bir değişiklik olduğunda da
> çalıştırılması gerekliliği ortaya çıkıyor, bunu da paketçiye bırakmanın
> insafsızlık olduğunu düşünüyorum.
Bu çok over-engineered bir senaryo bence.
>
> Ayrıca testler dışında inşası uzun süren paketler de var, yine bu
> paketlerde yapılan en ufak değişikliği de 6 ayrı yerde inşa ederek test
> etmesini paketçiden bekliyoruz, halbuki bunu otomatik yapabilen bir
> yazılım var ise bu da bana insafsızlık gibi geliyor.
Evet bu gerçekten hoş olur.
Bunun için,
* Dedicated/güçlü bir sunucu altında bir sanallaştırma teknolojisiyle
sanallaştırılmış len(dagitim)*len(desteklenen_mimari) kadar derleme
çiftliği oluşturulmalı.
* Derleme yazılımı kendisine uzaktan gelen istekleri bu çiftliklere
paslamalı ve bu çiftliklerde her paketi izole temiz rootfs içinde
derlemeli (Sorun 1: A paketi B'nin yeni sürümüne inşa bağımlı ise, A'nın
derleneceği ortamda, B'nin yeni sürümü kurulu olmalı. Bu nasıl olacak?).
Bu esnada testler de çalışmalı.
* Düzgün bir web arayüz. Ama gerçekten düzgün. Her şeyi anlatan, sunan,
test sonuçlarını görüntüleyen, paketleri indiren linklerin olduğu, vs.vs.
* Paketleri derletme isteklerini göndermek için konsol araç kiti.
--
Pardus Linux
http://www.pardus.org.tr/eng
Gelistirici mesaj listesiyle ilgili
daha fazla bilgi