[Gelistirici] pisi tarZ desteği

Gürer Özen gurer at pardus.org.tr
13 Haz 2010 Paz 15:44:55 EEST


13 Haziran 2010 Pazar günü (saat 15:15:27) Fatih Aşıcı şunları yazmıştı:

> tarZ desteğini trunk'ta atacağım. Eğer birisi, kuvvetli bir argüman
> gösterir de atılmamasına karar verirsek geri alabiliriz; ancak şimdi
> üzerinde çalıştığım işi bir an önce bitirmek için sileceğim.

Bu yalnızca build unpack aşamasında değil mi? Çıkarmanın hiç bir zararı olmaz 
o durumda, en kötü durumda ihtiyaç olursa geri konur.

> pisi trunk'ta lzma binding'lerini kullanarak install.tar.lzma'dan direkt
> dosyaları çıkartmayı sağladık. Şimdi ise yukarıda ekleyeceğim özellikle hiç
> geçici dosya kullanmadan doğrudan zip arşivi içindeki install.tar.lzma'yı
> diske açmayı düşünüyorum.

Belki dikkate almışsınızdır ama bir uyarı yapayım. Eğer bir dosyayı arşivden 
direk hedefine çıkartırsak, o dosyayı o anda kullanmakta olan tüm süreçleri 
kırıyoruz. Yani bu şekilde update yaparken servisler, desktop, hatta pisinin 
kendisi bile (mesela system.base den python yada libgzip falan güncellerken) 
crash ediyor.

Çözüm için yeni dosyanın farklı bi inode ile oluşmasını sağlamak lazım. Bunun 
için bir yol önce hedef dosyayı unlink() edip silmek (bu dosyayı o anda açmış 
süreçleri etkilemiyor) ve yeni dosyayı yerine yazmak. Daha güvenli olan ise 
hedef dosyayı önce bir geçici dosyaya yazmak, sonra ise asıl yerine move 
etmek. Bunun avantajı eski dosyayı silmeden önce yeni dosyanın tümünü arşivden 
çıkarmış olacağımız için, mesela arşivde bir sorun varsa yarım dosya 
kalmasının önüne geçmiş oluyoruz. Aklımda kaldığı kadarıyla şu anki önce temp 
bir yere açma sebebi de buydu.



Gelistirici mesaj listesiyle ilgili daha fazla bilgi