9 puan yazan GN⁺ 2025-09-18 | Henüz yorum yok. | WhatsApp'ta paylaş
  • Homebrew, macOS'ta CLI araçlarını kolayca kurup yönetmeyi sağlayan bir paket yöneticisidir; geliştiricilerin sık kullandığı araçlarla sistem ortamını verimli biçimde yapılandırmasına yardımcı olur
  • Bu rehber, Homebrew kullanarak kişisel CLI script'lerini dağıtma sürecini açıklar ve GitHub entegrasyonu ile otomasyon iş akışları sayesinde bakımı nasıl sadeleştirebileceğini gösterir
  • Dağıtım süreci CLI oluşturma → GitHub release → Tap oluşturma → Formula yazma ve güncelleme şeklinde ilerler; sonunda yalnızca brew tap ve brew install komutlarıyla kurulum yapılabilir
  • Homebrew'un terminolojisini ve en iyi uygulamalarını anlamak, yeniden üretilebilirliği ve tedarik zinciri güvenliğini güçlendiren sağlam bir dağıtım süreci sağlar
  • GitHub Actions iş akışlarıyla bu süreç otomatikleştirilebilir; bir kez kurulduğunda sonraki CLI dağıtımları da çok daha kolay hale gelir

Arka plan ve motivasyon

  • Homebrew, CLI araçları kurulurken tercih edilen paket yöneticilerinden biridir ve birçok geliştirici tarafından kullanılır
  • Ancak kendi geliştirdiğiniz CLI'yi çoğu zaman npm veya RubyGem üzerinden dağıtırsınız; bu yüzden Homebrew ile dağıtım süreci ilk başta yabancı gelebilir
  • Homebrew'un resmî core deposu, ekip politikasına göre kişisel veya özel yapım araçların eklenmesine sıcak bakmaz; bu nedenle genel geliştiriciler ayrı bir tap ve formula ile dağıtım yapar
  • Bu rehber, basit bir Ruby tabanlı CLI dağıtım deneyimine dayanarak anlatılmıştır

Terimler

  • Homebrew, bira üretimi temasını yansıtan kendine özgü terimler kullanır; bunları anlamak sistem yapısını kavramayı kolaylaştırır
    • Formula, paket tanımı dosyasıdır; kaynak kodu veya binary'leri kurmak için gereken talimatları içerir
    • Tap, Formula'ların bulunduğu bir Git deposudur; kullanıcı veya organizasyon bazında özel paketler burada yönetilir
    • Cask, GUI uygulamaları veya büyük binary'leri kurmak için kullanılan manifest'tir; Formula'ya benzer ama önceden derlenmiş dosyaları işler
    • Bottle, kaynaktan derlemek yerine önceden derlenmiş binary paketin kopyalanması yaklaşımıdır; böylece kurulum hızlanır
    • Cellar, kurulu Formula'ların bulunduğu dizindir; örneğin /opt/homebrew/Cellar yolunu kullanır
    • Keg, belirli bir Formula'nın kurulum örneği dizinidir ve Cellar içinde sürüm bazında yer alır

Genel bakış

  • Homebrew core deposu niş veya kişisel gönderimleri kabul etmediği için, kullanıcıların CLI'lerini dağıtmak üzere ayrı bir tap deposu oluşturması gerekir
    • 1. CLI'yi oluşturup GitHub'a yükleyin ve etiketli release yayınlayın
    • 2. brew tap-new ile Tap oluşturup GitHub'a push edin
    • 3. brew create ile Formula yazın (tarball URL'si ve SHA256 dahil)
    • 4. Her yeni sürümde Formula'yı güncelleyerek kullanıcıların brew install komutuyla kolayca kurabilmesini sağlayın
  • Dağıtım tamamlandıktan sonra kullanıcılar CLI'yi iki komutla kurabilir: brew tap your_github_handle/tap ve brew install your_cool_cli
    • Bu rehber CLI geliştirme kısmını atlar; tap oluşturma, Formula üretme ve güncelleme sürecine odaklanır
    • Örnek olarak, iMessage veritabanından etkileşimli bir web arşivi üreten imsg CLI'si kullanılır

Tap oluşturma

  • Homebrew'un tap oluşturma rehberini izleyin ve kendi GitHub kullanıcı adınız veya organizasyon adınızla uyarlayın
    • İleride tüm CLI araçlarını tek bir tap altında toplamak için homebrew-tap adı önerilir; homebrew öneki CLI tarafından özel işlenir, tap son eki ise yerleşik bir gelenektir
  • Tap oluşturma komutunu çalıştırın: brew tap-new searlsco/homebrew-tap
    • Bu komut /opt/homebrew/Library/Taps/searlsco/homebrew-tap altında iskelet yapıyı oluşturur
    • GitHub'da karşılık gelen depoyu oluşturun ve üretilen içeriği gönderin: cd /opt/homebrew/Library/Taps/searlsco/homebrew-tap, git remote add origin git@github.com:searlsco/homebrew-tap.git, git push -u origin main
  • Tap'in sahibi olduktan sonra diğer kullanıcılar brew tap searlsco/tap komutuyla bu depoyu klonlayıp /opt/homebrew/Library/Taps altına yerleştirebilir
    • Başlangıçta içinde faydalı bir şey olmasa da temel davranış doğrulanabilir

Formula oluşturma

  • Homebrew, GitHub depolarını doğrudan referans alabilse de sürümlenmiş tarball ve checksum kullanılmasını önerir; bu da yeniden üretilebilirliği ve açık kaynak tedarik zinciri güvenliğini artırır
  • Formula oluşturma komutu: brew create https://github.com/searlsco/imsg/archive/refs/tags/v0.0.5.tar.gz --tap searlsco/homebrew-tap --set-name imsg --ruby
    • --tap bayrağı özel tap'i belirtir ve Formula'yı /opt/homebrew/Library/Taps/searlsco/homebrew-tap/Formula içine yerleştirir
    • --set-name imsg, Formula adını açıkça belirler; çakışmaları önlemek için benzersiz seçilmelidir (ör. mevcut TLDR veya standard CLI ile çakışmamaya dikkat edin)
    • --ruby, Ruby CLI'leri için bir şablon ön ayarıdır; özelleştirmeyi kolaylaştıran seçeneklerden biridir
  • Oluşturulan Formula başlangıçta çalışmayabilir; bunu düzeltmek için LLM'den yararlanabilirsiniz: brew install --verbose imsg çalıştırın, hatayı ChatGPT'ye verin ve Formula'yı yinelemeli olarak güncelleyin
    • Son Formula/imsg.rb dosyası, Ruby CLI dağıtımı için başlangıç noktası olarak kopyalanabilir
    • Dile özgü paket yöneticileri yerine Homebrew üzerinden dağıtım yapmak, uygulama dilini değiştirseniz bile kullanıcı yükseltmelerini daha sorunsuz hale getirir

Formula için önemli noktalar

  • Tüm Formula'lar Ruby ile yazılır; çünkü JavaScript ve yapay zeka öncesinde popüler geliştirici araçlarının çoğu Ruby tabanlıydı
    • head metodu ile Git deposu belirtilebilir, ancak pratik etkisi belirsizdir
    • livecheck eklemek değerlidir; Formula sürüm güncellemelerini kolaylaştırır
    • Binary çalıştırma testi, yardım çıktısını doğrulayan basit bir testle uygulanabilir; oluşturulan yorumların gözünüzü korkutmasına izin vermeyin
    • Stil hatalarını kontrol etmek için brew style searlsco/tap komutunu kullanın
    • --ruby şablonunun varsayılan uses_from_macos "ruby" ayarı 2.6.10 sürümünü kullanır (COVID öncesi çıkmış, 3 yıl önce EOL olmuş bir sürüm); bu nedenle depends_on "ruby@3" ile güncel ruby Formula bağımlılığı önerilir
  • Formula istediğiniz hale geldiğinde git push ile canlıya alınabilir; kullanıcılar da brew tap searlsco/tap ve brew install imsg ile kurabilir

Her CLI release'i için Formula güncelleme

  • Formula'nın üst kısmındaki url ve sha256 değerlerini her release'te elle güncellemek yorucudur; etiket push etmek veya GitHub release oluşturmak bile ayrı bir yük olabilir
    • Homebrew'un bump-formula-pr komutu veya GitHub Actions ile PR üretmek mümkün olsa da fork ve PR süreci gereksiz derecede karmaşık olabilir
    • Tap sahibiyseniz, doğrudan main branch'e commit eden daha basit bir yaklaşım tercih edilebilir
  • Bunu önlemek için Formula deposuna bir GitHub workflow'u eklemeniz önerilir; böylece release olduğunda tap otomatik güncellenir
    • Workflow örneğini kopyalayıp kullanabilirsiniz
    • Gerekli ayar: GitHub kişisel erişim token'ı (PAT) oluştururken homebrew-tap deposu için ContentWrite yetkisi verin ve bunu Formula deposunun Secrets bölümünde HOMEBREW_TAP_TOKEN adıyla saklayın
    • Ortam değişkenleriyle tap ve Formula'yı belirtin (ör. 13-15. satırlar)
    • GitHub bot hesabı güncellemesi önerilir: GH_EMAIL: 41898282+github-actions[bot]@users.noreply.github.com, GH_NAME: github-actions[bot]
  • Release oluşturup git push --tags çalıştırdıktan birkaç saniye sonra otomatik güncelleme gerçekleşir; kullanıcılar brew update ve brew upgrade imsg ile yükseltebilir

En iyi kısmı

  • Bu süreç karmaşık görünse de, tap kurulumu ve tek bir Formula örneği tamamlandıktan sonra ek CLI dağıtımları neredeyse önemsiz bir iş haline gelir
    • Birkaç dakika içinde yeni bir Formula yayımlayabilmek oldukça pratiktir
  • Homebrew'un resmî süreci biraz karmaşık olsa da otomasyonla ciddi biçimde kolaylaşır
    • Her araçta release ile dağıtım arasındaki sürtünmeyi azaltır ve farklı dillerde yazılmış CLI'lere kadar genişleyebilir
  • Gerçekte bir Formula daha yayımlanır mı bilinmez, ama bu seçeneğin açık olması bile tatmin edicidir

Henüz yorum yok.

Henüz yorum yok.