Pardus:Depo İşleyişi

PardusWiki sitesinden

Git ve: kullan, ara
Bu madde bir taslaktır.
Bu maddeyi genişleterek veya yazımına katkıda bulunarak zenginleştirebilirsiniz.
Düzenleme yapıldıktan sonra bu açıklama silinmelidir.


Konu başlıkları

Giriş

Bu belge, Pardus kaynak ve ikili depolarının işleyişini açıklamayı amaçlamaktadır. Depo işleyişi tüm yeni paketlerin depoya eklenmesi, var olan paketlerin güncellemelerinin yapılması - test edilmesi - kullanıcılara ulaşması, güvenlik güncellemelerinin depoya alınması ve duyurulması gibi süreçleri içerir.

Depo üzerinde yapılacak tüm geliştirme işlemleri için Pardus Depo Politikası belgesi temel alınır.

Paketler ve Paket Geliştiricileri

Paketler, Pardus dağıtımını oluşturan yazılımların sorunlarından arındırılmış, dağıtım entegrasyonu ve yerelleştirmesi yapılmış, PiSi tarafından kurulabilir hale getirilmiş halleridir. Her paketin bir geliştiricisi vardır : bu geliştirici paketi hazırlayan ilk geliştirici olabileceği gibi paketi daha sonradan devralarak güncellemeleri ve sorunları ile ilgilenen başka bir geliştirici de olabilir.

Paket geliştiricisi olmak, ilk anda yazılımın PiSi kaynak paketini hazırlamak ve bir ikili paket deposuna sokmaktan ibaret gibi görünse de aslında devamlı birbirini takip eden bir güncelleme - sorun çözme - takip etme sürecini işletmek olarak tanımlanabilir.

Bir paket geliştiricisi genel olarak :

  • yazılımın gelişimini takip etmek,
  • paketin hatalarını çözmek ve bu çözümleri yazılımın orijinal geliştiricisi ile paylaşmak,
  • yazılımın dağıtım içindeki entegrasyon ve yerelleştirmesinin sorunsuz olmasını sağlamak,
  • Pardus depolarında paketin inşasını ve çalışmasını etkileyecek değişlikleri takip etmek ve paket üzerinde gereken değişiklikleri yapmak

işleri ile uğraşır.

Pardus paket yöneticisi PiSi, hem kaynak hem de ikili depolarla çalışabildiğinden, paketin kaynak depolara ilk girişinden ikili paket olarak son kullanıcıya ulaşmasına kadar tüm aşamalarda PiSi kullanılır. Dağıtımın paketlerini inşa edip ikili depolara dağıtan derleme çiftliği de özelleşmiş / otomatikleştirilmiş bir PiSi arayüzüdür.

Ön hazırlık

Paket geliştiricileri, yeni bir paket hazırlamak veya var olan bir pakette denemeler yapmak için Pardus kaynak deposundaki playground alanını kullanırlar. Her geliştirici playground altında kendi klasörünü oluşturur ve bu klasör altında çalışır.

Playground alanı, tam anlamıyla bir depo değildir - aynı yazılımın birden fazla sürümü, eksik ve/ya derlenmeyen paketler gibi depo politikasının izin vermediği paketler de playground alanında bulunabilir, bir yazılımın paketi aynı anda farklı geliştiricilerin playground alanlarında bulunabilir.

Bir zorunluluk olmamakla birlikte geliştiricilerin kendi klasörlerinde Pardus kaynak depo bileşen hiyerarşisini kullanmaları tercih edilir. Depo hiyerarşisi ve bileşen bilgileri hem paketin geliştiricisi hem de paketleri incelemek ve inşa etmek isteyen diğer geliştiriciler açısından kolaylık sağlar.

Pardus kaynak depolarına yazma hakkı bulunmayan katkıcılar ise Pardus hata takip sistemine yeni paket isteği ekleyip hazırladıkları paket kaynak dosyalarını bu hataya ekleyerek paket geliştirme sürecine dahil olabilirler. Fakat yukarıda bahsedildiği gibi paketin devamlı olarak bakıma ihtiyacı olacağından bu geliştiricilerin en kısa zamanda geliştirici başvurusu yaparak kaynak depo yazma hakkı alması, paketlerin bakımını yapması tercih edilen yöntemdir.

Gözden geçirme (Review) süreci

Geliştiricisi tarafından yeterli olgunluğa geldiği düşünülen paketlerin pardus-devel veya contrib-devel kaynak depolarına alınabilmesi için diğer geliştiricilerin gözden geçirmesi gerekmektedir. Bir paket gözden geçirmeye hazır hale geldiğinde geliştiricisi paketi playground alanında bulunan kendi klasöründen review klasörü altına taşır. Bu sırada deponun bileşen hiyerarşisine uyulması önemlidir.

Paket Gözden Geçirme Süreci

Paket gözden geçirme süreci, Pardus deposuna yeni girecek olan paketlerin depo politikasına uygun olmalarını amaçlar.

Gözden geçirme süreci, `Pardus Hata Takip Sistemi http://hata.pardus.org.tr aracılığıyla aşağıdaki adımlar uygulanarak gerçekleşmektedir.

  • Paket hazır duruma geldiğinde depoda playground/review dizini altında girmesi düşünülen bileşene kopyalanır.
  • Hata takip sisteminde, gözden geçirme sürecine girecek paket için daha önce bildirilmiş bir yeni paket isteği varsa sürece bu hata raporu üzerinden başlanır.
  • Paketi hazırlamak isteyen geliştirici, hata raporunu kendisine atar ve hata durumunu ATANDI şeklinde değiştirir. Bu işlemi sadece "editbugs" grubuna dahil bir Bugzilla kullanıcısı yapabilir.
  • Hata raporunda ürün olarak "Review", bileşen olarak paketin gireceği depo bileşeni seçilir. İlgili bileşen sorumluları otomatik olarak CC'ye eklenecektir.
  • Girilmiş olan hatada, 'Özet' bölümünde paketin adı, 'Ayrıntılar' bölümünde paketin pspec.xml dosyasında yazan Açıklama (description) alanı yer almalıdır. Paketin depoya alınmasında özel bir neden varsa (depoda var olan bir paket için gerekli olması, gözden geçirme sürecindeki başka bir paketin bağımlılığı olması vb.) hatanın 'Ayrıntılar' kısmına yazılmalıdır.
  • Paketin katkı depolarına alınması gerekiyor ise, hatanın "Ayrıntılar" bölümünde bu durumun açıklanması gerekmektedir.
  • Paket, gözden geçirme sürecinde bulunan başka bir pakete bağlı ise o paket için açılan hataya bağımlı olarak işaretlenir.
  • Paket üzerinde sonradan yapılacak değişikliklerin SVN açıklamalarına aşağıdaki şekliyle bir satır eklenerek ilgili hataya yorum olarak iletilmesi sağlanır.
     BUG:COMMENT:<Hata Numarası>
  • Paketin uygun olduğuna karar verilebilmesi için yeterli sayıda ACK alması gerekmektedir. ACK'ler, başta ilgili bileşen sorumluları olmak üzere diğer geliştiriciler tarafından hata takip sisteminde yorum olarak verilir. Sürecin tamamlanması için en az 2 (iki) ACK alınması gerekir. Bu ACK'lerden en az biri, ilgili bileşenlerin sorumlularından olmalıdır. Paket sahibinden başka bileşen sorumlusu olmadığı durumda herhangi bir geliştirici ACK verebilir.
  • Paketi gözden geçirmek isteyen geliştirici, herhangi bir hata bulursa ACK vermek için hatanın düzeltilmesini beklemelidir. Şartlı ACK verilmemelidir.
    Örneğin: YANLIŞ: Dosya izinlerini değiştirdikten sonra ACK.
             DOĞRU : Dosya izinlerinin düzenlenmesi gerek.
  • Paketçi, ACK için ön koşul olan kriteri yerine getirdikten sonra, inceleme yapan kişi değişikliğin doğruluğunu kontrol eder ve yorum olarak "ACK" yazar.
  • Yeterli sayıda ACK alan paket, sahibi tarafından depoya alınır, review dizininden silinir ve hata raporunun durumu KARAR VERİLDİ/ÇÖZÜLDÜ olarak değiştirilir.

Yeni paketlerin kaynak ve ikili depolara alınması

Sorunsuz inşa edilebilir / çalışır hale gelerek gözden geçirme sürecini tamamlayan paketler geliştiricisi tarafından ilgili kaynak depoya taşınır. Bu aşamada paket kaynak depoya eklenmiş ve kaynak depo indeksine girmiş olacağından paket bakım süreci de başlamış olur: Pardus hata takip sisteminde hata raporları kabul edilir, geliştiricisi tarafından hataları çözülür, eksikleri tamamlanır. Depo sorumlusu ve güvelik takımı tarafından güvenlik bakımları yapılır.

pardus-devel ve contrib-devel depolarındaki kaynak paketler derleme çiftliği tarafından inşa edilerek ikili paket oluşturulmamaktadır, sadece kararlı kaynak depolarındaki paketler inşa edilerek ikili paket oluşturulmaktadır.* Paketin kararlı kaynak depolara alınıp, derlenerek ikili paketlerinin oluşturulması için ise paketin bulunduğu kaynak depoya göre iki faklı yöntem izlenir :

pardus-devel kaynak deposundaki paketler

Bu depo Pardus dağıtımın bir sonraki kararlı sürümüne ilerleyen ana geliştirme deposudur. Her kararlı Pardus sürümü çıktığında pardus-devel deposu dallandırılır ve bu kararlı kaynak depo dalı kararlı sürüm bakım takımı dışıdaki geliştiricilerin gönderimlerine kapatılır. Bu nedenle pardus-devel kaynak deposuna yeni giren paketler için paket geliştiricisi tarafından stable e-posta listesine bir e-posta atılarak paketin kararlı depoya alınması [merge] istenir. Bu e-posta aşağıdaki bilgileri içermelidir :

  • paketin adı, kaynak depo içindeki tam yolu,
  • paketin kullanım amacı,
  • paketle ilgili diğer geliştiricilerin ilgilenebilecekleri teknik detaylar,
  • varsa bağımlılıkları ve hata takip sistemindeki ilgili hataları
  • Paketin girmesi düşünülen kararlı depo (pardus-2008 / pardus-2007 ...)
  • paket farklı kararlı depolara farklı şekillerde eklenecekse, ilgili depolara uygun değişiklikler.

Bu e-posta sonrasında paket kararlı sürüm bakım takımları tarafından kararlı depo politikası ve ilgili depolara uygunlukları açısından gözden geçirilirler ve gerekli değişikliklerle kararlı kaynak depolara alınır.

contrib-devel kaynak deposundaki paketler

Bu depo pardus dağıtımının bir sonraki kararlı sürümüne ilerleyen katkı geliştirme deposudur. Aynen pardus-devel deposunda olduğu gibi bu depo da kararlı Pardus sürümlerini temel alan kararlı dallara sahiptir. contrib deposunda her geliştirici kendi sorumluğundaki paketleri kararlı kaynak depolara kendisi almaktadır. Yeni paketler de review alanında contrib-devel deposuyla birlikte kararlı dallara da kopyalanarak kararlı depoya alınmış olur.

Var olan paketlerin güncellemeleri

pardus-devel ve contrib-devel depoları ana geliştirme depoları olduğundan tüm geliştirme ve güncelleme bu depolarda yapılmalıdır. Paket üzerinde büyük bir değişiklik veya faklı denemeler yapılacaksa playground alanı da kullanılabilir - bu durumda paketin son hali tek bir gönderim ile güncellenir. Depo politikası uyarınca devel depolarında da inşa edilemeyen, çalıştırılamayan, eksik paket bulunmamalıdır.

pardus-devel ve contrib-devel depolarında yapılan paket güncellemelerinin kararlı depolara alınması için de yeni paketler için izlenen yöntemin bir benzeri izlenmektedir :

pardus-devel kaynak deposundaki paketler

Paket geliştiricisi tarafından stable e-posta listesine bir e-posta atılarak paket güncellemelerinin kararlı depoya alınması [merge] istenir. Bu e-posta aşağıdaki bilgileri içermelidir :

  • paketin adı, kaynak depo içindeki tam yolu,
  • güncellemenin nedeni, paketteki değişikliklerin ve varsa çözülen hatanın özeti,
  • güncelleme ilgili diğer geliştiricilerin ilgilenebilecekleri teknik detaylar,
  • varsa hata takip sistemindeki ilgili hataları, güvenlik güncellemesi referansları
  • Paketin alınacağı kararlı depo (pardus-2008 / pardus-2007 ...)
  • paket farklı kararlı depolara farklı şekillerde alınacaksa, ilgili depolara uygun değişiklikler (ilgili depoya uygun yama dosyası şeklinde).

Bu e-posta sonrasında güncellemeler kararlı sürüm bakım takımları tarafından kararlı depo politikası ve ilgili depolara uygunlukları açısından gözden geçirilirler ve gerekli değişikliklerle kararlı kaynak depolara alınır.

contrib-devel kaynak deposundaki paketler

contrib deposunda her geliştirici kendi sorumluğundaki paketlerin güncellemelerini kararlı kaynak depolara kendisi almaktadır. Bu güncellemelerin ilgili kararlı depoya teknik gereklilikler ve depo politikasına uygun şekilde alınmaları paket geliştiricisinin sorumluluğundadır.

İkili paket oluşturma ve ikili paket depoları

Kararlı sürüm bakım takımları tarafından kararlı kaynak depolara alınan yeni paketler ve güncellemeler derleme çiftlikleri tarafından inşa edilerek ikili paketler oluşturulur. Derleme çiftliğinin başladığı / tamamladığı işler ve çıkabilecek sorunlar paketler-commits e-posta listesinde duyurulur - sorunlu paketler ayrıca geliştiricisine de e-posta ile bildirilir.

Derleme çiftliği tarafından oluşturulan bu ikili paketler yine iki ayrı süreç ile kullanıcı ve geliştiricilere ulaştırılır :

contrib-* kararlı depolarındaki paketler

bu paketler derleme çiftliği tarafından inşa edildiklerinde doğrudan ilgili contrib-* (contrib-2008, contrib-2007) ikili deposuna girerler.

pardus-* kararlı depolarındaki paketler

bu paketler derleme çiftliği tarafından inşa edildiklerinde öncelikle ilgili kararlı deponun test ikili deposuna alınırlar (pardus-2008-test, pardus-2007-test)

İkili test depoları ve test süreci

Pardus test depoları geliştiricilerin ve test ekibinin paket güncellemelerini test etmesi için oluşturulmuş ikili depolardır. Herhangi bir kararlı sürümün test deposunda o sürümün o an için en güncel paketleri bulunur ve geliştiriciler ile test ekibi tarafından devamlı test edilir. Depo sorumlusu veya test ekibi sorumlusu belirli aralıklarla bu güncellemelerin listesini yayınlar ve geliştiricilerin bu güncellemelerin doğru çalıştığını / sorunsuz olduğunu onaylamalarını ister [ACK/NACK süreci]. Bu süreçte önemli nokta tüm geliştirici ve test ekibinin fark ettiği sorunları bildirerek ilgili paketlerin onay almasını engelleyebilmesidir. Paket geliştiricisinin fark edemediği sorunlara sahip paketlerin kararlı depoya girmesinin engellenmesi için bu süreç kritiktir. Bu aşamada onay alan paketler son bir depo kararlığı testinden sonra kararlı depoya alınır.

Güvenlik güncellemeleri - özel olarak test edilmesi gereken ve/ya görece önemsiz güvenlik güncellemeleri dışında - bu sürecin dışında tutulur, inşa edilir edilmez kararlı depoya alınır. Yine kritik hata çözen bazı güncellemelerin test süreci beklenemeden depoya alınması gerekebilir - böyle durumlarda paket geliştiricisi güncellemenin depoya alınması sırasında güncellemenin bu özelliğini belirten bir notu da merge isteğine ekler.

İkili kararlı depolar

Tüm bu sürecin sonunda kararlı depoya alınan yeni paketler ve güncellemeler kullanıcılar tarafından kurulabilir hale gelir. Kararlı depoya giren güvenlik güncellemeleri için güvenlik ekibi tarafından güvenlik bildirileri [PLSA **] hazırlanır ve yayınlanır.


* : Yakında pardus-devel deposunda da bir derleme çiftliği çalıştırması planlanmaktadır.
** : PLSA – Pardus Linux Security Advisory. Güvenlik bildirileri http://security.pardus.org.tr/ adresinden standart WEB araçları ile, http://security.pardus.org.tr/en/rss/ adresinden RSS ile, pardus-security@pardus.org.tr e-posta listesinden e-posta ile izlenebilir.