macOS बैकग्राउंड सर्विस के रूप में किसी भिन्न इंस्टॉल किए गए Homebrew formula वर्शन को चलाने के लिए, वर्तमान formula की सर्विस को रोकें, वर्शन वाले formula को उसके स्वयं के नाम से शुरू करें, फिर पुष्टि करें कि कौन सी सर्विस चल रही है। उदाहरण के लिए, यदि postgresql@16 और postgresql@17 दोनों इंस्टॉल हैं, तो brew services stop postgresql@16 का उपयोग करें और उसके बाद brew services start postgresql@17 चलाएं। Homebrew का सर्विस मैनेजर macOS launchd का उपयोग करता है; बिना sudo के, यह आपके लॉगिन पर चलने के लिए सर्विसों को पंजीकृत करता है। Homebrew का brew(1) मैनुअल
1. इंस्टॉल किए गए formula नाम खोजें
क्या इंस्टॉल है और formula नामों की स्पेलिंग कैसे लिखी गई है, यह जांचने के लिए Homebrew के अपने रिकॉर्ड का उपयोग करें:
brew list --versions
brew info postgresql@16
brew info postgresql@17
उदाहरणों को अपनी सर्विस के formula नामों से बदलें। एक वर्शन वाला formula एक अलग Homebrew formula होता है, जिसे आमतौर पर @ प्रत्यय (suffix) के साथ लिखा जाता है; यह किसी एक formula के मनमाने ऐतिहासिक वर्शन का चयन करने का कमांड नहीं है। उपलब्ध वर्शन वाले formulae इस बात पर निर्भर करते हैं कि Homebrew वर्तमान में क्या प्रदान करता है। Homebrew वर्शन वाले formulae को एक सीमित सेट के रूप में भी वर्णित करता है, और समय के साथ कुछ को हटाया भी जा सकता है। Homebrew Formulae Versions
स्विच करने से पहले, प्रत्येक formula के सर्विस विवरण और किसी भी माइग्रेशन संबंधी नोट्स के लिए उसके brew info आउटपुट की जांच करें। एक नया formula नाम इस बात की गारंटी नहीं देता है कि सर्विस पुराने वर्शन की डेटा डायरेक्टरी या कॉन्फ़िगरेशन का पुन: उपयोग कर सकती है। डेटाबेस और सर्वर सॉफ़्टवेयर में एप्लिकेशन-विशिष्ट अपग्रेड या डाउनग्रेड आवश्यकताएं हो सकती हैं; मौजूदा डेटा के विरुद्ध दूसरा वर्शन शुरू करने से पहले उस सॉफ़्टवेयर की प्रलेखित माइग्रेशन प्रक्रिया का पालन करें।
2. एक formula की सर्विस को रोकें और दूसरी को शुरू करें
आपके लॉगिन पर शुरू होने वाली सर्विस के लिए बिना sudo के सर्विस कमांड चलाएं:
brew services stop postgresql@16
brew services start postgresql@17
brew services list
PostgreSQL उदाहरणों के स्थान पर वास्तविक इंस्टॉल किए गए formula टोकन का उपयोग करें। brew services stop और start formula का नाम लेते हैं, इसलिए यह लक्षित formula से जुड़ी सर्विस का चयन करता है। list कमांड आपको बाद में Homebrew की रिपोर्ट की गई सर्विस स्थिति का निरीक्षण करने की अनुमति देता है। मैनुअल launchd के माध्यम से सर्विस प्रबंधन का विवरण देता है और नोट करता है कि गैर-sudo सेटअप ~/Library/LaunchAgents का उपयोग करता है, इसलिए यह वर्तमान उपयोगकर्ता के लॉगिन तक सीमित होता है। Homebrew का brew(1) मैनुअल
यदि लक्षित वर्शन इंस्टॉल है लेकिन उसकी सर्विस नहीं चल रही है, तो इसे सीधे शुरू करें। यदि उसी formula के लिए पुनरारंभ (restart) वांछित है, तो brew services restart FORMULA प्रलेखित है; वर्शन बदलते समय, पुराने formula को स्पष्ट रूप से रोकना और नए को शुरू करना अभीष्ट परिवर्तन को स्पष्ट बनाता है। एकल-सर्विस स्विच के लिए brew services restart --all का उपयोग न करें क्योंकि यह प्रत्येक Homebrew सर्विस को प्रभावित करता है।
3. सर्विस और कमांड चयन के बीच के अंतर को समझें
किसी वर्शन वाले formula को एक सर्विस के रूप में शुरू करने से आवश्यक रूप से इसके कमांड-लाइन टूल Terminal में डिफ़ॉल्ट नहीं बन जाते हैं। Homebrew प्रत्येक formula को एक वर्शन वाले Cellar keg में इंस्टॉल करता है। किसी formula को लिंक करने से Homebrew के साझा प्रीफ़िक्स में सिम्लिंक (symlinks) बन जाते हैं, जबकि कुछ वर्शन वाले formulae को keg-only के रूप में चिह्नित किया जाता है और वे डिफ़ॉल्ट रूप से वहां लिंक नहीं होते हैं। Homebrew का brew(1) मैनुअल, Homebrew FAQ: “keg-only” का क्या अर्थ है?
formula keg-only है या नहीं और किसी भी दिए गए PATH मार्गदर्शन के लिए brew info FORMULA की जांच करें। यदि आपको केवल अन्य वर्शन का उपयोग करने के लिए बैकग्राउंड सर्विस की आवश्यकता है, तो formula नाम से उसकी सर्विस को प्रबंधित करें; यह न मानें कि लिंक बदलना आवश्यक है। जेनेरिक स्विचिंग चरण के रूप में brew link --force से बचें: Homebrew चेतावनी देता है कि keg-only formula को साझा डायरेक्टरी में बाध्य करने से विरोध (conflicts) उत्पन्न हो सकते हैं। Homebrew का keg-only निर्भरता मार्गदर्शन
4. यदि लक्षित सर्विस शुरू होने में विफल रहती है
पहले brew services list और लक्षित formula के brew info आउटपुट की जांच करें। पुष्टि करें कि पुरानी सर्विस रुक गई है और नया formula वास्तव में एक सर्विस परिभाषा प्रदान करता है; Homebrew का सर्विस समर्थन formula में सर्विस कॉन्फ़िगरेशन होने पर निर्भर करता है। Homebrew Formula Cookbook
इसके बाद, एप्लिकेशन के अपने लॉग और कॉन्फ़िगरेशन की जांच करें। formula इंस्टॉल होने पर भी कोई सर्विस विफल हो सकती है—उदाहरण के लिए, क्योंकि इसका कॉन्फ़िगरेशन किसी भिन्न डेटा डायरेक्टरी की ओर इंगित करता है, पोर्ट पहले से उपयोग में है, या कोई वर्शन मौजूदा डेटा को नहीं खोल सकता है। ये एप्लिकेशन-स्तरीय संभावनाएं हैं, Homebrew द्वारा गारंटीकृत सुधार नहीं; डेटा बदलने या हटाने से पहले एप्लिकेशन के आधिकारिक दस्तावेज़ों का उपयोग करें।
केवल तभी sudo brew services का उपयोग करें जब आपको जानबूझकर सिस्टम-व्यापी सर्विस की आवश्यकता हो जो बूट होने पर शुरू होती है। Homebrew इस मोड को /Library/LaunchDaemons में संचालित होने के रूप में प्रलेखित करता है, जबकि डिफ़ॉल्ट उपयोगकर्ता सर्विस लॉगिन पर शुरू की जाती है। अधिकांश व्यक्तिगत विकास (development) सर्विसों को उस उपयोगकर्ता खाते के अंतर्गत प्रबंधित किया जाना चाहिए जिसके पास उनकी फ़ाइलों का स्वामित्व है। Homebrew का brew(1) मैनुअल
इसलिए एक सफल स्विच के दो परीक्षण होते हैं: Homebrew रिपोर्ट करता है कि अभीष्ट formula चल रहा है, और एप्लिकेशन स्वयं अपेक्षित रूप से प्रतिक्रिया देता है। केवल सर्विस की स्थिति डेटा अनुकूलता को मान्य नहीं करती है या यह सिद्ध नहीं करती है कि कमांड-लाइन क्लाइंट अब उस formula वर्शन पर रिज़ॉल्व हो रहे हैं।
स्रोत
Homebrew Documentation: brew(1) – The Package Manager for Everywhere — Homebrew
Homebrew Documentation: Formulae Versions — Homebrew
Homebrew Documentation: FAQ — Homebrew
Homebrew Documentation: Building Software with Homebrew Keg-Only Dependencies — Homebrew
Homebrew Documentation: Formula Cookbook — Homebrew