Homebrew 6.0.0 रिलीज़
(brew.sh)- सभी metadata को एक single download में बांधने वाली internal JSON API अब default हो गई है, जिससे updates तेज़ होते हैं और network communication कम होता है
- पहले की
HOMEBREW_USE_INTERNAL_APIopt-in variable को deprecated किया गया है
- पहले की
- Linux पर Bubblewrap sandbox लागू किया गया है, जिससे build·test·postinstall चरणों को macOS की तरह isolate करके चलाया जाता है
- user survey के आधार पर ask mode अब developers के लिए default बन गया है, और
brew install·brew upgradeके समय dependency summary और confirmation prompt दिखता है brew bundleमें parallel formula installation अब default रूप से अपने-आप चलती है, साथ ही npm·krew extensions और Windowswingetsupport जोड़ा गया हैbrew leavesमें लगभग 30% speedup समेत startup और upgrade के पूरे flow में performance improvements- macOS 27 (Golden Gate) के लिए शुरुआती support जोड़ा गया
- Intel support बंद होने के अनुसार, सितंबर 2026 में macOS Intel
x86_64को Tier 3 में रखा जाएगा, और सितंबर 2027 में पूरी तरह unsupported हो जाएगा
- Intel support बंद होने के अनुसार, सितंबर 2026 में macOS Intel
- 3 security advisories सार्वजनिक किए गए और ठीक किए गए हैं (HTTPS→HTTP redirect bypass,
.pkgpostinstall root code execution,/var/tmpplist ownership hijack) npxजैसे नए commandbrew execऔर installed packages की vulnerability जांचने वालाbrew vulnsसमेत नए commands जोड़े गए- common postinstall और flight behavior को literal DSL data के रूप में JSON API में expose करने वाला install steps framework पेश किया गया है, जिससे simple tasks के लिए Ruby files को download और evaluate करने की ज़रूरत नहीं रहती
- npm·PyPI जैसे high-risk ecosystems पर download cooldown लागू किया गया है ताकि upstream supply-side security risks कम किए जा सकें
2 टिप्पणियां
Intel Mac तक सपोर्ट जारी रखने के लिए संसाधन भी कम हैं, और GitHub Actions भी अब इमेज उपलब्ध कराने वाला नहीं है, इसलिए Homebrew के पास भी इसके मुताबिक आगे बढ़ने के अलावा कोई विकल्प नहीं है.
Hacker News की राय
मैं GitHub का @bfontaine हूँ। मैंने 2014~2016 के आसपास Homebrew मेंटेनेंस में मदद की थी, और Mike को 16 साल से भी ज़्यादा समय तक इसे मेंटेन करते हुए और अब भी नए फीचर जारी करते देखना हमेशा हैरान करता है
ज़्यादातर Linux package manager यूज़र द्वारा इंस्टॉल किए गए पैकेज और सिस्टम पैकेज को अलग नहीं कर पाते, इसलिए वर्कस्टेशन को साफ-सुथरा रखना लगभग असंभव हो जाता है और यह समझना मुश्किल होता है कि क्या हटाया जा सकता है
ऊपर से, native package manager अक्सर Homebrew की तुलना में अपडेट में धीमे होते हैं, इसलिए कई बार सिर्फ पुराने पैकेज ही मिलते हैं
प्रयोग के तौर पर मैंने Homebrew+pipx+npm से https://mise.jdx.dev/ पर पूरा OS-स्तरीय डेवलपमेंट एनवायरनमेंट शिफ्ट किया, और यह सच में बहुत अच्छी तरह काम कर रहा है
कई टूल सीधे GitHub releases या संबंधित package manager (uv, pnpm, go get आदि) से इंस्टॉल हो जाते हैं, इसलिए repackaging के लिए glue code भी नहीं चाहिए और version lag भी नहीं होता
आप मनचाहा version या एक साथ कई version इंस्टॉल कर सकते हैं, और हर working folder या environment के हिसाब से active version को dynamically बदल सकते हैं
दिलचस्प बात यह है कि Mise dependencies को सपोर्ट नहीं करता, लेकिन ज़्यादातर मामलों में यह समस्या नहीं बनी। pnpm/uv इसे संभाल लेते हैं, या फिर static binary होने की वजह से चीज़ें वैसे ही चल जाती हैं
पहले मैंने एक Python app को Homebrew के लिए package करते समय 50 dependencies को
resourcesके रूप में लाया था, सबको source से build किया या मैन्युअली जाँचा कि वे Homebrew में हैं या नहीं, 5 भाषाओं के build toolchain को dependency के रूप में घोषित किया, हर अपडेट पर CI के लिए 1 घंटे से ज़्यादा इंतज़ार किया, और फिर upstream update की वजह से “build-time dependency loop” बन गया जिसे Homebrew में सुलझाया ही नहीं जा सकाइसलिए मैं पूरी तरह समझता हूँ कि Mise ने “आसान रास्ता” क्यों चुना और language-specific package manager पर सीधे निर्भर क्यों किया
Brewfile में जो चीज़ मैं replace नहीं कर पाया वह सिर्फ Colima से बात करने के लिए ज़रूरी Docker CLI थी, और cask के लिए अब भी Homebrew इस्तेमाल करता हूँ। डेवलपमेंट एनवायरनमेंट के साथ प्रयोग करने की सलाह दूँगा। आजकल बहुत से शानदार नए टूल हैं
जो लोग Homebrew पैकेज के लिए Mise इस्तेमाल करना चाहते हैं, उनके लिए https://github.com/kennyg/mise-zerobrew है
ज़्यादातर प्रोजेक्ट वैसे भी Docker का इस्तेमाल करते हैं, और local PHP उन कामों के लिए रहता है जिनमें Docker की ज़रूरत नहीं होती, जैसे static analysis
मेरे पास कुछ प्रोजेक्ट Nix भी इस्तेमाल करते हैं, और Nix बाकी सबको छोटा साबित कर देता है, लेकिन पूरा user experience git से भी ज़्यादा hostile है
यह मेरी skill की कमी भी हो सकती है, लेकिन Mise में बहुत ज़्यादा पैकेज ऐसे थे जिनमें दिक्कतें आईं
मैंने इसे system-wide tools के लिए भी आज़माया, लेकिन Helix, NeoVim, RipGrep जैसे टूल, जिनमें लगभग latest होना काफ़ी है और exact version की चिंता नहीं होती, उनके लिए यह उतना उपयुक्त नहीं लगा
Mise में dependencies automatic नहीं हैं; सब कुछ मैन्युअली define करना पड़ता है। इसका मकसद parallel install की वजह से आने वाली ordering problems से बचना है। उदाहरण के लिए, अगर आप
pipx:blackइस्तेमाल करते हैं, तो Python installation पूरी होने तक इंतज़ार करना होगा। यही टूल काdependsoption हैयह जानबूझकर किया गया design है। Mise को Homebrew या Nix जैसी complete bootstrap solution के रूप में नहीं, बल्कि मौजूदा सिस्टम के ऊपर बैठने वाली overlay के रूप में डिज़ाइन किया गया है
इसलिए आप Python को Brew से और black को Mise से मैनेज करें, तब भी यह लगभग बिना अलग configuration के काम करता है। मेरे हिसाब से यह design decision काफ़ी सफल रहा है। यह कमी जैसा लग सकता है, लेकिन शायद यही सबसे बड़ा कारण है कि यूज़र Mise को आसान महसूस करते हैं
Homebrew immutable Linux distributions पर environment को तेज़ी से bootstrap करने का शानदार तरीका रहा है
यूज़र बहुत ज़्यादा नहीं हैं, लेकिन https://formulae.brew.sh/analytics/os-version/365d/ के अनुसार Universal Blue के Bazzite (1.28%), Bluefin (0.49%), Aurora (0.28%) जैसे operating system डिफ़ॉल्ट रूप से Homebrew को bundled करके देते हैं
संबंधित repository: https://github.com/ublue-os/brew
non-root यूज़र के लिए आम स्थिति यह होना कि “XY इंस्टॉल नहीं कर सकते, लेकिन source से build करना चाहें तो कर लें” अपने आप में हास्यास्पद है
Homebrew, Mise, Nix अभी उस खाली जगह को भर रहे हैं। Flatpak ज़्यादा GUI apps के करीब है, और Snap… खैर, मौजूद तो है
सबसे पहले जो तीन चीज़ें इंस्टॉल करता हूँ वे हैं Sublime Text, Homebrew, और latest Bash। Zsh पर स्विच करने का कोई इरादा नहीं है
अच्छे टूल कंप्यूटिंग को आनंददायक बना देते हैं
मैं हाल ही में Nix से Homebrew पर वापस आया हूँ, और इसके तीन बड़े कारण हैं
लगता है कि जिन पैकेजों का यह समर्थन करता है, उनके मामले में Brew, Nix से बेहतर है। Nix में कुछ पैकेज शायद अच्छी तरह मेंटेन नहीं किए जाते
Mac support भी बेहतर है। कुछ Nix पैकेजों में macOS पर functionality बंद होती है, शायद इसलिए क्योंकि उस पैकेज के मेंटेनर के पास testing के लिए Mac नहीं है
user experience भी बेहतर है
बेशक, Nix environment की reproducibility और खास पैकेजों के साथ flake आसानी से बनाने की क्षमता की कमी महसूस होती है, लेकिन कुल मिलाकर Brew मुझे वापस ले आया। फिर भी मुझे Nix अब भी पसंद है, और कंपनी में भी Nix इस्तेमाल करते हैं
कंपनी में Nix का इस्तेमाल कहाँ करते हैं, यह जानने की जिज्ञासा है। कुछ जगहें ऐसी लगती हैं जहाँ Nix सही बैठता है, लेकिन उसे ठीक-ठीक पहचानना मुश्किल है
लेकिन आम तौर पर बस
defaultsया किसी बीच के tool को चलाने तक बात सीमित रहीआखिरकार मैंने Brew को ही रखा, और
bash_profileमें एक idempotentsetupmac()function लिख लिया। मैं Bash 5 इस्तेमाल करता हूँ, और ChatGPT को अच्छेdefaultscommands पता थे, इसलिए उससे मदद लीdotfiles में रखे Brewfile के साथ इसने नए account या Mac setup की लगभग सारी दिक्कतें हल कर दीं, इसलिए ऐसे भारी-भरकम tools की ज़रूरत नहीं पड़ी
Homebrew कोई कर्मचारियों वाला प्रोजेक्ट नहीं, बल्कि पूरी तरह volunteers द्वारा चलाया जाने वाला non-profit project है
continuous integration, आगे के सुधारों के लिए ज़रूरी software, hardware, और hosting costs उठाने के लिए फंड चाहिए
उनका कहना है कि हर donation बेहतर Homebrew बनाने में ही खर्च होता है, इसलिए GitHub Sponsors, OpenCollective, और Patreon के ज़रिए recurring support पर विचार किया जा सकता है
मैंने उन open source projects को काफी donate किया है जिनसे मुझे फायदा मिला, लेकिन Homebrew के बारे में कभी गंभीरता से नहीं सोचा था, इसलिए अब support करना चाहिए
सोच रहा हूँ कि क्या Homebrew में किसी तरह का cooldown mechanism जोड़ा नहीं जा सकता
अपने मशीन पर नया code जल्दी deploy करने के लिए मैं सिर्फ Apple और browsers पर भरोसा करना चाहता हूँ। browsers ऐसा इसलिए, क्योंकि वे किसी भी चीज़ से ज़्यादा untrusted input प्रोसेस करते हैं
इसके अलावा vscode और extensions, npm, homebrew, और auto-updating apps के लिए मैं कुछ दिन इंतज़ार करना पसंद करता हूँ
कुछ अपवादस्वरूप 0-day मामलों में cooldown bypass ज़रूरी हो सकता है, लेकिन अभी भी user
brew upgradeचलाने तक 0-day के प्रति vulnerable ही रहता हैसाथ ही NPM/PyPI/RubyGems से लाकर package की जाने वाली चीज़ों में, जो ऐसे attack का target बन सकती हैं, उनके लिए packaging के समय और नई version update PR बनाते समय पहले से cooldown लागू किया जाता है
--minimum-release-ageयाminimumReleaseAgeजैसे features की हो रही है, ताकि supply chain attack की vulnerability कम की जा सकेऐसे हमले अक्सर compromise होने के कुछ दिनों के भीतर पकड़ लिए जाते हैं
Bun का उदाहरण: https://bun.com/docs/pm/cli/install#minimum-release-age
brew set-channel stable/edgeजैसा कुछइस हफ्ते Elixir 1.20 की घोषणा के बाद मेरे पास उसे कुछ मिनटों के लिए आज़माने का ही समय था, और Brew पीछे रह गया था, जिससे झुंझलाहट हुई
erl और elixir को दूसरे तरीकों से भी install किया जा सकता है, और निजी तौर पर मैं उनका अपना toolchain पसंद करता हूँ, लेकिन उस समय इतना करना ठीक नहीं लगा
Brew में कुछ recipes के लिए source options हैं या हुआ करते थे, और आँखें थोड़ा मींचकर देखें तो वह भी मूल रूप से एक समाधान ही है
अपवाद तब हैं जब author खुद Homebrew core में PR डालता है या अपना Tap प्रकाशित करता है। Arch इसमें कैसे करता है, यह जानना रोचक होगा
Homebrew को संभव बनाने वाले सभी लोगों के लिए तालियाँ। प्रोजेक्ट को support करने पर विचार किया जा सकता है: https://opencollective.com/homebrew
Intel support समाप्त करना कुछ आक्रामक-सा लगता है
Mac को server की तरह इस्तेमाल करने वाले उत्साही लोग लगभग हमेशा पुराने machines इस्तेमाल करते हैं, और उनमें ज़्यादातर Intel हैं। उन्हें Apple से भी 1 साल पहले support खोना पड़ेगा
मैं समझता हूँ कि Intel support बनाए रखना कठिन काम है और यह चुनाव का मामला है, लेकिन मेरा मानना है कि Homebrew को Intel support जितना संभव हो उतने लंबे समय तक बनाए रखने का रास्ता खोजना चाहिए
पुराने Mac को server की तरह इस्तेमाल करने वाले लोग शायद rounding error के स्तर से भी आगे नहीं जाते होंगे
अगर Intel support चाहिए, तो MacPorts अब भी Leopard तक चलता है
--no-quarantineflag का support भी हटा दिया गया हैइन दिनों मैं सिर्फ कुछ cask के लिए Homebrew इस्तेमाल करता हूँ और जहाँ तक हो सके उससे बचने की कोशिश करता हूँ। CLI tools के लिए Nix, Home-Manager, और Nix-Darwin इस्तेमाल करता हूँ
मैं बहुत ज़्यादा forced upgrades झेल चुका हूँ जिन्हें रोका नहीं जा सकता, इसलिए मैंने व्यक्तिगत रूप से Homebrew इस्तेमाल करना बंद कर दिया
अब मैं Mise और MacPorts का कॉम्बिनेशन इस्तेमाल करता हूँ ताकि बिना चेतावनी के टूट-फूट और जबरन पुराना कर दिए जाने से बच सकूँ
इसके अलावा, Mise में मनचाहे नए version पर जाया जा सकता है, लेकिन Homebrew में Tap कब upgrade करेगा इसका इंतज़ार करना पड़ता है।
llama.cppTap तो हर 10 releases में एक बार skip भी कर देता हैजो लोग अभी भी Homebrew इस्तेमाल करते हैं, उनके लिए केवल ज़रूरत पड़ने पर upgrade करने और upgrade से पहले उसे user को दिखाने के लिए बहुत काम किया गया है, और वह इस release में भी शामिल है
development tools install करने के लिए मैं कई सालों से MacPorts इस्तेमाल कर रहा हूँ, और यह कहीं ज़्यादा consistent है, साथ ही Python का नया major version यूँ ही अचानक आकर चौंकाता नहीं है
Homebrew का इस्तेमाल मैं सिर्फ Firefox, Slack, Spotify जैसे applications install करने के लिए करता हूँ, जो MacPorts में नहीं हैं
बेशक, मैं वर्षों से Python के लिए uv और nodejs के लिए pnpm पर जाने की कोशिश कर रहा हूँ, इसलिए अब यह मेरे लिए बहुत बड़ी समस्या न भी हो सकती है
मेरा रोज़ इस्तेमाल होने वाला iMac अब Tier-3 “दफ़ा हो जाओ” bucket में आ गया है
जितने कम समय तक मैं इसे इस्तेमाल कर सका, उस दौरान मुझे Homebrew सच में बहुत पसंद था, लेकिन उसे चलते रहने के लिए hardware upgrade की treadmill पर चढ़ने का मेरा कोई इरादा नहीं है