İçeriğe geç

Mağazaya yayınlama

Modüller ve temalar mağazaya imzalı bir katalog ile yayınlanır. Bu sayfa hem yayıncının hem de siteyi yöneten kişinin ne olduğunu bilmesi için iki tarafı da anlatır: paket nasıl hazırlanır ve kullanıcının sitesinde "Kur"a basılınca neler olur.

Katalog ve paketler

Sunucuda üç şey durur:

Dosya Anlamı
extensions/index.json Tüm modül ve temaların kataloğu: ad, başlık, özet, kategori, ücretsiz mi, her sürümün zip adresi ve SHA-256 özeti, uyumluluk aralığı
extensions/index.sig Kataloğun Ed25519 imzası
modules/<Ad>/<Ad>-<sürüm>.zip, themes/<Ad>/… Paketler

Çekirdek kataloğu indirdiğinde önce imzayı genel anahtarla doğrular. İmzası geçersiz ya da süresi dolmuş bir katalog hiç gösterilmez; mağaza boş görünür ve kurulum yapılamaz.

Yayın akışı

  1. module.json içindeki version değerini yükseltin. Sürümü yükseltmezseniz mağaza yeni bir sürüm görmez ve sitelerde "güncelle" düğmesi çıkmaz.
  2. Modül yeni bir çekirdek özelliğine dayanıyorsa core_version alt sınırını o çekirdek sürümüne çekin (örn. ">=2.2.53 <3").
  3. Katalog metnini güncelleyin (eklenti-katalogu.json): başlık, özet, kategori, özellik listesi, free (panelden kurulabilir mi), bundled (kurulum paketinin içinde mi gelir).
  4. Çekirdeğe ihtiyaç duyuyorsa önce çekirdeği yayınlayın.
  5. bash yayinla-eklenti.sh hepsi Ad paketi üretir, indeksi imzalar ve yükler.

Betiğin modları:

Mod Ne yapar
derle [Ad …] Zip'leri ve imzalı indeksi yerelde üretir; ad verilmezse tüm modül ve temalar
yukle Yalnızca değişen ya da sunucuda olmayan paketleri yükler; indeksi en son yükler
hepsi [Ad …] derle + yukle
imzala Yalnızca indeks imzasını tazeler

İndeksin en son yüklenmesi önemlidir: indeks yeni sürümü gösterdiği anda paket zaten yerinde olmalıdır. Yoksa kullanıcı, olmayan bir dosyayı indirmeye çalışırdı.

Uyumluluk denetimi

Her katalog sürümü, modülün core_version aralığını ve requires bağımlılıklarını taşır. İki yerde denetlenir:

  • Kurarken: kullanıcının çekirdeği aralığın dışındaysa kurulum "Bu kurulumla uyumlu değil" diyerek durur; neden listelenir.
  • Çekirdek güncellerken: güncelleme, kurulu bir modülün aralığını bozacaksa engellenir.

Bu yüzden sıra her zaman şudur: önce çekirdek, sonra çekirdeğe dayanan eklenti. Notlar modülü bunun örneğidir: studio.body.end hook'u çekirdek 2.2.53 ile geldi, modül >=2.2.53 <3 ister ve çekirdekten sonra yayınlandı.

Kullanıcı "Kur"a basınca

Çekirdeğin ExtensionInstaller sınıfı şunları sırayla yapar:

  1. Ad doğrulanır ([A-Za-z][A-Za-z0-9_-]*) ve katalogda aranır. Katalogda olmayan ya da ücretsiz işaretli olmayan eklenti panelden kurulmaz.
  2. Uyumluluk denetlenir.
  3. Zip adresi sunucunun kendi alanı altında olmalıdır; .. içeren ya da başka bir yere işaret eden adres reddedilir.
  4. Paket indirilir (en çok 32 MB, 120 saniye zaman aşımı).
  5. İndirilenin SHA-256 özeti, imzalı katalogdaki özetle karşılaştırılır. Uyuşmazsa kurulum durur: paket, imzalı kataloğun anlattığı şey değildir.
  6. Zip güvenli biçimde açılır ve içeriği yan yana bir klasöre hazırlanır.
  7. Mevcut dosyaların yedeği alınır; yeni dosyalar bir seferde yerine konur. Yeni sürümün artık göndermediği eski dosyalar silinir, modül klasöründe eski kalıntı kalmaz.
  8. Modül etkinse ve bu bir güncellemeyse, aynı korumalı akış çalışır: bakım kilidi, veritabanı anlık görüntüsü, modülün migration'ları. Hata olursa dosyalar ve veritabanı birlikte geri alınır.
  9. Önbellek temizlenir.

Etkin olmayan bir modülün ilk kurulumu yalnızca dosya indirir; veritabanı değişikliği, modülü etkinleştirdiğiniz anda yapılır.

Yayın öncesi kontrol listesi

  • module.json sürümü yükseltildi.
  • core_version doğru; yeni çekirdek özelliği gerekiyorsa çekirdek yayınlandı.
  • Yeni migration'lar yeni numaralı ve tekrar çalıştırılabilir (Veritabanı ve migration).
  • Katalog metni güncel.
  • Yayın sonrası "sunucudaki indeks imzalı ve geçerli" doğrulaması geçti.
  • Bir test sitesinde temiz kurulum ve bir önceki sürümden güncelleme denendi.

İmza

İmza anahtarı yalnızca yayıncıdadır ve asla paylaşılmaz; genel anahtar çekirdeğe gömülüdür. Katalog 45 gün geçerlidir. Yeni yayın çıkmayacaksa süre dolmadan imzala modunu çalıştırın; aksi halde tüm siteler mağazayı boş görür.

Sonraki: Kontrol listesi.

Son güncelleme: 13.10.2026