Homebrew सूत्र का विशिष्ट संस्करण स्थापित करें?


2195

मैं होमब्रे में किसी सूत्र का एक विशिष्ट संस्करण कैसे स्थापित करूं? उदाहरण के लिए, नवीनतम 9.0 के बजाय पोस्टग्रैक्स्ल-8.4.4।


2
postgresqlयह एक अजीब बात है क्योंकि होमब्रेव में एक बिंदु पर इसके अलग-अलग संस्करण थे, कुछ ऐसा bashही एक बेहतर उदाहरण हो सकता है क्योंकि यह उसी सूत्र नाम के भीतर 4.x से 5.x तक चला गया था। देखें stackoverflow.com/a/55764594/3794873
dragon788


2
मैंने सारे जवाब पढ़े। यह 2020 है और ऐसा करने का कोई आसान तरीका या आधिकारिक आदेश नहीं है
ऑलुकिमैन

जवाबों:


2556

TLDR: brew install postgresql@8.4.4 देखें नीचे का जवाब अधिक जानकारी के लिए।


* ( मैंने होमब्रेव के साथ पुराने सॉफ़्टवेयर संस्करणों को स्थापित करने / उपयोग करने के लिए और अधिक गहन वर्कफ़्लो देने के लिए अपने उत्तर को फिर से संपादित किया है। यदि आप पुराने संस्करण को बेहतर पाते हैं तो नोट जोड़ने के लिए स्वतंत्र महसूस करें। )

चलो सबसे सरल मामले से शुरू करते हैं:

1) जांचें कि क्या संस्करण पहले से स्थापित है (लेकिन सक्रिय नहीं है)

जब homebrew एक नया सूत्र स्थापित करता है, तो वह इसे संस्करण जैसी निर्देशिका में रखता है /usr/local/Cellar/postgresql/9.3.1। इस फ़ोल्डर के केवल प्रतीकात्मक लिंक विश्व स्तर पर स्थापित हैं। सिद्धांत रूप में, यह दो स्थापित संस्करणों के बीच स्विच करना बहुत आसान बनाता है। (*)

यदि आप होमब्रे का उपयोग लंबे समय से कर रहे हैं और पुराने संस्करणों को कभी नहीं हटाया है (उदाहरण के लिए brew cleanup), तो संभावना है कि आपके कार्यक्रम के कुछ पुराने संस्करण अभी भी आसपास ही हों। यदि आप बस उस पिछले संस्करण को सक्रिय करना चाहते हैं, तो brew switchऐसा करने का सबसे आसान तरीका है।

पुराने संस्करण स्थापित है brew info postgresqlया brew switch postgresql <TAB>नहीं (या ) के साथ जांचें :

$ brew info postgresql
postgresql: stable 9.3.2 (bottled)
http://www.postgresql.org/
Conflicts with: postgres-xc
/usr/local/Cellar/postgresql/9.1.5 (2755 files, 37M)
  Built from source
/usr/local/Cellar/postgresql/9.3.2 (2924 files, 39M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/postgresql.rb
# … and some more

हम देखते हैं कि कुछ पुराने संस्करण पहले से इंस्टॉल हैं। हम इसका उपयोग करके सक्रिय कर सकते हैं brew switch:

$ brew switch postgresql 9.1.5
Cleaning /usr/local/Cellar/postgresql/9.1.5
Cleaning /usr/local/Cellar/postgresql/9.3.2
384 links created for /usr/local/Cellar/postgresql/9.1.5

आइए सक्रिय होने के बारे में दोबारा जांच करें:

$ brew info postgresql
postgresql: stable 9.3.2 (bottled)
http://www.postgresql.org/
Conflicts with: postgres-xc
/usr/local/Cellar/postgresql/9.1.5 (2755 files, 37M) *
  Built from source
/usr/local/Cellar/postgresql/9.3.2 (2924 files, 39M)
  Poured from bottle
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/postgresql.rb
# … and some more

ध्यान दें कि स्टार *नए सक्रिय संस्करण में चला गया है

(*) कृपया ध्यान दें कि brew switchजब तक पुराने संस्करण की सभी निर्भरता अभी भी आस-पास है तब तक ही काम करती है। कुछ मामलों में, पुराने संस्करण का पुनर्निर्माण आवश्यक हो सकता है। इसलिए, का उपयोग brew switchकरना ज्यादातर उपयोगी होता है जब कोई दो संस्करणों के बीच स्विच करना चाहता है, बहुत दूर नहीं।

2) जांचें कि क्या संस्करण नल के रूप में उपलब्ध है

विशेष रूप से बड़ी सॉफ्टवेयर परियोजनाओं के लिए, यह बहुत संभव है कि सॉफ्टवेयर के एक निश्चित टुकड़े के कई (संभावित एपीआई असंगत) प्रमुख संस्करणों के लिए पर्याप्त उच्च मांग है। मार्च 2012 तक, Homebrew 0.9 इसके लिए एक तंत्र प्रदान करता है: brew tap& homebrew संस्करण रिपॉजिटरी।

उस संस्करण रिपॉजिटरी में कई फॉर्मूलों के लिए पुराने संस्करणों के बैकपोर्ट शामिल हो सकते हैं। (ज्यादातर केवल बड़े और प्रसिद्ध लोग हैं, लेकिन निश्चित रूप से वे भी postgresql के लिए कई सूत्र होंगे।)

brew search postgresql आपको दिखाएगा कि कहां दिखना है:

$ brew search postgresql
postgresql
homebrew/versions/postgresql8    homebrew/versions/postgresql91
homebrew/versions/postgresql9    homebrew/versions/postgresql92

हम बस टाइप करके इसे स्थापित कर सकते हैं

$ brew install homebrew/versions/postgresql8
Cloning into '/usr/local/Library/Taps/homebrew-versions'...
remote: Counting objects: 1563, done.
remote: Compressing objects: 100% (943/943), done.
remote: Total 1563 (delta 864), reused 1272 (delta 620)
Receiving objects: 100% (1563/1563), 422.83 KiB | 339.00 KiB/s, done.
Resolving deltas: 100% (864/864), done.
Checking connectivity... done.
Tapped 125 formula
==> Downloading http://ftp.postgresql.org/pub/source/v8.4.19/postgresql-8.4.19.tar.bz2
# …

ध्यान दें कि यह स्वचालित रूप से किया गया है उपयोग कियाhomebrew/versions टैप करें। (साथ की जाँच करें brew tap, साथ हटा दें brew untap homebrew/versions।) निम्नलिखित समतुल्य होगा:

$ brew tap homebrew/versions
$ brew install postgresql8

जब तक पिछले संस्करण के फार्मूले अद्यतित रहेंगे, यह दृष्टिकोण पुराने सॉफ्टवेयर से निपटने का सबसे अच्छा तरीका है।

3) अतीत से कुछ सूत्र का प्रयास करें

निम्नलिखित दृष्टिकोण ज्यादातर पूर्णता के लिए सूचीबद्ध हैं। दोनों ब्रू रिपॉजिटरी से कुछ मरे हुए फॉर्मूले को फिर से जीवित करने की कोशिश करते हैं। बदली हुई निर्भरताओं के कारण, एपीआई के फॉर्मूले में एपीआई परिवर्तन होता है या बस डाउनलोड यूआरएल में बदलाव होता है, चीजें काम कर सकती हैं या नहीं।

चूँकि पूरी फॉर्मूला डायरेक्टरी एक git रिपॉजिटरी है, कोई सादा git कमांड का उपयोग करके विशिष्ट संस्करण स्थापित कर सकता है। हालाँकि, हमें एक ऐसा तरीका निकालने की जरूरत है जिसमें पुराना संस्करण उपलब्ध हो।

ए) ऐतिहासिक समय

अगस्त 2011 से अक्टूबर 2014 के बीच , होमब्रे में एक brew versionsकमांड थी, जो सभी उपलब्ध संस्करणों को अपने संबंधित एसएचए हैश के साथ बाहर करती थी। अक्टूबर 2014 तक, आपको brew tap homebrew/boneyardइसका उपयोग करने से पहले करना होगा। जैसा कि नल के नाम से पता चलता है, आपको शायद केवल अंतिम उपाय के रूप में ऐसा करना चाहिए।

उदाहरण के लिए

$ brew versions postgresql
Warning: brew-versions is unsupported and may be removed soon.
Please use the homebrew-versions tap instead:
  https://github.com/Homebrew/homebrew-versions
9.3.2    git checkout 3c86d2b Library/Formula/postgresql.rb
9.3.1    git checkout a267a3e Library/Formula/postgresql.rb
9.3.0    git checkout ae59e09 Library/Formula/postgresql.rb
9.2.4    git checkout e3ac215 Library/Formula/postgresql.rb
9.2.3    git checkout c80b37c Library/Formula/postgresql.rb
9.2.2    git checkout 9076baa Library/Formula/postgresql.rb
9.2.1    git checkout 5825f62 Library/Formula/postgresql.rb
9.2.0    git checkout 2f6cbc6 Library/Formula/postgresql.rb
9.1.5    git checkout 6b8d25f Library/Formula/postgresql.rb
9.1.4    git checkout c40c7bf Library/Formula/postgresql.rb
9.1.3    git checkout 05c7954 Library/Formula/postgresql.rb
9.1.2    git checkout dfcc838 Library/Formula/postgresql.rb
9.1.1    git checkout 4ef8fb0 Library/Formula/postgresql.rb
9.0.4    git checkout 2accac4 Library/Formula/postgresql.rb
9.0.3    git checkout b782d9d Library/Formula/postgresql.rb

जैसा कि आप देख सकते हैं, यह इसका उपयोग करने के खिलाफ सलाह देता है। Homebrew अपने आंतरिक हेयुरिस्टिक के साथ मिल सकने वाले सभी संस्करणों को बाहर निकालता है और आपको पुराने फ़ार्मुलों को पुनः प्राप्त करने का एक तरीका दिखाता है। चलो यह कोशिश करते हैं।

# First, go to the homebrew base directory
$ cd $( brew --prefix )
# Checkout some old formula
$ git checkout 6b8d25f Library/Formula/postgresql.rb
$ brew install postgresql
# … installing

अब जब पुराना पोस्टग्रैस्कल संस्करण स्थापित हो गया है, तो हम अपने रिपॉजिटरी को साफ रखने के लिए नवीनतम फॉर्मूला फिर से स्थापित कर सकते हैं:

$ git checkout -- Library/Formula/postgresql.rb

brew switch पुराने और नए के बीच बदलने के लिए आपका मित्र है।

b) प्रागैतिहासिक काल

विशेष आवश्यकताओं के लिए, हम होमब्रे रेपो के माध्यम से अपनी खुद की खुदाई का भी प्रयास कर सकते हैं।

$ cd Library/Taps/homebrew/homebrew-core && git log -S'8.4.4' -- Formula/postgresql.rb

git log -Sउन सभी कमिटों के लिए दिखता है जिसमें स्ट्रिंग '8.4.4'या तो जोड़ी गई थी या फ़ाइल में हटा दी गई थी Library/Taps/homebrew/homebrew-core/Formula/postgresql.rb। परिणामस्वरूप हमें दो कमिट मिलते हैं।

commit 7dc7ccef9e1ab7d2fc351d7935c96a0e0b031552
Author: Aku Kotkavuo
Date:   Sun Sep 19 18:03:41 2010 +0300

    Update PostgreSQL to 9.0.0.

    Signed-off-by: Adam Vandenberg

commit fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
Author: David Höppner
Date:   Sun May 16 12:35:18 2010 +0200

    postgresql: update version to 8.4.4

जाहिर है, fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422क्या हम जिस चीज में रुचि रखते हैं। चूंकि यह प्रतिबद्धता बहुत पुरानी है, हम पूरा होमब्रेव इंस्टॉलेशन डाउनग्रेड करने का प्रयास करेंगे (इस तरह, फॉर्मूला एपीआई वैध होने के लिए अधिक या कम गारंटी है):

$ git checkout -b postgresql-8.4.4 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
$ brew install postgresql
$ git checkout master
$ git branch -d postgresql-8.4.4

आप अपने गिट रिपॉजिटरी में संदर्भ रखने के लिए अंतिम कमांड को छोड़ सकते हैं।

एक नोट: जब पुरानी प्रतिबद्धता की जाँच करते हैं, तो आप अस्थायी रूप से अपने होमब्रेव इंस्टॉलेशन को डाउनग्रेड करते हैं। तो, आपको सावधान रहना चाहिए क्योंकि होमब्रे में कुछ कमांड सबसे हाल के संस्करण के लिए अलग हो सकते हैं।

4) मैन्युअल रूप से एक सूत्र लिखें

यह बहुत कठिन नहीं है और आप इसे अपने स्वयं के भंडार में अपलोड कर सकते हैं। हुआ करता था Homebrew-संस्करण है, लेकिन वह अब बंद है।

ए) बोनस: पिनिंग

यदि आप एक निश्चित संस्करण रखना चाहते हैं, तो postgresql के चारों ओर कहें, और जब आप प्राकृतिक brew update; brew upgradeप्रक्रिया करते हैं, तो इसे अपडेट होने से रोक दें , आप एक सूत्र को पिन कर सकते हैं :

$ brew pin postgresql

पिन किए गए सूत्र सूचीबद्ध हैं /usr/local/Library/PinnedKegs/और एक बार जब आप नवीनतम परिवर्तनों और अपडेट में लाना चाहते हैं, तो आप इसे फिर से खोल सकते हैं :

$ brew unpin postgresql

18
आप केवल सूत्र का उपयोग करके चेकआउट भी कर सकते हैं git checkout fa992 -- Library/Formula/postgresql.rb। जब आप पूरा कर लें, तो आप सूत्र का उपयोग करके परिवर्तनों को पूर्ववत कर सकते हैं git revert HEAD Library/Formula/postgresql.rb && git checkout -- Library/Formula/postgresql.rb
मपीदी

18
नोट: एक ताजा होमब्रेव इंस्टॉल पर, आपको brew updateइसकी गिट रेपो स्थापित करने की आवश्यकता हो सकती है ।
ब्लूयू

555
यह हास्यास्पद रूप से कठिन है।
डॉगवेदर

29
आज तक, रिपॉजिटरी के खिलाफ मैनुअल कमांड को निष्पादित करने के लिए सही निर्देशिका है cd $(brew --repository)/Library/Taps/homebrew/homebrew-core, फिर आप उपयोग कर सकते हैं git checkout 4cce79d -- Formula/go.rbऔर HOMEBREW_NO_AUTO_UPDATE=1 brew install go
कलिन

12
होमब्रे / संस्करणों को पदावनत किया जाता है
ईजेकील विक्टर

775

सरल वर्कफ़्लो

अब जबकि Homebrew / संस्करणों को हटा दिया गया है, Homebrew / core नए नामकरण प्रारूप के साथ सूत्रों के कई संस्करणों का समर्थन करता है।

एक विशिष्ट संस्करण को स्थापित करने के लिए, उदाहरण के लिए 9.5grgrqll आप बस चलाते हैं:

$ brew install postgresql@9.5

उपलब्ध संस्करणों को सूचीबद्ध करने के लिए @ के साथ खोज चलाएं:

$ brew search postgresql@
==> Searching local taps...
postgresql@10.1 ✔     postgresql@9.4        postgresql@9.5        postgresql@9.6

8
सबसे सरल लगता है, लेकिन जब मैं कॉपी और पेस्ट करता हूं, मिलता हूं fatal: Not a git repository (or any of the parent directories): .git। मैं सिर्फ cdइसके बजाय निर्देशिका में (FORMULANAME.rb के बिना), तबgit checkout 120938
रेमन टयाग जूल

8
@RamonTayag, मुझे भी यही समस्या थी। cd /usr/localपहले सुनिश्चित करें ।
gjb

13
मैंने पाया कि आपको एक कदम 3.5 की आवश्यकता है:brew unlink FORMULANAME
2:24 पर

37
brew versions <formula>अब समर्थित नहीं है।
इजाबौद

4
@ dem7w2, आप के साथ सहानुभूति बना सकते हैं brew link --force postgresql@9.5। यदि आपके पास पहले से एक नया संस्करण स्थापित है और चाहते हैं कि पुराना संस्करण आपका डिफ़ॉल्ट हो, तो आपको --overwriteवहां भी आवश्यकता होगी ।
रयान

457

पुराने फॉर्मूले के पुराने संस्करण को स्थापित करने के लिए अब बहुत आसान तरीका है जिसे आपने पहले स्थापित किया था। बस उपयोग करें

brew switch [formula] [version]

उदाहरण के लिए, मैं Node.js 0.4.12 और 0.6.5 के बीच नियमित रूप से वैकल्पिक करता हूं:

brew switch node 0.4.12
brew switch node 0.6.5

चूंकि brew switchसिर्फ़ सिम्लिंक में बदलाव होता है, यह बहुत तेज़ है। बाहरी कमांड के तहत होमब्रेव विकी पर आगे के दस्तावेज़ देखें ।


2
मैंने यह कोशिश की, और यह "33 लिंक /usr/local/Cellar/node/0.4.7" के लिए बनाए गए संदेश के साथ सफल हुआ, लेकिन जब मैं नोड को बाद में चलाता हूं, तो यह संदेश के साथ विफल हो जाता है "-बश: / usb / स्थानीय / बिन / नोड: ऐसी कोई फ़ाइल या निर्देशिका नहीं "। किसी भी विचार क्या गलत हो सकता है? नोट: मैंने 0.4.7 मैन्युअल रूप से डाउनलोड किया और इसे सेलर डायरेक्टरी में डाल दिया, क्योंकि मुझे नहीं पता कि किसी भी प्रकार का डाउनलोड कैसे किया जाए, लेकिन नवीनतम नोड संस्करण को काढ़ा।
सोरूस हकामी

6
मुझे आशा है कि आपको पता है कि 'nvm' [ github.com/creationix/nvm] नाम की कोई चीज है !
गौरव अग्रवाल

40
मैं पहले से इंस्टॉल किए जा रहे पैकेज संस्करण पर निर्भर करता हूं। यदि आप उस संस्करण को याद कर रहे हैं तो आपको चयनित उत्तर को लागू करने की आवश्यकता होगी।
निक स्ट्रॉन्ग

1
विशेष रूप से नोड संस्करण mgmt के लिए, एनवीएम एक बेहतर समाधान है, इम्हो।
cweekly

5
@NicStrong वास्तव में, brew switchपहले से स्थापित संस्करण के बाद मांगे गए संस्करण पर निर्भर करता है। दुर्भाग्य से, हालांकि, वर्तमान में स्वीकृत उत्तर अविश्वसनीय रूप से अप्रभावी, जटिल और पुराना है। वहाँ रहे हैं बेहतर जवाब जो नीचे हैं बहुत अधिक उपयोगी।
जीडीपी 2

250

अपडेट: १/१५/२०१५

  • वांछित सॉफ्टवेयर और संस्करण के प्रतिबद्ध इतिहास का पता लगाएं। उदाहरण के लिए मुझे डॉक वर्जन 1.4.1 से 1.3.3 तक स्विच करने की आवश्यकता है: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • इस बटन के साथ फाइल देखें: यहां छवि विवरण दर्ज करें
  • रॉ बटन पर क्लिक करें: सामग्री सूचीबद्ध करें
  • पता बार से URL (docker.rb url को कॉपी करें )
  • brew install <url>( brew unlinkपहले, उदाहरण के लिए हो सकता है brew unlink docker)
  • brew switch docker 1.3.3
  • वापस करने के लिए स्विच 1.4.1 brew switch docker 1.4.1

इस जिस्ट से

brew update
brew versions FORMULA
cd `brew --prefix`
git checkout HASH Library/Formula/FORMULA.rb  # use output of "brew versions"
brew install FORMULA
brew switch FORMULA VERSION
git checkout -- Library/Formula/FORMULA.rb    # reset formula

## Example: Using Subversion 1.6.17
#
# $ brew versions subversion
# 1.7.3    git checkout f8bf2f3 /usr/local/Library/Formula/subversion.rb
# 1.7.2    git checkout d89bf83 /usr/local/Library/Formula/subversion.rb
# 1.6.17   git checkout 6e2d550 /usr/local/Library/Formula/subversion.rb
# 1.6.16   git checkout 83ed494 /usr/local/Library/Formula/subversion.rb
# 1.6.15   git checkout 809a18a /usr/local/Library/Formula/subversion.rb
# 1.6.13   git checkout 7871a99 /usr/local/Library/Formula/subversion.rb
# 1.6.12   git checkout c99b3ac /usr/local/Library/Formula/subversion.rb
# 1.6.6    git checkout 8774131 /usr/local/Library/Formula/subversion.rb
# 1.6.5    git checkout a82e823 /usr/local/Library/Formula/subversion.rb
# 1.6.3    git checkout 6b6d369 /usr/local/Library/Formula/subversion.rb
# $ cd `brew --prefix`
# $ git checkout 6e2d550 /usr/local/Library/Formula/subversion.rb
# $ brew install subversion
# $ brew switch subversion 1.6.17
# $ git checkout -- Library/Formula/subversion.rb

46
यह केवल एक चीज है जो मेरे लिए काम करती है। बहुत मूर्खतापूर्ण है कि एक पैकेज प्रबंधक को केवल एक पूर्व संस्करण स्थापित करने के लिए चारों ओर इतना अधिक चक्कर लगाने की आवश्यकता होती है। शायद मैं रूबी आरवीएम और बंडलर द्वारा खराब हो गया हूं, लेकिन इस प्रक्रिया को वास्तव में सुव्यवस्थित और सार करने की आवश्यकता है।
कवयित्री 3:30

3
जब मैंने Ansible के पिछले संस्करण पर जाने का प्रयास किया, तो मुझे पिछले संस्करण को संकेत के रूप में स्थापित करने से पहले सूत्र को अनलिंक करना पड़ा। ऐसा करने से पहले brew install <url>, brew unlink <formulaname>। अन्यथा, किसी सूत्र के विशिष्ट संस्करण पर स्विच करने का यह सबसे सरल और सबसे संक्षिप्त तरीका है (अब तक)।
bigsweater

आप Rawकिस फ़ाइल पर बटन दबाते हैं ?!
इलियान ओनोफ्रेई

1
यह काम करता है, लेकिन कभी-कभी आपको कच्ची .rb फ़ाइल डाउनलोड करनी होती है और होमब्रेव को SHA बेमेल के बारे में शिकायत करने से बचने के लिए चेकसम को बदलना पड़ता है। GitHub को लगता है कि 2017 में कभी-कभी खोजे गए रेपो पेड़ों का एक बड़ा हिस्सा है, और उनके चेकसम बदल गए। (वास्तव में इसने मेरी टीम में बहुत भ्रम पैदा कर दिया जब बाजेल ने पिछले जुलाई में हैश बेमेल पर असफल होना शुरू किया)
चांग कियान

6
मुझे इसका पता आसानी से मिल गयाbrew log <formula>
kangkyu

128

@ आधा घन के सुझाव की तर्ज पर, यह वास्तव में अच्छी तरह से काम करता है:

  1. उस लाइब्रेरी को ढूंढें जिसे आप https://github.com/Homebrew/homebrew-core/tree/master/Fulaula पर देख रहे हैं
  2. इसे क्लिक करें: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.r
  3. पुराने कमिट को देखने के लिए "इतिहास" बटन पर क्लिक करें: https://github.com/Homebrew/homebrew-core/commits/master/Formula/postgresql.rb
  4. आप जो चाहते हैं उस पर क्लिक करें: "postgresql: update version to 8.4.4", https://github.com/Homebrew/homebrew-core/blob/8cf29889111b44fd797c01bb3cf406b0b14e858c/Formula/postgresql.rb
  5. "कच्चे" लिंक पर क्लिक करें: https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14b858c/Formula/postgresql.rb
  6. brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb

8
यह पैकेज का आवश्यक संस्करण स्थापित करने का सबसे आसान तरीका है यदि यह कोर रेपो में उपलब्ध नहीं हैpackage@version
avy

7
यदि आप वेब इंटरफ़ेस का उपयोग नहीं कर सकते हैं, तो आप रेपो को क्लोन कर सकते हैं और इसे स्थानीय रूप से कर सकते हैं: git log master -- Formula/PACKAGENAME.rbप्रतिबद्ध इतिहास प्राप्त करने के लिए उपयोग करें, सही कमिट की जाँच करें, और फिर brew install Formula/PACKAGENAME.rbइसे स्थापित करने के लिए चलाएँ ।
चिपबस्टर

7
मुझे लगता है कि आपको दूसरे संस्करण brew unlinkसे पहले brew installकी आवश्यकता है ।
स्टूजेक

यह कौन है mxcl?
PJSCopeland

1
मैं ऐसा करता हूं brew install https://github.com/Homebrew/homebrew-core/raw/afc10f17af8023906b87363a8340aeb62284329f/Formula/postgresql%409.6.rbलेकिन त्रुटि मिलती है, शायद @हस्ताक्षर के कारण : Error: No available formula with the name "postgresql%409.6" In formula file: /Users/maciek/Library/Caches/Homebrew/Formula/postgresql%409.6.rb Expected to find class Postgresql%4096, but only found: PostgresqlAT96.कोई विचार?
msciwoj

109

मैंने एक बेहतर वैकल्पिक समाधान खोजा है तो दूसरा जटिल समाधान।

brew install https://raw.github.com/Homebrew/homebrew-versions/master/postgresql8.rb

यह PostgreSQL 8.4.8 डाउनलोड और इंस्टॉल करेगा


मैंने रेपो की खोज के चरणों का पालन करना और रेपो में एक टिप्पणी शुरू करके इस समाधान को पाया ।

थोड़ी खोजबीन के बाद पाया गया कि किसी के पास शराब बनाने के लिए दुर्लभ फॉर्मूलरों का संग्रह है।


यदि आपकी MySQL 5.1.x की तलाश है, तो इसे आज़माएं।

brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb

1
हम्म, brew install https://github.com/Homebrew/homebrew-versions/blob/master/node06.rbवाक्यविन्यास त्रुटियों के साथ विफल हो रहा था।
ब्रायन आर्मस्ट्रांग

6
@BrianArmstrong आप एक कच्चे संस्करण की जरूरत है, जबकि आप फ़ाइल के एक html- स्वरूपित संस्करण की बात कर रहे हैं ।
निकिता वोल्कोव

Github.com/Homebrew/homebrew/commits/master/Library/Formula/… पर जाएं , अपना संस्करण चुनें, कोड ब्राउज़ करें, इस url का उपयोग करें।
जिल्पोरा

1
rawURL में मत भूलना
Faber

9
homebrew-versionsचला गया है और सब कुछ पर है coreअब, तो सामान्य मामला है: brew install https://raw.github.com/Homebrew/homebrew-core/<COMMIT>/Formula/<FORMULA>.rbgithub.com/Homebrew/homebrew-core/commits/master/Formula/… परCOMMIT जाकर पाया जा सकता है ।
पीजेएसकोपलैंड

78

आप उस फॉर्मूले के इतिहास में फॉर्मूला और किसी विशेष कमिटमेंट की पहचान करने की रणनीति का उपयोग कर सकते हैं जो उस पैकेज के संस्करण से मेल खाता है जिसे आप इंस्टॉल करना चाहते हैं।

  1. Https://github.com/Homebrew/homebrew-core पर जाएं

  2. tफ़ाइल खोजक को सक्रिय करने के लिए अपने कीबोर्ड पर दबाएँ ।

  3. एक सूत्र की पहचान करें जो सबसे अधिक प्रासंगिक लगता है, शायद:, Formula/mysql.rbआपको एक फोरमला फ़ाइल स्थान पर ला रहा है: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb

  4. संशोधन इतिहास को Historyबटन पर क्लिक करके देखें , जो https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb पर स्थित है । यदि आप MySQL 5.7.10 में रुचि रखते हैं, तो आप 5.7.11 से पहले नवीनतम संशोधन पर क्लिक करना चाह सकते हैं, जो एक GitHub कमिट में नेविगेट करता है:

    https://github.com/Homebrew/homebrew-core/commit/c77882756a832ac1d87e7396c114158e5619016c#Formula/mysql.rb

नोट: यदि आपके ब्राउज़र में प्रतिबद्ध इतिहास लोड नहीं होता है, तो आपको GitHub के सुझाव के अनुसार अपने कंसोल में प्रतिबद्ध इतिहास देखना पड़ सकता है। यदि आप GitHub पर उस कमिट को देखने के इच्छुक हैं तो URL में ऊपर SHA को बदलें। वैकल्पिक रूप से, नीचे चरण 7 पर जाएं।

  1. प्रतिबद्ध लागू होने के बाद mysql.rb फ़ाइल के स्रोत को देखने के लिए "देखें" बटन पर क्लिक करें।

  2. फिर कच्चे स्रोत को देखने के लिए "रॉ" बटन पर क्लिक करें।

  3. URL कॉपी करें। वैकल्पिक रूप से, mysql.rbअपने सूत्र और उस सूत्र के विशेष संस्करण की पहचान करने के लिए फ़ाइल नाम के साथ स्वयं URL का निर्माण करें (नीचे URL में कॉमैट SHA द्वारा पहचाना गया)।

    https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb

  4. इसके साथ स्थापित करें $ brew install [URL from step 7]

    $ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb
    

नोट: यह उत्तर braumeister.org वेबसाइट को हटाने के लिए अद्यतन किया गया था। एक ही सिद्धांत लागू होता है, ब्रॉउमिस्टर ने फार्मूला संस्करणों को नेविगेट करने के लिए एक शुरुआती-अनुकूल तरीका प्रदान किया था।


13
दुर्भाग्य से यह उत्तरों की सूची में बहुत नीचे है, लेकिन सबसे अच्छा समाधान है। यह वही है जो मैं उपयोग करता हूं, केवल ब्रॉउमिस्टर का उपयोग करने के बजाय मैं केवल उस सूत्र के Homebrew GitHub पृष्ठ पर जाता हूं जिसे मैं चाहता हूं (जैसे कि gcc के लिए github.com/Homebrew/homebrew/blob/master/Library/Formula/gcc.rb पर जाएं ) और फिर मैं फ़ाइल के "इतिहास" के माध्यम से जाता हूं जब तक कि मुझे वह संस्करण नहीं मिलता जो मुझे चाहिए।
गाइ कॉगस

3
यह निश्चित रूप से मेरे मामले में सबसे अच्छा समाधान था - वॉचमैन के एक पुराने संस्करण को स्थापित करना, जिसे Xcode 8.1 की आवश्यकता नहीं थी
Zachary कीनर

3
यह वास्तव में एक पुराने संस्करण को स्थापित करने का सबसे आसान तरीका है। शानदार उत्तर
मार्टिन

4
यह मेरे लिए काम करता है लेकिन मुझे पहले सॉफ्टवेयर को अनलिंक करना पड़ता था।
ब्रेट वैग्नर

3
यह मेरे लिए सबसे सरल उपाय था। यह अधिक होना चाहिए क्योंकि स्वीकृत उत्तर पुराना है।
टिम डब्ल्यू

35

अधिकांश अन्य उत्तर अब तक अप्रचलित हैं। दुर्भाग्य से होमब्रे में अभी भी एक पुराने संस्करण को स्थापित करने का एक अंतर्निहित तरीका नहीं है, जब तक कि वह संस्करण एक अलग सूत्र (जैसे python@2, postgresql@9.4 …) के रूप में मौजूद नहीं है ।

सौभाग्य से, अन्य फ़ार्मुलों के लिए जटिल गड़बड़ की तुलना में बहुत आसान तरीका है जो आवश्यक हुआ करते थे। यहाँ पूर्ण निर्देश हैं:

  1. लॉग में सही संस्करण की खोज करें:

    brew log formula
    # Scroll down/up with j/k or the arrow keys
    # or use eg. /4\.4\.23 to search a specific version
    
    # This syntax only works on pre-2.0 Homebrew versions
    brew log --format=format:%H\ %s -F --grep=‹version› ‹formula›
    

    यह प्रतिबद्ध हैश की सूची दिखाएगा। एक लें जो उचित है (ज्यादातर यह बहुत स्पष्ट होना चाहिए, और आमतौर पर सबसे हाल ही में (यानी शीर्ष) एक है।

  2. वह URL ढूंढें जिस पर फ़ॉर्मूला अपस्ट्रीम रिपॉजिटरी में रहता है:

    brew info ‹formula› | grep ^From:
    
  3. URL को ठीक करें:

    1. बदलें github.comके साथraw.githubusercontent.com
    2. blob/masterपहले चरण में हमने पाया गया हैश के साथ बदलें ।
  4. masterप्रतिबद्ध हैश द्वारा पूर्व में पाए गए URL में प्रतिस्थापित करके वांछित संस्करण स्थापित करें , जैसे:

    brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/‹hash›/Formula/‹formula›.rb
    

(अंतिम चरण brew unlink ‹formula›से पहले चलने की आवश्यकता हो सकती है ।)


यदि आपने एक प्रतिबद्ध हैश की प्रतिलिपि बनाई है जिसका आप उपयोग करना चाहते हैं, तो आप उस संस्करण को स्थापित करने के लिए इस तरह के उदाहरण का उपयोग कर सकते हैं, मान की जगह और bashअपने प्रतिबद्ध हैश और अपने इच्छित सूत्र के साथ।

BREW_VERSION_SHA=32353d2286f850fd965e0a48bcf692b83a6e9a41
BREW_FORMULA_NAME=bash
brew info $BREW_FORMULA_NAME \
| sed -n \
    -e '/^From: /s///' \
    -e 's/github.com/raw.githubusercontent.com/' \
    -e 's%blob/%%' \
    -e "s/master/$BREW_VERSION_SHA/p" \
| xargs brew install

यह उदाहरण bash 5 के बजाय bash 4.4.23 को स्थापित कर रहा है, हालांकि यदि आपने brew upgradeबाद में प्रदर्शन किया है तो bash 5 शीर्ष पर स्थापित हो जाएगा, जब तक कि आप पहले निष्पादित नहीं होते brew pin bash। पिनिंग के बिना इस स्मूथी को बनाने के बजाय, आपको पहले नवीनतम के साथ स्थापित करना चाहिए brew install bash, फिर brew unlink bash, उसके बाद की स्क्रिप्ट के अनुसार पुराने संस्करण को स्थापित करना चाहिए, और फिर brew switch bash 4.4.23पुराने संस्करण के लिए सिमिलिंक सेट करने के लिए उपयोग करना चाहिए। अब brew upgradeआपके बैश के संस्करण को प्रभावित नहीं करना चाहिए। आप brew switch bashस्विच करने के लिए उपलब्ध संस्करणों की एक सूची प्राप्त कर सकते हैं ।


एक कस्टम स्थानीय केवल नल का उपयोग कर वैकल्पिक

उसी लक्ष्य को प्राप्त करने का दूसरा तरीका प्रतीत होता है:

brew tap-new username/repo-name
# extract with a version seems to run a grep under the hood
brew extract --version='4.4.23' bash username/repo-name
brew install bash@4.4.23
# Note this "fails" when trying to grab a bottle for the package and seems to have
# some odd doubling of the version in that output, but this isn't fatal.

यह formula@versionआपके कस्टम टैप में एक बनाता है जिसे आप उपरोक्त उदाहरण के अनुसार स्थापित कर सकते हैं। नकारात्मक पक्ष यह है कि आप शायद अभी भी करने की जरूरत है brew unlink bashऔर उसके बाद brew link bash@4.4.23क्रम बैश या किसी अन्य सूत्र के अपने विशिष्ट संस्करण का उपयोग करने में।


1
उन्होंने स्पष्ट रूप से मेरे लिए brew logकोई अतिरिक्त -Fया --grepविकल्प विफल होने के लिए वाक्यविन्यास को बदल दिया था।
ड्रैगन 788

1
@ ड्रैगन 788 ब्लडी हेल, होमब्रे 2 पूरी तरह से टूट गया brew log। मुझे अब एक नया संस्करण लिखने के लिए परेशान नहीं किया जा सकता है क्योंकि इसमें गिट लॉग संदेश को ठीक से पार्स करने की आवश्यकता है, या वैकल्पिक रूप git logसे संबंधित रिपॉजिटरी पर सीधे चल रहा है। और चैंज को भी इस टूटते बदलाव का जिक्र नहीं है। कष्टप्रद परे।
कोनराड रुडोल्फ

जब तक वे स्वीकार नहीं करते कि व्यवहार में परिवर्तन एक बग है, ऐसा लगता External Commandहै कि संरचना के भीतर काम brewकरने के लिए उस प्रकार के git logफिल्टर को वापस लेने की आवश्यकता हो सकती है । docs.brew.sh/External-Commands
Dragon788

यह एकमात्र जगह थी जिसे मैं सही brew extractउपयोग करने में सक्षम था , धन्यवाद!
डॉगनडॉग

मैं सुझाव दूंगा कि कस्टम लोकल0only आपके उत्तर के पहले भाग को टैप करें। यह वास्तव में समग्र रूप से सबसे अच्छा समाधान लगता है।
स्टूजेक

29

मैं बस Homebrew का उपयोग करने के लिए वापस जाना Maven 2.2.1 सरल brew install mavenस्थापित Maven 3.0.3 के बाद से ।

पहले आपको मावेन दिर को वहां छोड़ना होगा

$ काढ़ा मावेन को अनलिंक करें

काढ़ा नल कमांड का उपयोग करें

$ काढ़ा नल homebrew / संस्करणों
क्लोनिंग में '/ usr / स्थानीय / पुस्तकालय / नल / homebrew- संस्करण' ...
दूरस्थ: गिनती की वस्तुओं: 590, किया।
दूरस्थ: संपीड़ित वस्तुएं: 100% (265/265), किया।
रिमोट: कुल 590 (डेल्टा 362), 549 का पुन: उपयोग (डेल्टा 325)
प्राप्त वस्तुएं: 100% (590/590), 117.49 KiB | 79 कीबी / एस, किया।
संकल्प डेल्टा: 100% (362/362), किया।
50 सूत्र का दोहन किया

अब आप maven2 सूत्र को स्थापित कर सकते हैं:

$ काढ़ा मावेन 2 स्थापित करें
==> http://www.apache.org/dist/maven/maven-2/2.2.1/binaries/apache-maven-2.2.1-bin.tar.gz डाउनलोड करना
################################################## #################### 100.0%
/usr/local/Cellar/maven2/2.2.1: 10 फाइलें, 3.1M, 6 सेकंड में निर्मित
$ मवन - विसर्जन
अपाचे मावेन 2.2.1 (r801777; 2009-08-06 12: 16: 01-0700)
जावा संस्करण: 1.6.0_37
Java होम: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
डिफ़ॉल्ट लोकेल: en_US, प्लेटफ़ॉर्म एन्कोडिंग: MacRoman
ओएस नाम: "मैक ओएस एक्स" संस्करण: "10.7.4" मेहराब: "x86_64" परिवार: "मैक" 

संपादित करें: आप सिर्फ brew switch maven 2.2.1एक अलग संस्करण में स्विच करने के लिए भी कर सकते हैं ।

संपादित करें: अपाचे मावेन परियोजना ने उनके रेपो को पुनर्गठित किया। इस परिवर्तन के लिए इस उत्तर को अपडेट करें।


यह बहुत मददगार था। ध्यान दें, अपाचे नींव ने संस्करण (1,2,3) विशिष्ट निर्देशिकाओं में मावेन बायनेरिज़ को पुनर्गठित किया है, इसलिए आपको 2.2.1 के लिए मावेन.आरबी को संपादित करना होगा और शायद दूसरों को नई संरचना को फिट करना होगा। उदाहरण के लिए, 2.2.1 के लिए बाइनरी यहां स्थित थी: apache.org/dist/maven/maven-2/2.2.1/binaries/… । Url में "maven-2 / 2.2.1 /" नोट करें।
चार्ल्स फोसी

@CharlesForcey आप मावन डिस्ट रेपो के पुनर्गठन के बारे में सही हैं। मैं पुराने maven2 सूत्र का उपयोग करने के लिए काढ़ा नल का उपयोग करने के लिए उत्तर अपडेट करूंगा। टिप्पणी के लिए धन्यवाद।
कैमरून गुडेल

21

@Tschundeee और @ Debilski के अपडेट 1 द्वारा वर्णित वर्कफ़्लो के आधार पर , मैंने प्रक्रिया को स्वचालित किया और इस स्क्रिप्ट में क्लीनअप को जोड़ा ।

इसे डाउनलोड करें , इसे अपने रास्ते में रखें और brewv <formula_name> <wanted_version>। विशिष्ट ओपी के लिए, यह होगा:

cd path/to/downloaded/script/
./brewv postgresql 8.4.4

:)


4
बस कमाल। यह काढ़ा में क्यों नहीं है?
एड्रियन

3
अब नहीं मिला :(
D-32

18

उस के बाद से एक अद्यतन उत्तर @ lance-pollard को पहले से ही काम कर रहे उत्तर के रूप में पोस्ट किया गया है।

फॉर्मूला के विशिष्ट संस्करण को कैसे स्थापित करें (इस उदाहरण में प्रयुक्त सूत्र है terraform):

  1. अपनी सूत्र फ़ाइल ढूंढें, उदाहरण के लिए: https://github.com/Homebrew/homebrew-core/blob/master/Formula/terraform.rb
  2. Https://github.com/Homebrew/homebrew-core/commits/master/Formula/terraform.rb के साथ या git log master -- Formula/terraform.rbयदि आपने स्थानीय रूप से रेपो क्लोन किया है, तो जीथब के इतिहास से प्रतिबद्ध संस्करण प्राप्त करें ।
  3. अपने सूत्र के प्रतिबद्ध संस्करण के साथ कच्चा गिट URL प्राप्त करें: यदि github.com में सूत्र लिंक https://github.com/Homebrew/homebrew-core/blob/e4ca4d2c41d4c2dcc12124f9f1cb14993be5b2c59a/Formula/terra-rform.form है । be: https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a --Formula / terraform.rb
  4. इसे स्थापित करें: brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb

चरण 3 में कच्चा गिट URL प्राप्त करने के लिए, आप केवल "रॉ" बटन पर क्लिक कर सकते हैं और उस URL को कॉपी कर सकते हैं जो ब्राउज़र आपको लेता है।
ब्रायन टॉपिंग

15

आधिकारिक विधि ( https://github.com/Homebrew/brew/issues/6028 की प्रतिक्रिया से देखते हुए) )

दुर्भाग्य से Homebrew में अभी भी पुराने संस्करण को स्थापित करने का स्पष्ट तरीका नहीं है ।

सौभाग्य से, अधिकांश फॉर्मूले के लिए जटिल गड़बड़ की तुलना में बहुत आसान तरीका है जो आवश्यक हुआ करते थे। bashउदाहरण के रूप में उपयोग करने वाले पूर्ण निर्देश यहां दिए गए हैं :

brew tap-new $USER/local-tap
# extract with a version seems to run a `git log --grep` under the hood
brew extract --version=4.4.23 bash $USER/local-tap
# Install your new version from the tap
brew install bash@4.4.23
# Note this "fails" trying to grab a bottle for the package and seems to have
# some odd doubling of the version in that output, but this isn't fatal.

यह formula@versionआपके कस्टम टैप में बनाता है जिसे आप उपरोक्त उदाहरण के अनुसार इंस्टॉल कर सकते हैं। एक महत्वपूर्ण नोट यह है कि आपको शायद यह करने की आवश्यकता है कि क्या brew unlink bashआपने पहले फॉर्मूला के डिफ़ॉल्ट / नवीनतम संस्करण को स्थापित किया था और फिर brew link bash@4.4.23अपने विशिष्ट संस्करण को बैश (या आपके पास नवीनतम और पुराने संस्करण स्थापित होने का कोई अन्य सूत्र) का उपयोग करने के लिए।

इस विधि के लिए एक संभावित नकारात्मक पक्ष यह है कि आप आसानी से संस्करणों के बीच आगे और पीछे नहीं जा सकते क्योंकि इसके अनुसार brewयह "अलग सूत्र" है।

यदि आप उपयोग करने में सक्षम होना चाहते हैं तो आपको brew switch $FORMULA $VERSIONअगली विधि का उपयोग करना चाहिए।


स्क्रिप्टेड विधि (अनुशंसित)

यह उदाहरण पुराने बैश को 4.4.23 स्थापित करने को दिखाता है, एक उपयोगी उदाहरण चूंकि bashसूत्र वर्तमान में बैश 5 को स्थापित करता है।

  • पहले सूत्र का नवीनतम संस्करण स्थापित करें brew install bash
  • फिर brew unlink bash
  • उसके बाद नीचे दिए गए स्निपेट में अपने इच्छित पुराने संस्करण को स्थापित करें
  • अंत में brew switch bash 4.4.23अपने वर्जन के लिए सिम्लिंक सेट करने के लिए उपयोग करें

यदि आपने brew upgradeनवीनतम पहले इंस्टॉल किए बिना एक पुराने संस्करण को स्थापित करने के बाद प्रदर्शन किया है , तो नवीनतम आपके पुराने संस्करण को क्लोबिंग स्थापित करेगा, जब तक कि आप पहली बार निष्पादित नहीं होते हैं।brew pin bash

यहां एवीओआईडी पिनिंग के चरण क्योंकि यह भूलना आसान है और आप भविष्य में असुरक्षित हो जाने वाले संस्करण पर पिन कर सकते हैं (शेलशॉक / आदि देखें)। इस सेटअप के साथ brew upgradeआपके बैश के संस्करण को प्रभावित नहीं करना चाहिए और आप हमेशा चला सकते हैंbrew switch bash स्विच करने के लिए उपलब्ध संस्करणों की सूची प्राप्त करने के लिए ।

exportअपने इच्छित संस्करण और सूत्र नाम के साथ अपडेट करने के लिए नीचे दिए गए कोड स्निपेट की पंक्तियों को कॉपी और पेस्ट करें और बाकी हिस्सों को कॉपी और पेस्ट करें, जैसा कि बाकी है और यह उन चर का उपयोग जादू करने के लिए करेगा।

# This search syntax works with newer Homebrew
export BREW_FORMULA_SEARCH_VERSION=4.4.23 BREW_FORMULA_NAME=bash
# This will print any/all commits that match the version and formula name
git -C $(brew --repo homebrew/core) log \
--format=format:%H\ %s -F --all-match \
--grep=$BREW_FORMULA_SEARCH_VERSION --grep=$BREW_FORMULA_NAME

जब आप निश्चित होते हैं कि संस्करण सूत्र में मौजूद है, तो आप नीचे उपयोग कर सकते हैं:

# Gets only the latest Git commit SHA for the script further down
export BREW_FORMULA_VERSION_SHA=$(git -C $(brew --repo homebrew/core) log \
 --format=format:%H\ %s -F --all-match \
--grep=$BREW_FORMULA_SEARCH_VERSION --grep=$BREW_FORMULA_NAME | \
head -1 | awk '{print $1}')

एक बार जब आप प्रतिबद्ध हैश का उपयोग करना चाहते हैं, तो आप पैकेज के उस संस्करण को स्थापित करने के लिए इसका उपयोग कर सकते हैं।

brew info $BREW_FORMULA_NAME \
| sed -n \
    -e '/^From: /s///' \
    -e 's/github.com/raw.githubusercontent.com/' \
    -e 's%blob/%%' \
    -e "s/master/$BREW_FORMULA_VERSION_SHA/p" \
| xargs brew install

इसे अपने PATH में डालने के लिए सूत्र आउटपुट में दिए गए निर्देशों का पालन करें या इसे अपने डिफ़ॉल्ट शेल के रूप में सेट करें।


12

होमब्रेव के नवीनतम संस्करण (इस लेखन के रूप में 0.9.5) पर होमब्रेव केग के संस्करण के लिए एक विशिष्ट नुस्खा होगा जिसे आप इंस्टॉल करना चाहते हैं। उदाहरण:

$ brew search mongodb
mongodb    mongodb24  mongodb26

फिर brew install mongodb26सामान्य की तरह ही करें ।

उस स्थिति में जब आपने नवीनतम संस्करण पहले ही इंस्टॉल कर लिया था, नवीनतम संस्करण को अनलिंक करना और वांछित संस्करण लिंक करना सुनिश्चित करें brew unlink mongodb && brew link mongodb26:।


हालांकि यह प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक हिस्सों को यहां शामिल करना बेहतर होगा , और संदर्भ के लिए लिंक प्रदान करें।
एरिक

1
@ एरिक धन्यवाद, निश्चित।
एलेक्स शार्प

11

यह 2020 है और अधिकांश उत्तर पुराने हैं

मेरी स्थिति: postgresqlगलती से 11 से 12 तक उन्नत हो गई थी। मैं 11 रखना चाहता हूं।

  1. DB बंद करो:
brew services stop postgresql
  1. 11 स्थापित करें:
brew install postgresql@11
  1. इसे चालू करो:
brew link postgresql@11 --force
  1. (वैकल्पिक) का नाम बदलें डीबी डेटा से निर्देशिका postgresके लिए postgres@11:
cd /usr/local/var
ls -lh
mv postgresql@11 postgresql@11-fresh-backup
mv postgres postgresql@11
  1. DB प्रारंभ करें:
brew services start postgresql@11

यदि आपकी कोई त्रुटि है, तो जांच करें /usr/local/var/log/postgresql@11.log(@ 11 देखें)।


6
यह केवल postgresql @ 11 के विशेष मामले के लिए काम करता है जो स्पष्ट रूप से होमटॉबर अनुरक्षकों द्वारा डेटास्टोर माइग्रेशन (विशेष कमांड के साथ प्रदर्शन) के साथ मदद करने के लिए चारों ओर रखा जाता है brew postgresql-upgrade-database। यह उत्तर लगभग किसी अन्य सूत्र के लिए उपयोगी नहीं है।
एडम रेबेल

@ AdamWróbel मैंने तय किया है कि पोस्टग्रेज के बारे में मूल प्रश्न का उत्तर देना ठीक है । उन्नयन केbrew postgresql-upgrade-database लिए, ठीक है । मेरा उत्तर पुराने Postgres संस्करण का उपयोग करने के बारे में है । बस बायनेरिज़ स्विच करने से काम नहीं चलेगा।
मैक्स मलीश

NodeJS उपयोगकर्ता जो कि एक संस्करण प्रबंधक का उपयोग नहीं कर रहे हैं उदाहरण के लिए nvm, FYI करें मैंने पुराने एलटीएस रिलीज के लिए इस तकनीक का उपयोग करके सौभाग्य प्राप्त किया है। V10 और v12 लिखने के समय कम से कम उपलब्ध होना चाहिए, उदाहरण के लिए brew install node@12 formulae.brew.sh/formula/node
paws

10

के साथ समस्या homebrew/versions यह है कि किसी के पास आपके लिए रिपॉजिटरी में सूचीबद्ध सॉफ़्टवेयर के उस विशिष्ट संस्करण का उपयोग करने में सक्षम होना चाहिए। इसके अलावा, चूंकि brew versionsअब समर्थित नहीं है, इसलिए एक और समाधान की आवश्यकता है। उन समाधानों के लिए, जो उपयोग करने का संकेत देते हैं brew switch, यह केवल तभी काम करेगा जब आपने brew cleanupसंस्करण नहीं किया है क्योंकि आपके कंप्यूटर पर संस्करण की आवश्यकता है।

मुझे एक विशिष्ट पुराने संस्करण को स्थापित करने की इच्छा docker-machineथी जिसमें कोई सूचीबद्ध नहीं था homebrew/versions। मैंने इसे नीचे का उपयोग करके हल किया है, जो किसी भी काढ़ा स्थापित सॉफ़्टवेयर के लिए भी काम करना चाहिए। नीचे दिए गए उदाहरण का उपयोग docker-machineमैं पैकेज के रूप में 0.5.0 से 0.4.1 के डाउनग्रेड में करना चाहता हूं।

  1. अपने होमब्रेव Formulaनिर्देशिका में जाएं ।
    आप इसे चलाकर निर्धारित कर सकते हैं brew info [any package name]। उदाहरण के लिए, brew info docker-machineमुझे एक लाइन देता है जो मुझे एक रास्ता दिखाता है - /usr/local/Cellar/docker-machine/0.5.0। यह मुझे बताता है कि मेरी मशीन पर, homebrew स्थापित है /usr/localऔर मेरी Formula निर्देशिका डिफ़ॉल्ट रूप से स्थित है/usr/local/Library/Formula

  2. अपने पैकेज के लिए विशिष्ट सूत्र फ़ाइल (.rb) का पता लगाएँ। चूंकि मैं डाउनग्रेड करना चाहता हूं docker-machine, मैं एक docker-machine.rbफाइल देख सकता हूं ।

  3. इस सूत्र फ़ाइल के लिए संस्करण इतिहास प्राप्त करें । दर्ज करें git log docker-machine.rb। यह इस फ़ाइल के लिए पूर्ण प्रतिबद्ध इतिहास को सूचीबद्ध करेगा। आप इस तरह से आउटपुट देखेंगे:

    ...अधिक 

    प्रतिबद्ध 20c7abc13d2edd67c8c1d30c407bd5e31229cacc
    लेखक: BrewTestBot 
    दिनांक: गुरु नवम्बर ५:१४:१ 5 २०१५ +0000

        docker- मशीन: 0.5.0 बोतल अपडेट करें।

    8f615708184884e501bf5c16482c95eff6aea637
    लेखक: विंसेंट लेसियर्स 
    दिनांक: 27 अक्टूबर को 22:25:30 2015 +0100

        डॉकटर-मशीन 0.5.0

        अपडेटेड डॉक-मशीन 0.5.0 पर

        # 45403 को बंद करता है।

        साइन-ऑफ-बाय: डोमिनक टिलर 

    प्रतिबद्ध 5970e1af9b13dcbeffd281ae57c9ab90316ba423
    लेखक: BrewTestBot 
    दिनांक: सोम सिपाही २१ १४:०४:२०१५ +०१००

        डॉकटर-मशीन: 0.4.1 बोतल अपडेट करें।

    18fcbd36d22fa0c19406d699308fafb44e4c8dcd प्रतिबद्ध करें
    लेखक: BrewTestBot 
    दिनांक: सूर्य अगस्त १६ 09:05:56 2015 +0100

        डॉकटर-मशीन: 0.4.1 बोतल अपडेट करें।

    ...अधिक

मुश्किल हिस्सा वह विशिष्ट संस्करण है जिसे आप चाहते हैं। उपरोक्त में, मैं बता सकता हूं कि नवीनतम 0.4.1 संस्करण इस प्रतिबद्ध टैग के साथ प्रतिबद्ध था commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423:। इस बिंदु के ऊपर वाले संस्करण 0.5.0 संस्करण का उपयोग करना शुरू करते हैं (गिट लॉग प्रविष्टियाँ नवीनतम से सबसे शुरुआती तिथि तक सूचीबद्ध हैं)।

  1. सूत्र फ़ाइल का पिछला संस्करण प्राप्त करें। चरण # 3 से कमिट टैग का उपयोग करके (आप पहले 6 वर्णों का उपयोग कर सकते हैं), आप निम्न फ़ाइल का पुराना संस्करण प्राप्त कर सकते हैं:

    git checkout 5970e1 docker-machine.rb

  2. अपने वर्तमान पैकेज संस्करण को अनइंस्टॉल करें। बस अपने पैकेज के वर्तमान संस्करण की स्थापना रद्द करने के लिए सामान्य काढ़ा आदेश चलाएँ।
    पूर्व।brew uninstall docker-machine

  3. पुराने पैकेज संस्करण को स्थापित करें। अब, आप केवल सामान्य काढ़ा स्थापित कमांड चला सकते हैं और यह वह सूत्र स्थापित करेगा जिसे आपने चेकआउट किया है। पूर्व।brew install docker-machine

brew link docker-machineयदि आवश्यक हो तो उपयोग करके आपको पुनः लिंक करना पड़ सकता है।

यदि किसी भी समय आप किसी विशिष्ट पैकेज के नवीनतम संस्करण में वापस लौटना चाहते हैं, तो फॉर्मूला डायरेक्टरी में जाएं और अपनी सूत्र फ़ाइल (.rb) पर निम्न आदेश जारी करें।

git reset HEAD docker-machine.rb
git checkout -- docker-machine.rb

तब आप नवीनतम संस्करण प्राप्त कर सकते हैं brew uninstall docker-machineऔर brew install docker-machineइसे आगे बढ़ने का रास्ता बनाए रख सकते हैं।


1
बहुत अच्छी तरह से @rchawdry लिखते हैं, धन्यवाद। बीटीडब्ल्यू: उस प्रतिबद्ध को खोजने के लिए जो उस संस्करण से मेल खाता है जिसे आप जल्दी से --grep पैरामीटर जोड़ते हैं git log --grep 0.4.1 docker-machine.rb
जेरी माइंडेक

मेरे लिए, रास्ता था/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
akauppi

मैं cairoइस तरह से काढ़ा के लिए संस्करण इतिहास का पर्याप्त पता लगाने में सक्षम नहीं था । @ सीलोकल का उत्तर किसी कारण से अधिक दिखाई दिया।
एकुप्पी

9

एक पुराना काढ़ा पैकेज संस्करण स्थापित करें (फ्लाईवे 4.2.0 उदाहरण)

स्थानीय स्तर पर अपने स्थानीय होमब्रिट git dir या क्लोन होमब्रेव / होमब्रेव-कोर को खोजें

cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/

या

git clone git@github.com:Homebrew/homebrew-core.git

सभी उपलब्ध संस्करणों की सूची बनाएं

git log master -- Formula/flyway.rb

इच्छित संस्करण के लिए प्रतिबद्ध आईडी की प्रतिलिपि बनाएँ और इसे सीधे इंस्टॉल करें

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/793abfa325531415184e1549836c982b39e89299/Formula/flyway.rb


बस निर्देशिका brew install Formula/flyway.rbसे क्यों नहीं चला homebrew-core? यह मेरे लिए raw.github..पते का उपयोग किए बिना काम किया
kangkyu

8

मैंने यहां अधिकांश समाधानों की कोशिश की है और वे पुराने हैं। मुझे अपने काम से कुछ विचारों को यहाँ से जोड़ना था। एक परिणाम के रूप में मैंने एक स्क्रिप्ट तैयार की है जिससे मुझे भारी लिफ्टिंग करने में मदद मिलेगी जो आप यहां पा सकते हैं

उपयोग:

brewv.sh formula_name desired_version

6

यह काढ़ा के अंतिम संस्करण के लिए बहुत आसान किया जा सकता है।

brew tap homebrew/versions
brew install subversion17 # for svn 1.7 branch instead of last available
brew install postgresql8  # for postgresql 8 (which you ask)

2
... अगर किसी ने उस पैकेज के लिए एक संस्करण नुस्खा बनाने की जहमत उठाई।
8

6

इनमें से कोई भी वास्तव में मेरे मामले (पायथन) के लिए काम नहीं करता है, इसलिए मैं अपने 2 सेंट जोड़ूंगा:

cd `brew --prefix`
git log Library/Formula/python.rb

आउटपुट इस तरह दिखता है:

commit 9ff2d8ca791ed1bd149fb8be063db0ed6a67a6de
Author: Dominyk Tiller <dominyktiller@gmail.com>
Date:   Thu Jun 30 17:42:18 2016 +0100

    python: clarify pour_bottle reason

commit cb3b29b824a264895434214e191d0d7ef4d51c85
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date:   Wed Jun 29 14:18:40 2016 +0100

    python: update 2.7.12 bottle.

commit 45bb1e220341894bbb7de6fd3f6df20987dc14f0
Author: Rakesh <rakkesh@users.noreply.github.com>
Date:   Wed Jun 29 10:02:26 2016 +0530

    python 2.7.12

    Closes #2452.

    Signed-off-by: Tim D. Smith <git@tim-smith.us>

commit cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date:   Fri Jun 17 20:14:36 2016 +0100

    python: update 2.7.11 bottle.

...

मुझे संस्करण चाहिए 2.7.11इसलिए मेरा हैश cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9(या cf5da05संक्षेप में) है। अगला, मैं उस संस्करण की जांच करता हूं और सूत्र स्थापित करता हूं python:

git checkout cf5da05
brew install python

अंत में, साफ करें:

git checkout master

2
जीवन बदलता है और यह उत्तर सबसे अधिक प्रासंगिक है। के बारे में मत भूलो HOMEBREW_NO_AUTO_UPDATEऔर पढ़ें github.com/Homebrew/brew/issues/1188
विले ई।

सही आदेश हैं cd शराब बनाना/Homebrewgit log Library/Taps/homebrew/homebrew-core/Formula/python.rb
Iulian Onofrei

लेकिन यह भी काम नहीं करता है क्योंकि /Library/Tapsनजरअंदाज कर दिया है।
इयूलियन ओनोफ्रेई

के बारे में मत भूलना HOMEBREW_NO_AUTO_UPDATE। हाँ, बात आप जब तक जरूरत के बारे में भूल नहीं है के बाद क्या आप इसकी आवश्यकता है पता चलता है। xD
जोश हबदास 12

इसके बारे में क्या खयाल है? HOMEBREW_NO_INSTALL_CLEANUPयह आपको याद रखने की ज़रूरत नहीं है?
kangkyu

6

अगर आपको अपना संस्करण नहीं मिल रहा है brew search <formula> , तो आप अपने सूत्र के लिए प्रतिबद्ध लॉग पर जाने की कोशिश कर सकते हैं।

यहाँ शराब के माध्यम से nginx के पुराने संस्करण को स्थापित करने के लिए एक उदाहरण है:

वहां से, हम 1.6.3शा और कच्चे गिट url के साथ स्थापित कर सकते हैं :

brew install https://raw.githubusercontent.com/Homebrew/homebrew/eba75b9a1a474b9fc4df30bd0a32637fa31ec049/Library/Formula/nginx.rb


3

वर्तमान में विशिष्ट सूत्र संस्करणों को स्थापित करने के पुराने तरीकों को हटा दिया गया है। तो ऐसा लगता है जैसे हमें उपयोग करना है brew edit [formula]। उदाहरण के लिए, हम एक 62.1संस्करण स्थापित करना चाहते हैं icu4c(उदाहरण के लिए आवश्यक postgresql 10.5)। फिर आपको करना पड़ेगा

> brew edit icu4c
# drops you to editor

यहाँ आपको इसी तार को बदलना होगा url, versionऔर sha256(शायद यह भी mirror) 62.1

url "https://ssl.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz"
mirror "https://github.com/unicode-org/icu/releases/download/release-62-1/icu4c-62_1-src.tgz"
version "62.1"
sha256 "3dd9868d666350dda66a6e305eecde9d479fb70b30d5b55d78a1deffb97d5aa3"

फिर brew reinstall icu4cअंत में 62.1संस्करण डाउनलोड करने के लिए दौड़ें ।


कैसे प्राप्त करें sha256 ? मेरे मामले मेंhttps://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-macos-x64-release.zip
simo

1

लाइब्रेरी / फॉर्मूला / पोस्टग्रैक्कल.आरबी लाइन 8 से अपडेट करें

http://ftp2.uk.postgresql.org/sites/ftp.postgresql.org/source/v8.4.6/postgresql-8.4.6.tar.bz2

और लाइन 9 पर एमडी 5

fcc3daaf2292fa6bf1185ec45e512db6

सुरषित और बहार।

brew install postgres
initdb /usr/local/var/postgres

अब इस अवस्था में आपको postgresql could not create shared memory segmentत्रुटि का सामना करना पड़ सकता है , /etc/sysctl.confजो इस तरह से अद्यतन करने के लिए काम कर सकता है :

kern.sysv.shmall=65536
kern.sysv.shmmax=16777216

initdb /usr/local/var/postgresफिर से प्रयास करें, और इसे सुचारू रूप से चलाना चाहिए।

शुरू करने के लिए postgresql चलाने के लिए

launchctl load -w /usr/local/Cellar/postgresql/8.4.6/org.postgresql.postgres.plist

उम्मीद है की वो मदद करदे :)


1

मैंने /usr/local/Cellar/elasticsearchनिर्देशिका में इलास्टिक्स खोज की एक पुरानी रिलीज़ की प्रतिलिपि बनाई ।

$ mkdir /usr/local/Cellar/elasticsearch/5.4.3/bin
$ cp elasticsearch /usr/local/Cellar/elasticsearch/5.4.3/bin
$ brew switch elasticsearch 5.4.3

बस। शायद यह किसी के लिए उपयोगी हो।


एक बदसूरत हैक। लेकिन, हाँ, यह मेरे लिए भी काम किया, जबकि मैं कांसुल के पुराने संस्करण को खोजने और स्थापित करने की कोशिश कर रहा था! चीयर्स।
डार्कडेफेंडर 27

0

मैंने फैसला किया, मेरे बेहतर फैसले के खिलाफ, मावेन 3.1.1 के लिए एक सूत्र तैयार करना, जिसके homebrew/versionsपास नहीं था। यह करने के लिए:

  1. मैंने जीतूब homebrew/versionsपर कांटा लगाया।
  2. मैंने $(brew --prefix)/Library/Tapsअपने कांटे की स्थानीय कामकाजी प्रति से सहानुभूति व्यक्त की । मैं यह फोन करूंगा my-homebrew/versions
  3. मैंने सूत्र के रूप में निर्दिष्ट करके परीक्षण किया my-homebrew/versions/<formula>
  4. मैंने homebrew/versionsअपने नए फॉर्मूले के लिए एक पुल अनुरोध भेजा ।

वाह।


0

उन संस्करणों के लिए जो वर्तमान में डिफ़ॉल्ट काढ़ा फ़ार्मुलों में नहीं हैं, आप आसानी से https://github.com/buildtools-version-taps/homebrew-versions-tap-tool से टूल के साथ अपना टैप आसानी से बना सकते हैं


यह उपकरण अब Homebrew में एकीकृत होना प्रतीत होता है? आप कर सकते हैं brew tap-new user/repoऔर फिर brew extract --version='Major.minor' FORMULA user/repoऔर फिर brew install FORMULA@Major.minor
ड्रैगन 88

0

मैंने इस उत्तर में निर्धारित प्रक्रिया को आसान बनाने के लिए एक उपकरण बनाया ।

pkgसंस्करण के साथ एक पैकेज खोजने के लिए a.b.c, दौड़ें:

$ brew-install-specific pkg@a.b.c

यह pkgहोमब्रेव फॉर्मूले पर सूचीबद्ध होगा जो दिए गए संस्करण के साथ उनके गीथहब उरल्स का उल्लेख करता है।

Matching versions:
1. pkg: update a.b.c bottle.
   https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>
2. pkg: release a.b.c-beta
   https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>
3. pkg a.b.c
   https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>

Select index: 

दिए गए URL से कमिट को सत्यापित करें, और चयनित कमिट के इंडेक्स को दर्ज करें।

Select index: 2
Run:
  brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/<COMMIT-SHA>/Formula/pkg.rb

इंस्टॉल करने के लिए दिए गए कमांड को कॉपी और चलाएं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.