ฉันจะชงลิงก์รุ่นที่ต้องการได้อย่างไร


158

ฉันมีถังไม่กี่ของแพคเกจเดียวกันใน/usr/local/Cellar/libfooเหมือน/usr/local/Cellar/libfoo/1.0.1, /usr/local/Cellar/libfoo/HEADและ/usr/local/Cellar/libfoo/mycopy

ฉันจะชงลิงก์ไปยังรุ่นที่ต้องการได้อย่างไร

คำตอบ:


310

ข้อมูลการใช้งาน:

Usage: brew switch <formula> <version>

ตัวอย่าง:

brew switch mysql 5.5.29

infoคุณสามารถค้นหารุ่นที่ติดตั้งในระบบของคุณด้วย

brew info mysql

และหากต้องการดูรุ่นที่มีให้ติดตั้งคุณสามารถระบุหมายเลขรุ่น dud ได้เนื่องจาก Brew จะตอบกลับอย่างเป็นประโยชน์กับหมายเลขรุ่นที่มี:

brew switch mysql 0

อัปเดต (15.10.2014):

brew versionsคำสั่งได้ถูกลบออกจากการชง brew tap homebrew/boneyardแต่ถ้าคุณไม่ต้องการที่จะใช้คำสั่งนี้ออกฉายครั้งแรก

วิธีที่แนะนำในการติดตั้งเวอร์ชั่นเก่าคือการติดตั้งจากhomebrew/versionsrepo ดังนี้:

$ brew tap homebrew/versions
$ brew install mysql55

สำหรับข้อมูลโดยละเอียดเกี่ยวกับวิธีติดตั้งสูตรที่เก่ากว่าให้อ่านคำตอบนี้


1
ฉันทำตามวิธีการอัพเดท 15.10.2014 และจำเป็นต้องเพิ่ม /usr/local/Cellar/mysql55/5.5.40/bin ไปยังเส้นทางของฉัน สิ่งที่ Homebrew ส่วนใหญ่มี symlink ใน / usr / local / bin ถึง / usr / local / Cellar ... แต่การติดตั้งที่อัปเดตไม่ได้เพิ่ม symlink นี้โดยอัตโนมัติ
พลัง

1
คุณยังต้องเชื่อมโยงเวอร์ชันที่ติดตั้งและเขียนทับลิงก์ปัจจุบันของคุณโดยใช้: brew link --overwrite mysql55
Yann VR

2
น่าเสียดายที่brew tap homebrew/versionsตอนนี้ฉันมีข้อผิดพลาดError: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated`
Juraj Martinka

มีวิธีที่จะคิดออกว่ามีรุ่นใดบ้างที่ไม่มีversionsหรือเพียงแค่คาดเดาและตรวจสอบด้วยswitch?
Kyle Strand

1
เวอร์ชันเลิกใช้แล้วดังนั้นฉันคิดว่าวิธีเดียวที่เหลือคือการหาสูตรเก่าและติดตั้งจาก URL โดยตรง
46726

12

ฉันถามใน #machomebrew และเรียนรู้ว่าคุณสามารถสลับระหว่างเวอร์ชันได้โดยใช้สวิตช์ชง

$ brew switch libfoo mycopy 

เพื่อรับเวอร์ชัน mycopy ของ libfoo


4

brew switch libfoo mycopy

คุณสามารถใช้brew switchเพื่อสลับระหว่างเวอร์ชันของแพ็คเกจเดียวกันหากมีการติดตั้งเป็นไดเรกทอรีย่อยภายใต้Cellar/<packagename>/

รายการนี้จะติดตั้งรุ่น (เช่นฉันมีCellar/sdl2/2.0.3ฉันรวบรวมไว้Cellar/sdl2/2.0.4)

brew info sdl2

จากนั้นสลับไปมาระหว่างกัน

brew switch sdl2 2.0.4
brew info 

ข้อมูลจะแสดง*ถัดจาก 2.0.4

ในการติดตั้งCellar/<packagename>/<version>จากแหล่งที่มาคุณสามารถทำได้

cd ~/somewhere/src/foo-2.0.4
./configure --prefix $(brew --Cellar)/foo/2.0.4
make

ตรวจสอบว่าติดตั้งที่ไหน

make install -n

ถ้าทุกอย่างถูกต้อง

make install

จากนั้นcd $(brew --Cellar)ทำการสลับระหว่างเวอร์ชัน

ฉันกำลังใช้ brew version 0.9.5


3

หากคุณติดตั้งตัวอย่างเช่น php 5.4 มันสามารถเปลี่ยนได้ในวิธีต่อไปนี้เป็น php 5.5:

$ php --version
PHP 5.4.32 (cli) (built: Aug 26 2014 15:14:01) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

$ brew unlink php54

$ brew switch php55 5.5.16

$ php --version
PHP 5.5.16 (cli) (built: Sep  9 2014 14:27:18) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies

0

หากคำตอบของ @ simon ไม่ทำงานใน mac บางตัวโปรดทำตามขั้นตอนด้านล่าง

หากคุณติดตั้ง swiftgen แล้วโดยใช้คำสั่งต่อไปนี้:

$ brew update $brew install swiftgen

จากนั้นทำตามขั้นตอนด้านล่างเพื่อเรียกใช้ swiftgen กับรุ่นที่เก่ากว่า

ขั้นตอนที่ 1: brew uninstall swiftgen ขั้นตอนที่ 2: ไปที่: https://github.com/SwiftGen/SwiftGen/releases และดาวน์โหลด swiftgen พร้อมเวอร์ชั่น: swiftgen-4.2.0.zip

Unzip แพ็คเกจในไดเรกทอรีใด ๆ

ขั้นตอนที่ 3: ดำเนินการต่อไปนี้ในเทอร์มินัล:

$ mkdir -p ~/dependencies/swiftgen
$ cp -R ~/<your_directory_name>/swiftgen-4.2.0/ ~/dependencies/swiftgen
$ cd /usr/local/bin
$ ln -s ~/dependencies/swiftgen/bin/swiftgen swiftgen
$ mkdir ~/Library/Application\ Support/SwiftGen
$ ln -s ~/dependencies/swiftgen/templates/ ~/Library/Application\ Support/SwiftGen/

$ swiftgen --version

คุณควรได้รับ: SwiftGen v0.0 (Stencil v0.8.0, StencilSwiftKit v1.0.0, SwiftGenKit v1.0.1)

ป้อนคำอธิบายรูปภาพที่นี่

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