Homebrew ติดตั้งสูตรเฉพาะรุ่นหรือไม่


2195

ฉันจะติดตั้งสูตรเฉพาะในโฮมบรูว์ได้อย่างไร ตัวอย่างเช่น postgresql-8.4.4 แทนที่จะเป็น 9.0 ล่าสุด


2
postgresqlเป็นสิ่งที่แปลกเพราะมันมีเวอร์ชั่นแยกต่างหากใน Homebrew ณ จุดหนึ่งสิ่งที่คล้ายกันbashอาจเป็นตัวอย่างที่ดีกว่าเนื่องจากมันเปลี่ยนจาก 4.x เป็น 5.x ภายในชื่อสูตรเดียวกัน ดูstackoverflow.com/a/55764594/3794873
dragon788


2
ฉันอ่านคำตอบทั้งหมด มันเป็นปี 2020และไม่มีวิธีง่ายๆหรือคำสั่งอย่างเป็นทางการที่จะทำเช่นนั้น
oluckyman

คำตอบ:


2556

TLDR: brew install postgresql@8.4.4ดูคำตอบด้านล่างสำหรับรายละเอียดเพิ่มเติม


* ( ฉันได้แก้ไขคำตอบของฉันอีกครั้งเพื่อให้เวิร์กโฟลว์ที่ละเอียดยิ่งขึ้นสำหรับการติดตั้ง / ใช้ซอฟต์แวร์รุ่นเก่ากับ homebrew อย่าลังเลที่จะเพิ่มบันทึกย่อหากคุณพบรุ่นเก่าดีกว่า )

เริ่มจากกรณีที่ง่ายที่สุด:

1) ตรวจสอบว่ามีการติดตั้งเวอร์ชั่นแล้วหรือไม่ (แต่ไม่ได้เปิดใช้งาน)

เมื่อติดตั้ง homebrew สูตรใหม่ก็ทำให้มันอยู่ในไดเรกทอรี versioned /usr/local/Cellar/postgresql/9.3.1เช่น ลิงก์สัญลักษณ์ไปยังโฟลเดอร์นี้เท่านั้นจะถูกติดตั้งทั่วโลก โดยหลักการแล้วสิ่งนี้ทำให้ง่ายต่อการสลับไปมาระหว่างรุ่นที่ติดตั้งสองรุ่น (*)

หากคุณใช้ homebrew มานานกว่าและไม่เคยลบรุ่นเก่าออกไป (ตัวอย่างเช่นใช้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) ตรวจสอบว่ามีเวอร์ชั่นพร้อมใช้งานหรือไม่

โดยเฉพาะอย่างยิ่งสำหรับโครงการซอฟต์แวร์ขนาดใหญ่มันอาจเป็นไปได้ว่ามีความต้องการสูงพอสำหรับรุ่นหลักบางส่วน (อาจเข้ากันไม่ได้กับ API) ของซอฟต์แวร์บางชิ้น ตั้งแต่เดือนมีนาคม 2012 เป็นต้นไปHomebrew 0.9จะมีกลไกสำหรับการดำเนินการดังนี้: brew tap& พื้นที่เก็บข้อมูลรุ่น homebrew

ที่เก็บเวอร์ชันนั้นอาจมี backport ของเวอร์ชันที่เก่ากว่าสำหรับหลายสูตร (ส่วนใหญ่เป็นเพียงรายการขนาดใหญ่และมีชื่อเสียงเท่านั้น แต่แน่นอนว่าพวกเขาจะมีสูตรสำหรับ 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

ตราบใดที่สูตรเวอร์ชัน backported ยังคงทันสมัยอยู่วิธีนี้น่าจะเป็นวิธีที่ดีที่สุดในการจัดการกับซอฟต์แวร์รุ่นเก่า

3) ลองใช้สูตรจากอดีต

วิธีการต่อไปนี้มีการระบุไว้ส่วนใหญ่เพื่อความสมบูรณ์ ทั้งคู่พยายามที่จะฟื้นคืนชีพสูตร Undead บางส่วนจากแหล่งเก็บข้อมูลชง เนื่องจากการอ้างอิงที่เปลี่ยนแปลงการเปลี่ยนแปลง API ในข้อมูลจำเพาะของสูตรหรือเพียงแค่การเปลี่ยนแปลงใน URL ดาวน์โหลดสิ่งต่าง ๆ อาจมีหรือไม่มีผล

เนื่องจากไดเรกทอรีสูตรทั้งหมดเป็นที่เก็บ git เราจึงสามารถติดตั้งเวอร์ชันเฉพาะโดยใช้คำสั่ง git ธรรมดา อย่างไรก็ตามเราจำเป็นต้องหาวิธีที่จะใช้ในการคอมมิชชันที่เวอร์ชันเก่าพร้อมใช้งาน

a) ครั้งประวัติศาสตร์

ระหว่างเดือนสิงหาคม 2011 ถึงตุลาคม 2014 , homebrew มีbrew versionsคำสั่งซึ่งพ่นเวอร์ชั่นที่มีทั้งหมดด้วยแฮช SHA ที่เกี่ยวข้อง ตั้งแต่เดือนตุลาคม 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

ในตอนนี้เวอร์ชัน postgresql ที่เก่ากว่าได้รับการติดตั้งแล้วเราสามารถติดตั้งสูตรล่าสุดอีกครั้งเพื่อให้ที่เก็บของเราสะอาด:

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

brew switch เป็นเพื่อนของคุณที่จะเปลี่ยนระหว่างเก่าและใหม่

b) ยุคก่อนประวัติศาสตร์

สำหรับความต้องการพิเศษเราอาจลองขุดของเราเองผ่าน repo homebrew

$ 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เป็นความมุ่งมั่นที่เราสนใจเนื่องจากการกระทำนี้ค่อนข้างเก่าเราจะพยายามปรับลดรุ่นการติดตั้งโฮมบรูว์ทั้งหมด (ด้วยวิธีนี้สูตร API รับประกันว่าจะถูกต้องมากหรือน้อย):

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

คุณสามารถข้ามคำสั่งสุดท้ายเพื่อเก็บข้อมูลอ้างอิงในที่เก็บ git ของคุณ

One note: เมื่อตรวจสอบการกระทำที่เก่ากว่าคุณจะลดระดับการติดตั้ง homebrew ของคุณชั่วคราว ดังนั้นคุณควรระวังเนื่องจากคำสั่งบางคำใน homebrew อาจแตกต่างจากเวอร์ชันล่าสุด

4) เขียนสูตรด้วยตนเอง

ไม่ยากเกินไปและคุณสามารถอัปโหลดไปยังที่เก็บข้อมูลของคุณเอง เคยเป็นรุ่น Homebrewแต่ตอนนี้ถูกยกเลิกแล้ว

A. ) โบนัส: การปักหมุด

หากคุณต้องการเก็บรุ่นที่แน่นอนให้พูด 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เมื่อคุณทำคุณสามารถยกเลิกการเปลี่ยนแปลงสูตรการคำนวณโดยใช้
mipadi

18
หมายเหตุ: ในการติดตั้ง Homebrew ใหม่คุณอาจต้องbrew updateสร้าง repo Git
Bluu

557
นี่เป็นเรื่องยากที่ขัน
Dogweather

30
ณ วันนี้ไดเรกทอรีที่ถูกต้องในการดำเนินการคำสั่งคู่มือกับพื้นที่เก็บข้อมูลเป็นcd $(brew --repository)/Library/Taps/homebrew/homebrew-coreแล้วคุณสามารถใช้และgit checkout 4cce79d -- Formula/go.rb HOMEBREW_NO_AUTO_UPDATE=1 brew install go
Calin

12
homebrew / เวอร์ชั่นเลิกใช้แล้ว
Ezekiel Victor

775

เวิร์กโฟลว์ง่าย ๆ

ขณะนี้ Homebrew / รุ่นเลิกใช้แล้ว Homebrew / core รองรับสูตรหลายเวอร์ชันด้วยรูปแบบการตั้งชื่อใหม่

หากต้องการติดตั้งรุ่นเฉพาะเช่น postgresql 9.5 คุณเพียงแค่เรียกใช้:

$ 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
Ramon Tayag

8
@RamonTayag ฉันมีปัญหาเดียวกัน ต้องแน่ใจcd /usr/localก่อน
gjb

13
ฉันพบว่าคุณต้องการขั้นตอน 3.5:brew unlink FORMULANAME
เจตนา

37
brew versions <formula>ไม่ได้รับการสนับสนุนอีกต่อไป
ejoubaud

4
@ dem7w2 คุณสามารถสร้าง symlink brew link --force postgresql@9.5ได้ หากคุณมีเวอร์ชันที่ใหม่กว่าติดตั้งอยู่แล้วและต้องการให้รุ่นที่เก่ากว่าเป็นค่าเริ่มต้นคุณจะต้อง--overwriteมีรุ่นดังกล่าวด้วย
Ryan

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เพิ่งเปลี่ยน symlink มันเร็วมาก ดูเอกสารเพิ่มเติมเกี่ยวกับวิกิพีเดีย Homebrew ภายใต้คำสั่งภายนอก


2
ฉันลองทำสิ่งนี้และได้รับข้อความ "33 ลิงค์ที่สร้างขึ้นสำหรับ /usr/local/Cellar/node/0.4.7" แต่เมื่อฉันรันโหนดหลังจากนั้นมันจะล้มเหลวด้วยข้อความ "-bash: / usr / local / ช่องเก็บ / โหนด: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว " ความคิดอะไรที่ผิดพลาดไป? หมายเหตุ: ฉันดาวน์โหลด 0.4.7 ด้วยตนเองและใส่ไว้ในไดเรกทอรีห้องใต้ดินเพราะฉันไม่รู้ว่าจะดาวน์โหลดอย่างไร แต่รุ่นโหนดล่าสุดโดยใช้การชง
Soroush Hakami

6
ฉันหวังว่าคุณจะรู้ว่ามีบางสิ่งที่เรียกว่า 'nvm' [ github.com/creationix/nvm] !
Gaurav Agarwal

40
ฉันอาศัยเวอร์ชันของแพ็คเกจที่ติดตั้งไว้แล้ว หากคุณไม่มีรุ่นคุณจะต้องใช้คำตอบที่เลือก
Nic Strong

1
สำหรับโหนดรุ่น mgmt โดยเฉพาะ nvm เป็นคำตอบที่ดีกว่า
สัปดาห์ละ

5
@NicStrong แท้จริงแล้วนั้นbrew switchขึ้นอยู่กับรุ่นที่ค้นหาหลังจากที่ติดตั้งไว้แล้ว แต่น่าเสียดายที่คำตอบที่ได้รับการยอมรับในปัจจุบันนั้นไม่มีประโยชน์ช่วยอะไรซับซ้อนและล้าสมัยอย่างไม่น่าเชื่อ มี อยู่ ที่ดีกว่าคำตอบด้านล่างที่มีมากอื่น ๆ ที่เป็นประโยชน์
GDP2

250

อัปเดต: 1/15/2015

  • ค้นหาประวัติการส่งมอบซอฟต์แวร์และเวอร์ชั่นที่ต้องการ เช่นฉันต้องการเปลี่ยนจากนักเทียบท่ารุ่น 1.4.1 เป็น 1.3.3: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • ดูไฟล์ด้วยปุ่มนี้: ป้อนคำอธิบายรูปภาพที่นี่
  • คลิกปุ่ม Raw: รายการสินค้า
  • คัดลอก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
นี่เป็นสิ่งเดียวที่ทำงานให้ฉัน งี่เง่าที่ผู้จัดการแพคเกจต้องการใช้ประโยชน์มากมายรอบตัวเพื่อติดตั้งเวอร์ชันก่อนหน้า บางทีฉันอาจถูกริบหรี่โดย RVM และ Bundler แต่กระบวนการนี้จำเป็นต้องมีความคล่องตัวและเป็นนามธรรม
poetmountain

3
เมื่อฉันพยายามไปที่ Ansible รุ่นก่อนหน้าฉันต้องยกเลิกการเชื่อมโยงสูตรก่อนที่จะติดตั้งรุ่นก่อนหน้าตามที่ระบุไว้ ดังนั้นก่อนที่จะทำ,brew install <url> brew unlink <formulaname>มิฉะนั้นนี่เป็นวิธีที่ง่ายและกระชับที่สุด (จนถึงตอนนี้) เพื่อเปลี่ยนเป็นสูตรเฉพาะรุ่น
bigsweater

คุณกดRawปุ่มบนไฟล์อะไร!
Iulian Onofrei

1
มันใช้งานได้ แต่บางครั้งคุณต้องดาวน์โหลดไฟล์ raw .rb และเปลี่ยน checksum เพื่อหลีกเลี่ยง Homebrew ที่บ่นเกี่ยวกับ SHA ไม่ตรงกัน ดูเหมือนว่า GitHub จะมีต้นไม้ repo จำนวนมากที่ถูกทิ้งไว้ในช่วงปีพ. ศ. 2560 และผลรวมของเช็คก็เปลี่ยนไป (ที่จริงแล้วมันทำให้เกิดความสับสนมากในทีมของฉันเมื่อ Bazel เริ่มล้มเหลวในการแฮชไม่ตรงกันเมื่อเดือนกรกฎาคมที่ผ่านมา)
Chang Qian

6
ฉันพบที่อยู่ได้อย่างง่ายดายโดยbrew log <formula>
kangkyu

128

ตามคำแนะนำของ @ halfcube สิ่งนี้ใช้ได้ดีจริงๆ:

  1. ค้นหาห้องสมุดที่คุณกำลังมองหาที่ https://github.com/Homebrew/homebrew-core/tree/master/Formula
  2. คลิกที่มัน: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
  3. คลิกปุ่ม "ประวัติ" เพื่อดูการกระทำที่เก่า: https://github.com/Homebrew/homebrew-core/commits/master/Formula/postgresql.rb
  4. คลิกรายการที่คุณต้องการ: "postgresql: อัปเดตเวอร์ชันเป็น 8.4.4", https://github.com/Homebrew/homebrew-core/blob/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rbb
  5. คลิกลิงก์ "raw": https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  6. brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb

8
นี่เป็นวิธีที่ง่ายที่สุดในการติดตั้งแพ็คเกจที่ต้องการถ้าไม่สามารถใช้งานได้ใน core repopackage@version
avy

7
หากคุณไม่สามารถใช้เว็บอินเตอร์เฟสได้คุณสามารถโคลน repo และทำมันแบบโลคัล: ใช้git log master -- Formula/PACKAGENAME.rbเพื่อรับประวัติการกระทำตรวจสอบการกระทำที่ถูกต้องแล้วรันbrew install Formula/PACKAGENAME.rbเพื่อติดตั้ง
chipbuster

7
ฉันคิดว่าคุณต้องการbrew unlinkก่อนbrew installรุ่นอื่น
studgeek

ใครนี้คืออะไร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


ฉันพบโซลูชันนี้โดยเริ่มต้นทำตามขั้นตอนของการค้นหา repo และแสดงความคิดเห็นใน repo

หลังจากการวิจัยเล็กน้อยพบว่ามีบางคนรวบรวมคอลเลคชั่นที่หายากที่จะชงด้วย


หากคุณกำลังมองหา 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ดูเหมือนว่าจะล้มเหลวด้วยข้อผิดพลาดทางไวยากรณ์
Brian Armstrong

6
@BrianArmstrong คุณหมายถึงรุ่น HTML รูปแบบของไฟล์ในขณะที่คุณจำเป็นต้องมีรุ่นดิบ
Nikita Volkov

ไปที่github.com/Homebrew/homebrew/commits/master/Library/Formula/…เลือกรุ่นของคุณเรียกดูรหัสดิบ - ใช้ url นี้
jpillora

1
อย่าลืมrawURL
Faber

9
homebrew-versionsจะหายไปและทุกอย่างอยู่ในขณะนี้ดังนั้นกรณีทั่วไปคือcore สามารถพบได้โดยไปที่github.com/Homebrew/homebrew-core/commits/master/Formula/... brew install https://raw.github.com/Homebrew/homebrew-core/<COMMIT>/Formula/<FORMULA>.rbCOMMIT
PJSCopeland

78

คุณสามารถใช้กลยุทธ์ในการระบุสูตรและการกระทำเฉพาะในประวัติของสูตรที่ตรงกับรุ่นของแพ็คเกจที่คุณต้องการติดตั้ง

  1. ไปที่https://github.com/Homebrew/homebrew-core

  2. กดtบนแป้นพิมพ์เพื่อเปิดใช้งานตัวค้นหาไฟล์

  3. ระบุสูตรที่มีลักษณะที่เกี่ยวข้องมากที่สุดอาจจะเป็น: Formula/mysql.rbนำคุณไปยังสถานที่ไฟล์ forumla: 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 หากประวัติการส่งไม่ได้โหลดในเบราว์เซอร์ของคุณ แทนที่การกระทำ SHA ด้านบนใน URL หากคุณสนใจที่จะเห็นการกระทำนั้นใน GitHub หรือข้ามไปขั้นตอนที่ 7 ด้านล่าง

  1. คลิกปุ่ม "ดู" เพื่อดูแหล่งที่มาของไฟล์ mysql.rb หลังจากที่คอมมิชชันถูกนำไปใช้

  2. จากนั้นคลิกปุ่ม "ดิบ" เพื่อดูแหล่งข้อมูลดิบ

  3. คัดลอก URL หรือสร้าง URL ของคุณเองด้วยmysql.rbชื่อไฟล์เพื่อระบุสูตรของคุณและรุ่นเฉพาะของสูตรนั้น (ระบุโดย SHA ที่ยอมรับใน URL ด้านล่าง)

    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 ใช้หลักการเดียวกันนี้ braumeister มีวิธีการที่ง่ายสำหรับผู้เริ่มต้นในการนำทางสูตรของสูตร


13
น่าเสียดายที่สิ่งนี้อยู่ไกลเกินไปในรายการคำตอบ แต่เป็นทางออกที่ดีที่สุด นี่คือสิ่งที่ฉันใช้ยกเว้นแทนที่จะใช้ braumeister ฉันเพิ่งไปที่หน้า Homebrew GitHub ของสูตรที่ฉันต้องการ (เช่นสำหรับ gcc ไปที่github.com/Homebrew/homebrew/blob/master/Library/Formula/gcc.rb ) จากนั้นฉันไปที่ "ประวัติ" ของไฟล์จนกว่าฉันจะได้รับเวอร์ชันที่ฉันต้องการ
Guy Kogus

3
นี่เป็นทางออกที่ดีที่สุดในกรณีของฉัน - ติดตั้ง Watchman รุ่นเก่าที่ไม่ต้องใช้ Xcode 8.1
Zachary Keener

3
นี่เป็นวิธีที่ง่ายที่สุดในการติดตั้งเวอร์ชันเก่ากว่า คำตอบที่ดี
Martin

4
สิ่งนี้ใช้ได้สำหรับฉัน แต่ฉันต้องชงการยกเลิกการเชื่อมโยงซอฟต์แวร์ก่อน
Brett Wagner

3
นี่เป็นทางออกที่ง่ายที่สุดสำหรับฉัน ควรสูงขึ้นเนื่องจากคำตอบที่ยอมรับนั้นล้าสมัยแล้ว
ทิม W

35

คำตอบอื่น ๆ ส่วนใหญ่ล้าสมัยไปแล้ว แต่น่าเสียดายที่ Homebrew ยังคงไม่ได้มีวิธีการในตัวของการติดตั้งรุ่นเก่าเว้นแต่รุ่นที่มีอยู่เป็นสูตรที่แยกจากกัน (เช่น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. ติดตั้งรุ่นที่ต้องการโดยแทนที่masterURL ที่พบก่อนหน้านี้ด้วยแฮชการกระทำเช่น:

    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

ตัวอย่างนี้คือการติดตั้งทุบตี 4.4.23 แทนการทุบตี 5 แต่ถ้าคุณดำเนินการbrew upgradeหลังจากนั้นแล้วทุบตี 5 brew pin bashจะได้รับการติดตั้งกว่าด้านบนถ้าคุณดำเนินการครั้งแรก คุณควรติดตั้งรุ่นล่าสุดด้วยbrew install bashจากนั้นbrew unlink bashจึงติดตั้งรุ่นเก่ากว่าที่คุณต้องการต่อสคริปต์ข้างต้นจากนั้นใช้brew switch bash 4.4.23การตั้งค่า symlink เป็นรุ่นที่เก่ากว่าแทน ตอนนี้การbrew upgradeอัปเดตของคุณจะไม่ส่งผลกระทบต่อ Bash ของคุณ คุณสามารถ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เพื่อใช้เวอร์ชันเฉพาะของ Bash หรือสูตรอื่น ๆ


1
เห็นได้ชัดว่าพวกเขาเปลี่ยนไวยากรณ์เพื่อbrew logให้พิเศษ-Fหรือ--grepตัวเลือกใด ๆ ที่ล้มเหลวสำหรับฉัน
dragon788

1
@ dragon788 นรกเลือด Homebrew 2 brew logสมบูรณ์ยากจน ฉันไม่สามารถเขียนรุ่นใหม่ได้ในขณะนี้เพราะต้องมีการแยกวิเคราะห์ข้อความบันทึกการทำงานอย่างถูกต้องหรือทำงานgit logโดยตรงบนที่เก็บข้อมูลที่เกี่ยวข้อง และการเปลี่ยนแปลงนั้นดูเหมือนจะไม่พูดถึงการเปลี่ยนแปลงครั้งนี้ เกินกว่าจะน่ารำคาญ
Konrad Rudolph

นอกจากว่าพวกเขายอมรับว่าการเปลี่ยนแปลงพฤติกรรมเป็นข้อผิดพลาดดูเหมือนว่าExternal Commandอาจจะต้องดำเนินการภายในโครงสร้างของbrewการได้รับการgit logกรองประเภทนั้นกลับ docs.brew.sh/External-Commands
dragon788

นี่เป็นที่เดียวที่ฉันสามารถค้นหาการbrew extractใช้งานที่ถูกต้องขอบคุณ!
dognotdog

ฉันขอแนะนำให้สร้าง local0 ที่กำหนดเองเพียงแตะส่วนแรกของคำตอบของคุณ ดูเหมือนว่าจะเป็นทางออกที่ดีที่สุดโดยรวม
studgeek

29

ฉันใช้ Homebrew เพื่อกลับไปที่ Maven 2.2.1 ตั้งแต่brew install mavenMaven 3.0.3 ที่ติดตั้งง่าย

ก่อนอื่นคุณต้องปล่อยให้สัตว์ประหลาดอยู่ที่นั่น

$ Brew ยกเลิกการเชื่อมโยง Maven

ใช้คำสั่ง brew tap

$ brew แตะ homebrew / version
การโคลนเป็น '/ usr / local / Library / Taps / homebrew-version' ...
รีโมต: การนับวัตถุ: 590 เสร็จแล้ว
รีโมต: บีบอัดออบเจ็กต์: 100% (265/265) เสร็จแล้ว
ระยะไกล: ทั้งหมด 590 (เดลต้า 362), นำมาใช้ใหม่ 549 (เดลต้า 325)
รับวัตถุ: 100% (590/590), 117.49 KiB | 79 KiB / s เสร็จแล้ว
แก้ไขเดลตา: 100% (362/362) เสร็จแล้ว
แตะ 50 สูตร

ตอนนี้คุณสามารถติดตั้งสูตร maven2:

$ brew ติดตั้ง maven2
==> กำลังดาวน์โหลด 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 วินาที
$ mvn - รุ่น
Apache Maven 2.2.1 (r801777; 2009-08-06 12: 16: 01-0700)
เวอร์ชั่น Java: 1.6.0_37
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
ภาษาเริ่มต้น: en_US, การเข้ารหัสแพลตฟอร์ม: MacRoman
ชื่อระบบปฏิบัติการ: "mac os x" เวอร์ชั่น: "10.7.4" arch: "x86_64" ตระกูล: "mac" 

แก้ไข: คุณสามารถbrew switch maven 2.2.1เปลี่ยนไปใช้เวอร์ชันอื่นได้

แก้ไข: โครงการ Apache Maven จัดระเบียบ repo ใหม่ อัปเดตคำตอบสำหรับบัญชีสำหรับการเปลี่ยนแปลงนี้


สิ่งนี้มีประโยชน์มาก หมายเหตุมูลนิธิ apache ได้ปรับโครงสร้าง maven binaries ให้เป็นไดเรกทอรีเฉพาะ (1,2,3) ดังนั้นคุณจะต้องแก้ไข maven.rb สำหรับ 2.2.1 และบางทีอาจจะเป็นโครงสร้างอื่นที่เหมาะสมกับโครงสร้างใหม่ ตัวอย่างเช่นไบนารีสำหรับ 2.2.1 อยู่ที่: apache.org/dist/maven/maven-2/2.2.1/binaries/ … บันทึก "maven-2 / 2.2.1 /" ใน URL
Charles Forcey

@CharlesForcey คุณถูกต้องเกี่ยวกับ repo Maven dist ที่ถูกจัดระเบียบใหม่ ฉันจะอัปเดตคำตอบเพื่อใช้บริวการประปาเพื่อใช้สูตร maven2 รุ่นเก่า ขอบคุณสำหรับความคิดเห็น
คาเมรอนกูเดล

21

ตามเวิร์กโฟลว์ที่อธิบายโดย@tschundeeeและการอัปเดตของ @ Debilski 1ฉันดำเนินการตามขั้นตอนอัตโนมัติและเพิ่มการล้างข้อมูลในสคริปต์นี้

ดาวน์โหลดได้brewv <formula_name> <wanted_version>ใส่ไว้ในเส้นทางของคุณและ สำหรับ OP เฉพาะมันจะเป็น:

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. รับเวอร์ชันคอมมิทจากประวัติของ github ด้วยhttps://github.com/Homebrew/homebrew-core/commits/master/Formula/terraform.rbหรือgit log master -- Formula/terraform.rbถ้าคุณโคลน repo ภายในเครื่อง
  3. รับ URL คอมไพล์ดิบกับรุ่นของสูตรกระทำของคุณ: หากการเชื่อมโยงในสูตร github.com เป็นhttps://github.com/Homebrew/homebrew-core/blob/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb URL ที่ดิบของคุณจะ เป็น: 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

ในการรับ URL raw git ในขั้นตอนที่ 3 คุณสามารถกดปุ่ม "Raw" และคัดลอก URL ที่เบราว์เซอร์จะนำคุณไป
Brian Topping

15

วิธีการอย่างเป็นทางการ (ตัดสินจากคำตอบของhttps://github.com/Homebrew/brew/issues/6028 )

แต่น่าเสียดายที่ Homebrew ยังคงไม่ได้มีความชัดเจนทาง builtin ของการติดตั้งรุ่นเก่า

โชคดีสำหรับสูตรส่วนใหญ่มีวิธีที่ง่ายกว่าระเบียบที่ซับซ้อนที่เคยมีความจำเป็น นี่คือคำแนะนำทั้งหมดที่ใช้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เพื่อใช้เวอร์ชัน Bash เฉพาะของคุณ (หรือสูตรอื่น ๆ ที่คุณติดตั้งล่าสุดและรุ่นที่เก่ากว่า)

ข้อเสียที่เป็นไปได้ของวิธีนี้คือคุณไม่สามารถสลับไปมาระหว่างเวอร์ชันต่าง ๆ ได้ง่าย ๆ เพราะอ้างอิงbrewจาก "สูตรที่แตกต่าง"

หากคุณต้องการใช้งานbrew switch $FORMULA $VERSIONคุณควรใช้วิธีการถัดไป


วิธีการเขียนสคริปต์ (แนะนำ)

ตัวอย่างนี้แสดงการติดตั้ง bash ที่เก่ากว่า 4.4.23 ซึ่งเป็นตัวอย่างที่มีประโยชน์นับตั้งแต่ bashสูตรติดตั้ง bash 5 ในปัจจุบัน

  • ก่อนติดตั้งสูตรเวอร์ชันล่าสุดด้วย brew install bash
  • แล้วก็ brew unlink bash
  • จากนั้นติดตั้งเวอร์ชันที่เก่ากว่าที่คุณต้องการตามตัวอย่างด้านล่าง
  • ในที่สุดใช้brew switch bash 4.4.23เพื่อตั้งค่า symlink ให้กับเวอร์ชันของคุณ

หากคุณดำเนินการbrew upgradeหลังจากติดตั้งเวอร์ชันที่เก่ากว่าโดยไม่ต้องติดตั้งล่าสุดก่อนล่าสุดจะได้รับการติดตั้งซึ่งอุดตันเวอร์ชันเก่าของคุณเว้นแต่คุณจะดำเนินการครั้งแรกbrew pin bashรุ่นเก่าของคุณจนกว่าคุณจะดำเนินการครั้งแรก

ขั้นตอนที่นี่หลีกเลี่ยงการปักหมุดเนื่องจากง่ายต่อการลืมและคุณอาจปักหมุดเป็นรุ่นที่ไม่ปลอดภัยในอนาคต (ดู Shellshock / etc) ด้วยการตั้งค่านี้brew upgradeจะไม่ส่งผลกระทบต่อเวอร์ชัน Bash ของคุณและคุณสามารถเรียกใช้ได้เสมอ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

ในเวอร์ชันล่าสุดของ homebrew (0.9.5 ตามที่เขียนนี้) จะมีสูตรเฉพาะสำหรับรุ่นของถัง homebrew ที่คุณต้องการติดตั้ง ตัวอย่าง:

$ brew search mongodb
mongodb    mongodb24  mongodb26

จากนั้นทำbrew install mongodb26เหมือนปกติ

brew unlink mongodb && brew link mongodb26ในกรณีที่คุณได้ติดตั้งแล้วรุ่นล่าสุดให้แน่ใจว่าจะยกเลิกการเชื่อมโยงรุ่นล่าสุดและเชื่อมโยงรุ่นที่ต้องการ:


แม้ว่าสิ่งนี้อาจตอบคำถามได้ แต่ก็ควรรวมส่วนสำคัญของคำตอบไว้ที่นี่และจัดเตรียมลิงก์สำหรับการอ้างอิง
Erik

1
@Erik ขอบคุณแก้ไขแล้ว
อเล็กซ์ชาร์ป

11

ปัญหาhomebrew/versionsคือใครบางคนจะต้องมีซอฟต์แวร์เฉพาะรุ่นนั้นอยู่ในรายการในที่เก็บเพื่อให้คุณสามารถใช้งานได้ นอกจากนี้เนื่องจากbrew versionsไม่ได้รับการสนับสนุนอีกต่อไปจึงจำเป็นต้องใช้โซลูชันอื่น สำหรับวิธีแก้ปัญหาที่บ่งชี้ว่าใช้brew switchงานจะทำงานได้ก็ต่อเมื่อคุณยังไม่ได้ทำbrew cleanupเนื่องจากจำเป็นต้องมีรุ่นในคอมพิวเตอร์ของคุณ

ผมมีปัญหาเกี่ยวกับความต้องการที่จะติดตั้งเฉพาะรุ่นเก่าที่ไม่ได้ระบุไว้ในdocker-machine homebrew/versionsฉันแก้ไขโดยใช้ด้านล่างซึ่งควรทำงานกับซอฟต์แวร์ที่ติดตั้งมา ตัวอย่างด้านล่างจะใช้docker-machineเป็นแพ็คเกจที่ฉันต้องการลดระดับจากรุ่น 0.5.0 เป็น 0.4.1

  1. ไปที่Formulaไดเรกทอรีhomebrew ของคุณ คุณสามารถตรวจสอบนี้โดยการเรียกใช้
    brew info [any package name]ยกตัวอย่างเช่นbrew info docker-machineให้ฉันบรรทัดที่แสดงให้เห็นว่าฉันเส้นทาง /usr/local/Cellar/docker-machine/0.5.0- สิ่งนี้บอกฉันว่าในเครื่องของฉันโฮมบรูว์ติดตั้งที่/usr/localและFormula ไดเรกทอรีของฉันจะอยู่ที่ค่าเริ่มต้นที่/usr/local/Library/Formula

  2. ค้นหาไฟล์สูตรเฉพาะ (.rb) สำหรับแพ็คเกจของคุณ เนื่องจากฉันต้องการปรับลดรุ่นdocker-machineฉันสามารถดูdocker-machine.rbไฟล์ได้

  3. รับประวัติรุ่นสำหรับไฟล์สูตรนี้ git log docker-machine.rbเข้าสู่ นี่จะแสดงรายการประวัติการส่งที่สมบูรณ์สำหรับไฟล์นี้ คุณจะเห็นผลลัพธ์เช่นนี้:

    ...มากกว่า 

    กระทำ 20c7abc13d2edd67c8c1d30c407bd5e31229cacc
    ผู้แต่ง: BrewTestBot 
    วันที่: พฤหัสบดี 5 พ.ย. 16:14:18 2558 +0000

        เครื่องจักรนักเทียบท่า: อัปเดต 0.5.0 ขวด

    กระทำ 8f615708184884e501bf5c16482c95eff6aea637
    ผู้แต่ง: Vincent Lesierse 
    วันที่: อ. 27 ต.ค. 22:25:30 น. +0100

        เครื่องเทียบท่า 0.5.0

        อัพเดทเครื่องเทียบท่าเป็น 0.5.0

        ปิด # 45403

        ลงชื่อออกโดย: Dominyk Tiller 

    กระทำ 5970e1af9b13dcbeffd281ae57c9ab90316ba423
    ผู้แต่ง: BrewTestBot 
    วันที่: จันทร์ 21 ก.ย. 14:04:04 2558 +0100

        เครื่องจักรนักเทียบท่า: อัปเดต 0.4.1 ขวด

    กระทำ 18fcbd36d22fa0c19406d699308fafb44e4c8dcd
    ผู้แต่ง: BrewTestBot 
    วันที่: วันอาทิตย์ที่ 16 ส.ค. 09:05:56 น. +0100

        เครื่องจักรนักเทียบท่า: อัปเดต 0.4.1 ขวด

    ...มากกว่า

ส่วนที่ยุ่งยากคือการค้นหาความมุ่งมั่นล่าสุดสำหรับรุ่นที่คุณต้องการ ในข้างต้นผมสามารถบอกล่าสุด 0.4.1 commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423รุ่นได้รับการมุ่งมั่นกับเรื่องนี้กระทำแท็ก: ความมุ่งมั่นข้างต้นจุดเริ่มต้นใช้รุ่น 0.5.0 (รายการบันทึก git มีการระบุไว้ตั้งแต่วันที่ล่าสุดถึงวันแรกสุด)

  1. รับไฟล์สูตรเวอร์ชันก่อนหน้า การใช้แท็ก commit จากขั้นตอน # 3 (คุณสามารถใช้ 6 chars แรก) คุณสามารถรับไฟล์สูตรเวอร์ชันเก่าโดยใช้สิ่งต่อไปนี้:

    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 ขอบคุณ BTW: git log --grep 0.4.1 docker-machine.rbเพื่อหาสิ่งที่กระทำที่ตรงกับรุ่นที่คุณต้องการได้อย่างรวดเร็วเพิ่มพารามิเตอร์
Jerry Mindek

สำหรับฉันเส้นทางคือ/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
akauppi

ฉันไม่สามารถค้นหาประวัติรุ่นที่เพียงพอสำหรับการcairoชงด้วยวิธีนี้ คำตอบ @ sealocal แสดงให้เห็นมากขึ้นด้วยเหตุผลบางอย่าง
akauppi

11

ปี 2020 และคำตอบส่วนใหญ่ล้าสมัยแล้ว

สถานการณ์ของฉัน: postgresqlอัพเกรดจาก 11 เป็น 12 โดยไม่ตั้งใจ ฉันต้องการเก็บ 11

  1. หยุด DB:
brew services stop postgresql
  1. ติดตั้ง Postgres 11:
brew install postgresql@11
  1. เปิดใช้งาน:
brew link postgresql@11 --force
  1. (ไม่บังคับ) เปลี่ยนชื่อไดเรกทอรีข้อมูล DB จากpostgresเป็นpostgres@11:
cd /usr/local/var
ls -lh
mv postgresql@11 postgresql@11-fresh-backup
mv postgres postgresql@11
  1. เริ่มฐานข้อมูล:
brew services start postgresql@11

หากคุณมีข้อผิดพลาดใด ๆ ให้ตรวจสอบ/usr/local/var/log/postgresql@11.log(สังเกตเห็น @ 11)


6
สิ่งนี้ใช้ได้กับกรณีพิเศษของ postgresql @ 11 ซึ่งผู้ดูแลโฮมบรูกส์เก็บรักษาไว้อย่างชัดเจนเพื่อช่วยในการย้ายข้อมูลที่เก็บข้อมูล (ดำเนินการด้วยคำสั่งพิเศษbrew postgresql-upgrade-database) คำตอบนี้ไม่เป็นประโยชน์สำหรับสูตรอื่นเกือบทั้งหมด
Adam Wróbel

@ AdamWróbelฉันได้ตัดสินใจที่นี้มันเป็นสิ่งที่ดีที่จะตอบคำถามเดิมเกี่ยวกับ Postgres brew postgresql-upgrade-databaseคือดีสำหรับการอัพเกรด คำตอบของฉันเกี่ยวกับการใช้รุ่น Postgres รุ่นเก่ากว่า เพียงแค่สลับไบนารีจะไม่ทำงาน
Max Malysh

ผู้ใช้ NodeJS ที่ไม่ได้ใช้เครื่องมือจัดการเวอร์ชันเช่นnvmFYI ฉันโชคดีที่ใช้เทคนิคนี้สำหรับ LTS รุ่นเก่า อย่างน้อยเวลาที่เขียน v10 & v12 ควรมีอยู่เช่นbrew install node@12 formulae.brew.sh/formula/node
paws

9

ติดตั้งรุ่นแพคเกจชงเก่า (ตัวอย่าง Flyway 4.2.0)

ค้นหา homebrew git dir หรือ clone Homebrew / homebrew-core ในพื้นที่ของคุณ

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

หรือ

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

แสดงรายการเวอร์ชันที่มีทั้งหมด

git log master -- Formula/flyway.rb

คัดลอก commit ID สำหรับเวอร์ชันที่คุณต้องการและติดตั้งโดยตรง

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


ทำไมไม่เพียงเรียกใช้brew install Formula/flyway.rbจากhomebrew-coreไดเรกทอรี มันใช้งานได้โดยไม่ต้องใช้ที่raw.github..อยู่
kangkyu

9

ฉันได้ลองวิธีการแก้ปัญหาส่วนใหญ่ที่นี่และพวกเขาล้าสมัย ฉันต้องรวมแนวคิดบางอย่างจากที่นี่กับงานของฉันเอง ด้วยเหตุนี้ฉันจึงสร้างสคริปต์ขึ้นมาเพื่อช่วยฉันยกของหนักซึ่งคุณสามารถหาได้จากที่นี่

การใช้งาน:

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
... ถ้ามีคนใส่ใจที่จะสร้างสูตรเวอร์ชันสำหรับแพ็คเกจนั้น
clacke

6

สิ่งเหล่านี้ไม่ได้ผลกับกรณีของฉัน (Python) ดังนั้นฉันจะเพิ่ม 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
Wile E.

คำสั่งที่ถูกต้องคือcd brew --prefix /Homebrewและgit log Library/Taps/homebrew/homebrew-core/Formula/python.rb
Iulian Onofrei

แต่นั่นก็ไม่ได้ผลเพราะ/Library/Tapsถูกเพิกเฉย
Iulian Onofrei

HOMEBREW_NO_AUTO_UPDATEอย่าลืมเกี่ยวกับ ใช่อย่าลืมเกี่ยวกับสิ่งที่คุณต้องการจนกระทั่งหลังจากที่คุณค้นพบว่าคุณต้องการมัน xD
Josh Habdas

แล้วอันนี้ละ? HOMEBREW_NO_INSTALL_CLEANUPนี่ไม่ใช่สิ่งที่คุณต้องจำ
kangkyu

6

หากคุณไม่พบรุ่นของคุณด้วย brew search <formula>คุณคุณสามารถลองดูบันทึกการกระทำเพื่อหาสูตรที่ต้องการ:

นี่คือตัวอย่างสำหรับการติดตั้ง nginx รุ่นเก่าผ่านทาง Brew:

จากตรงนั้นเราสามารถติดตั้ง1.6.3กับ sha และ url git ดิบ:

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

อัปเดตบน Library / Formula / postgresql.rb บรรทัด 8 ถึง

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

และ MD5 ในบรรทัดที่ 9 ถึง

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

ฉันเพิ่งคัดลอกรุ่นเก่าของ elasticsearch ลงใน/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

แค่นั้นแหละ. อาจเป็นประโยชน์กับทุกคน


แฮ็คที่น่าเกลียด แต่ก็ใช่สำหรับฉันเช่นกันในขณะที่ฉันพยายามค้นหาและติดตั้งกงสุลรุ่นเก่า! ไชโย
darkdefender27

0

ฉันตัดสินใจต่อต้านการตัดสินใจที่ดีกว่าของฉันเพื่อสร้างสูตรสำหรับ Maven 3.1.1 ซึ่งhomebrew/versionsไม่มี เพื่อทำสิ่งนี้:

  1. ฉันงงhomebrew/versionsกับ gitub
  2. ฉัน symlinked จาก$(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
dragon788

0

ฉันสร้างเครื่องมือเพื่อลดขั้นตอนที่กำหนดไว้ในคำตอบนี้

ในการค้นหาแพ็คเกจที่pkgมีเวอร์ชันa.b.cให้รัน:

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

รายการนี้จะคอมมิตในpkgสูตรโฮมบรูว์ที่กล่าวถึงเวอร์ชันที่ระบุพร้อมกับ URL ของ GitHub

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

คัดลอกและเรียกใช้คำสั่งที่กำหนดเพื่อติดตั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.