[Gelistirici] Obsoletes

Faik Uygur faik at pardus.org.tr
2 Tem 2007 Pzt 17:01:48 EEST


On Monday 02 July 2007 16:05:13 S.Çağlar Onur wrote:
> - index'ini güncellemeyen adam bu dosyaları sildiğimizde veya başka bir
> yere taşıdığımızda 404 ile karşılaşıyor. Bunu aylar önce tartıştık ve eski
> paketleri depoda bırakma kararı aldık.
>
> - Dosyaları başka bir yere taşımak benim depo maintainance iş yükümü
> arttıyor, bir de onları takip etmek zorunda kalıyorum, oysa şu anda
> distribution.xml içine yazmak bu paketlerin index'e girmemelerini garanti
> ediyor.

Eski paketlerin birikmesi sorun oluyor. Yedek depo boyutu sürekli artıyor. 
Maintainance problemini kendimiz çıkarmışız. 50-60 MB bir paket kurduktan 
sonra o paketin güncellenmiş hali de olduğunu görmek hoş değil. Belki 
bunu yeniden düşünmek gerekli.

> - Replaces ile Obsolute farklı şeyler.

Aynı demedim, sadece Obsolute içine Replace edilmiş paketleri yazmak durumunda 
kalıyoruz. Ve bunları <Obsolute> diye yazıyoruz. Bu paketler Obsolute olmadı, 
_depodalar_ ama isimleri değişti. Replaces buradan geliyor.

> Replaces == Depoya gelen _YENİ_ paket eski paket ile yer değiştiriyor

Tam olarak yeni paket olarak işlemiyoruz. Eski paketin devamı olarak 
işliyoruz. Güncellenecek paket listesi, "kurulu paketler'in, depo'da 
buildnosu/releasei fazla olanı varsa"'dan çıkıyor. Buna ek olarak, replaced 
edilmişse bu paketi, şu pakete güncelle diyoruz.

Nasıl yeni paket kurulurken eski paketini kaldırıyorsa burada da yapılan şey 
aynı. Buradaki eski pakete <Obsolute> dememize gerek yok. Bunu index şeysi 
zorunluğundan yapıyoruz. Bunu yapmanın bir anlamı yok. Paketçi Replaces deyip 
geçmeli.

> Obsolute == Depoda zaten bulunan eski paket _ESKİ_ paketin yaptığı işi
> yapmaya/provide ettiği dosyaları provide etmeye başlıyor.

Tanımı anlamadım.

> Hem Replaces'ı sen icat ettin, ben
>
> <Obsolute replacedBy="hede">hödö</Obsolute>
>
> ile tek noktada çözmeyi önermiştim :)

Replaces daha güzel oldu :)

> > Burada sorun, dağıtımda desteklemeyi bıraktığımız her paketin kurulu bir
> > sistemden _mutlaka ama mutlaka_ kaldırılması gerekmediği. Bunun bir
> > ölçüsü yok. Güvenlik açığı _olabilir_ artık desteklemiyoruz diyoruz
> > sadece. Bu otomatik kaldırılması için bir sebep mi?
>
> Evet hemde fazlaca yeterli bir sebep. Bunun çocuğun eline şeker vermekle ne
> alakası ki?
>
> Diyelim zamanında depoda bir paket varmış (örneğin gtk1), artık depoda bu
> pakete depend eden paket kalmamış ve bu paket maintain
> edilmiyormuş/geliştiricisi bir sebeple bu paketi bırakmış ve kimse de
> üzerine almamış ve depodan atmışız.

Burada ciddi bir sorun var. Kararlı depo'ya bir paket bu kadar kolay girip 
çıkmamalı. Paketi kimse üzerine almamış diyemeyiz/dememeliyiz. bzr, 
bzr-svn, realplayer verilebilecek örnekler. 

> Fakat bu  "_mutlaka ama mutlaka_ kaldırılması gerekmediği" fikrinden dolayı
> 20 gün sonra gtk1'de remote exploit çıkmış adamın makinasına başka kötü
> çocuklar girmiş, bunu şimdi o çocuğa nasıl anlatacağız peki :)

O zaman depodaki paket maintain edilmeli. 

> Bence yanlış görüyorsun o zaman, Conflict ve Replaces iki paket arasındaki
> ilişiyi tanımlıyor, bu taglardaki anlamların hayata geçmesi için bu tagları
> içeren paketlerin _o an_ güncelleniyor veya kuruluyor olması lazım oysa
> Obsoletes depo ile kurulu paketler arasındaki ilişkiyi tanımlıyor, orada
> Obsolete işaretlenen paket güncelleme listesinde yoksa/o an kurulmuyorsa
> bile ilk pisi işleminde (mesela pisi up) sistemden kaldırılmalı.

Bir paketin otomatik kaldırılması için ya bir lisans problemi ya da 
kullanıcının makinesinde çalışmayacak kadar sorunlu olması (sürekli sorun 
çıkarıyor, programın/kütüphane artık kullanılamıyor, upstream'in sallamıyor) 
olması gerektiğini düşünüyorum. Bunun dışında kullanıcının kurduğu ve 
kullandığı bir paketi otomatik olarak kaldırmamızı yanlış buluyorum.

Depo'ya bir paket alıp sonra da ya vazgeçtim bu paketten, kimse de yok buna 
bakacak diyemeyiz/demeliyiz. Obsolute'u da bunun için kullanmamalıyız.

- Faik



Gelistirici mesaj listesiyle ilgili daha fazla bilgi