我怎么安装一个具体版本的一个公式中的自制的?例如,postgresql-8.4.4而不是最新的9.0.

有帮助吗?

解决方案

TLDR: brew install postgresql@8.4.4 看看 回答下面 更多的细节。


*(我已经重新编辑我的答案给予更彻底的工作流程为安装/使用旧版本的软件与自制.随时添加一个注如果你找到了旧版本更好。)

让我们开始用最简单的情况下:

1)检查,是否版本已经安装(但未激活)

当安装一个自制的新公式,它将它放在一个版本的录像 /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)检查,是否版本可以作为一个水龙头

尤其是对于较大型软件项目,这是非常可能有一个够高的需求几(潜在API不兼容的)主要的版本一定的软件。正如三月2012年, 自制0.9 提供了一个机构,为此: brew tap &的 自制的版本 库。

这一版本库可以包括向后移植的旧版本的几个公式。(大多只大和着名的人,但他们当然会也有几个公式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)尝试一些式从过去的

以下做法是列出主要是用于完整性。这两个试着复活一些不死式从泡储存库。由于改变了依赖关系,API改变式规格或者只是改变下载网址,事情可能会或可能不起作用。

由于整个公式目录是个混储存库,可以安装特定的版本,使用简单的内容。然而,我们需要找到一种方式来获得一提交的旧版本。

a)历史性的时代

之间 日2011年和2014年十月,自制了一个 brew versions 命令,该命令吐出来的所有可用的版本与其各自沙哈希。作为2014年十月,您必须做 brew tap homebrew/boneyard 之前您可以使用它。因为名字的点击表明,你也许应该只作为最后的手段。

E.g。

$ 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

正如你可以看到,它建议不要使用它。自制吐出来所有的版本中,它可以找到与其内部启发式和显示方式检索旧公式。让我们试试它。

# 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)史前时代

为有特殊需要,我们也可以试试我们自己挖通过自制回购。

$ 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

你可以跳过最后的命令,以保持准在仓库中。

一注:检查出来的时候老年犯的,你暂时降低您自制的安装。所以,你应该要小心,因为一些指令在自制可能是不同的,最近的版本。

4)手写的一个公式

它不是太难 然后您可以将上载到自己的存储库。用来将 自制的版本, 但是现在停止。

A)奖金:钉住

如果你想保持一定的版本,说postgresql,周围,并停止它正在更新当你的自然 brew update; brew upgrade 过程中,你可以 一个公式:

$ brew pin postgresql

固定的公式中列出的 /usr/local/Library/PinnedKegs/ 一旦你想要来带来的最新变化和更新,你可以 取消固定 它再次:

$ brew unpin postgresql

其他提示

简单的工作流程

既然自制/版本已弃用,则使用新的命名格式支持多个版本的配方。

要安装特定版本,例如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

现在有一种更简单的方法来安装您先前安装的公式的旧版本。简单地使用

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 只是改变了符号链接,它非常快。请参阅有关自制Wiki的进一步文档 外部命令.

更新:2015年1月15日

  • 查找所需软件和版本的提交历史记录。例如,我需要从Docker版本1.4.1切换到1.3.3:https://github.com/homebrew/homebrew-core/commits/master/formula/docker.rb
  • 使用此按钮查看文件: enter image description here
  • 单击原始按钮: List item
  • 复制 URL (此示例中的Docker.rb URL)来自地址栏
  • brew install <url> (可能必须 brew unlink 首先,例如 brew unlink docker)
  • brew switch docker 1.3.3
  • 切换回Docker 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

我发现了一个比其他复杂解决方案更好的替代解决方案。

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

按照 @halfcube的建议,这确实很好:

  1. 找到您要寻找的图书馆https://github.com/homebrew/homebrew-core/tree/master/formula
  2. 点击它: https://github.com/homebrew/homebrew-core/blob/master/master/formula/postgresql.rb
  3. 单击“历史记录”按钮以查看旧提交: https://github.com/homebrew/homebrew-core/commits/master/master/formula/postgresql.rb
  4. 单击您想要的一个:“ PostgreSQL:更新版本为8.4.4”, https://github.com/homebrew/homebrew-core/blob/8cf2988911b44444444fd797c01db3cf406b0b14e85858c/formula/pormula/postgresql.rb
  5. 单击“原始”链接: https://raw.githubusercontent.com/homebrew/homebrew-core/8cf2988911b44444444444fd797c01db3cf406b0b14e85858c/formula/pormula/postgresql.rb
  6. brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb

您可以使用识别公式的策略和与您要安装的软件包版本相匹配的公式历史中的特定提交。

  1. https://github.com/homebrew/homebrew-core

  2. t 在键盘上激活文件查找器。

  3. 确定看起来最相关的公式,也许: Formula/mysql.rb, ,将您带到Forumla文件位置: https://github.com/homebrew/homebrew-core/blob/master/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 commit:

    https://github.com/homebrew/homebrew-core/commit/c778882756a832ac1d87e7396c114158e5619016c#formula/mysql.rb

注意:如果提交历史记录没有加载浏览器,则可能必须在按照github的建议中查看“提交历史记录”。如果您有兴趣在GitHub上看到该提交,则在URL中替换上面的提交SHA。或者,在下面跳到步骤7。

  1. 在应用提交后,单击“视图”按钮以查看mysql.rb文件的源。

  2. 然后单击“原始”按钮以查看原始源。

  3. 复制URL。或者,用自己构建URL mysql.rb 文件名以识别您的公式和该公式的特定版本(在下面的URL中由Commmit 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网站。相同的原则适用,Braumeister只是提供了一种易于浏览的公式版本的初学者友好方式。

我只是用自制的人回到Maven 2.2.1,因为很简单 brew install maven 安装了Maven 3.0.3。

首先,您必须离开小毛牌,所以

$ brew unlink maven

使用Brew Tap命令

$ brew tap homebrew/versions
Cloning into '/usr/local/Library/Taps/homebrew-versions'...
remote: Counting objects: 590, done.
remote: Compressing objects: 100% (265/265), done.
remote: Total 590 (delta 362), reused 549 (delta 325)
Receiving objects: 100% (590/590), 117.49 KiB | 79 KiB/s, done.
Resolving deltas: 100% (362/362), done.
Tapped 50 formula

现在您可以安装Maven2公式:

$ brew install maven2
==> Downloading 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 files, 3.1M, built in 6 seconds
$ mvn --version
Apache Maven 2.2.1 (r801777; 2009-08-06 12:16:01-0700)
Java version: 1.6.0_37
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x" version: "10.7.4" arch: "x86_64" Family: "mac" 

编辑:你也可以 brew switch maven 2.2.1 切换到其他版本。

编辑:Apache Maven项目重组了他们的存储库。更新了此答案以说明此更改。

基于由 @tschundeee@debilski的更新1, ,我自动化了该过程,并在 这个脚本.

下载它, ,把它放在你的路上 brewv <formula_name> <wanted_version>. 。对于特定的OP,将是:

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

:)

到现在为止,大多数其他答案已经过时了。不幸的是,除非该版本作为单独的公式存在,否则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.comraw.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 4.4.23而不是bash 5,尽管如果您执行了 brew upgrade 之后,bash 5将在顶部安装,除非您首先执行 brew pin bash. 。相反,要使此更平滑而无需固定,您应该首先安装最新的 brew install bash, , 然后 brew unlink bash, ,然后根据上面的脚本安装要旧版本,然后使用 brew switch bash 4.4.23 为旧版本设置符号链接。现在 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或任何其他公式。

一个更新的答案,因为这增加了 @lance-pollard已经发布的工作答案。

如何安装公式的特定版本(此示例中使用的公式是 terraform):

  1. 查找您的公式文件,例如: https://github.com/homebrew/homebrew-core/blob/master/master/formula/terraform.rb
  2. 从GitHub的历史上获取提交版本 https://github.com/homebrew/homebrew-core/commits/master/master/formula/terraform.rb 或者 git log master -- Formula/terraform.rb 如果您在本地克隆了仓库。
  3. 使用公式的提交版本获取原始的git URL:如果Github.com中的公式链接是 https://github.com/homebrew/homebrew-core/blob/e4ca4d2c41d412994f94f9f9f1cb14993be5b2c59a/formula/formula/formula/terraform.rb, ,您的原始URL将是: https://raw.githubusercontent.com/homebrew/homebrew-core/E4CA4D2C41D4C1412994F9F1CB14993BE5B2C59A/
  4. 安装它: brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb

在最新版本的Homebrew(截至撰写本文时0.9.5)上,您要安装的自制桶的版本将有一个特定的食谱。例子:

$ brew search mongodb
mongodb    mongodb24  mongodb26

然后做 brew install mongodb26 像正常人一样。

如果您已经安装了最新版本,请确保取消链接最新版本并链接所需版本: brew unlink mongodb && brew link mongodb26.

问题 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. 。这告诉我,在我的机器上,安装了自制的 /usr/local和我的 Formula目录默认位于 /usr/local/Library/Formula

  2. 为您的软件包找到特定的公式文件(.rb)。因为我想降级 docker-machine, ,我可以看到一个 docker-machine.rb 文件。

  3. 获取此公式文件的版本历史记录 。进入 git log docker-machine.rb. 。这将列出此文件的完整提交历史记录。您会看到这样的输出:

    ...more 

    commit 20c7abc13d2edd67c8c1d30c407bd5e31229cacc
    Author: BrewTestBot 
    Date:   Thu Nov 5 16:14:18 2015 +0000

        docker-machine: update 0.5.0 bottle.

    commit 8f615708184884e501bf5c16482c95eff6aea637
    Author: Vincent Lesierse 
    Date:   Tue Oct 27 22:25:30 2015 +0100

        docker-machine 0.5.0

        Updated docker-machine to 0.5.0

        Closes #45403.

        Signed-off-by: Dominyk Tiller 

    commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423
    Author: BrewTestBot 
    Date:   Mon Sep 21 14:04:04 2015 +0100

        docker-machine: update 0.4.1 bottle.

    commit 18fcbd36d22fa0c19406d699308fafb44e4c8dcd
    Author: BrewTestBot 
    Date:   Sun Aug 16 09:05:56 2015 +0100

        docker-machine: update 0.4.1 bottle.

    ...more

棘手的部分是找到所需的特定版本的最新提交。在上面,我可以说最新的0.4.1版本是使用此提交标签的: commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423. 。使用0.5.0版本(GIT日志条目从最新日期到最早的日期列出)的提交开始。

  1. 获取以前的公式文件的版本。使用步骤3的提交标签(您可以使用前6个字符),您可以使用以下内容获得旧版本的公式文件:

    git checkout 5970e1 docker-machine.rb

  2. 卸载您当前的软件包版本。只需运行普通的啤酒命令即可卸载软件包的当前版本。
    前任。 brew uninstall docker-machine

  3. 安装旧的软件包版本现在,您只需运行普通的Brew Install命令,它将安装您已结帐的公式。前任。 brew install docker-machine

您可能需要使用 brew link docker-machine 如有必要。

如果您想在任何时候恢复到特定软件包的最新版本,请转到公式目录并在公式文件(.rb)上发布以下命令

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

那么你也能 brew uninstall docker-machinebrew install docker-machine 要获取最新版本并保持这种状态。

安装旧的啤酒包版本(Flyway 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

复制所需版本的提交ID并直接安装

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

官方方法(从回应来判断 https://github.com/homebrew/brew/issues/6028 )

不幸的是,自制的人仍然没有 明显的 内置的方式安装旧版本。

幸运的是,对于大多数公式而言,有一种比过去必要的混乱的混乱更容易的方法。这是使用的完整说明 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 为您的版本设置符号链接

如果您执行了 brew upgrade 在安装旧版本的情况下未安装最新版本之后,除非您首先执行 brew pin bash.

这里的步骤避免固定,因为它很容易忘记,并且您可能会固定在将来变得不安全的版本(请参阅ShellShock/etc)。使用此设置 brew upgrade 不应影响您的Bash版本,您总是可以运行 brew switch bash 获取可切换的版本列表。

复制并粘贴并编辑 export 从下面的代码段中的行进行了以更新您所需的版本和公式名称,然后复制并粘贴其余的AS-IS,它将使用这些变量来执行魔术。

# 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

按照公式输出中的说明将其放入路径或将其设置为默认外壳。

我在这里尝试了大多数解决方案,它们已经过时了。我必须将这里的一些想法与自己的作品结合在一起。结果,我创建了一个脚本来帮助我进行繁重的工作 这里

用法:

brewv.sh formula_name desired_version

对于最后版本的Brew来说,这可能非常容易。

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)

这些都不适合我的案子(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

如果您找不到版本 brew search <formula>, ,您还可以尝试浏览公式的提交日志以找到所需的版本:

这是通过Brew安装旧版本的旧版本的示例:

从那里,我们可以安装 1.6.3 带有SHA和RAW GIT URL:

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

当前,安装特定公式版本的旧方法已弃用。所以似乎我们必须使用 brew edit [formula]. 。例如,说我们要安装 62.1 版本的 icu4c (例如 postgresql 10.5)。那你必须

> brew edit icu4c
# drops you to editor

在这里,您必须更改 url, versionsha256 (也许也是 mirror62.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 版本。

在库/公式/postgresql.rb第8行上更新到

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

和第9行的MD5

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

希望有帮助:)

我只是将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

而已。也许对任何人都有用。

我决定反对我更好的判断,为Maven 3.1.1创建一个公式 homebrew/versions 没有。去做这个:

  1. 我分叉了 homebrew/versions 在github上。
  2. 我从中链接了 $(brew --prefix)/Library/Taps 到我的叉子的本地工作副本。我叫这个 my-homebrew/versions.
  3. 我通过将公式指定为 my-homebrew/versions/<formula>.
  4. 我向 homebrew/versions 对于我的新公式。

耶。

对于当前未在默认啤酒公式中的版本,您可以轻松地使用该工具从 https://github.com/buildtools-version-taps/homebrew-versions-tap-tool

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top