如何在自制软件中安装特定版本的公式?例如,postgresql-8.4.4而不是最新的9.0。
如何在自制软件中安装特定版本的公式?例如,postgresql-8.4.4而不是最新的9.0。
(我已经重新编辑了我的答案,为安装/使用自制软件的旧软件版本提供了更全面的工作流程。如果您发现旧版本更好,请随意添加备注。)
让我们从最简单的情况开始:
当自制软件安装新的公式时,它会将它放在一个版本化的目录中 /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
当人们想要在不太远的两个版本之间切换时,它们非常有用。
特别是对于较大的软件项目,很可能对某个软件的几个(可能是API不兼容的)主要版本有足够高的需求。截至2012年3月, 自制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
只要向后移植的版本公式保持最新,这种方法可能是处理旧软件的最佳方法。
列出了以下方法,主要是为了完整性。两者都尝试从brew存储库中复活一些不死的公式。由于更改了依赖关系,公式规范中的API更改或只是更改了下载URL,因此可能会或可能不会起作用。
由于整个公式目录是一个git存储库,因此可以使用plain git命令安装特定版本。但是,我们需要找到一种方法来获取旧版本可用的提交。
a)历史时期
之间 2011年8月和2014年10月,自制软件有一个 brew versions
命令,使用各自的SHA哈希值吐出所有可用版本。截至2014年10月,你必须做一个 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)史前时代
对于特殊需求,我们也可以尝试自己挖掘自制回购。
$ git log -S'8.4.4' -- Library/Formula/postgresql.rb
git log -S
查找字符串中的所有提交 '8.4.4'
在文件中添加或删除 Library/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存储库中。
一个注意事项:当签出旧提交时,您暂时降级自制软件安装。因此,您应该小心,因为自制程序中的某些命令可能与最新版本不同。
这不是太难,你可以将其上传到 家酿的版本。
如果你想保留某个版本,比如postgresql,那么当你做自然时,不要让它更新 brew update; brew upgrade
程序,你可以 销 一个公式:
$ brew pin postgresql
固定公式列于 /usr/local/Library/PinnedKegs/
一旦你想引入最新的更改和更新,你就可以 拔掉闩 它再次:
$ brew unpin postgresql
现在Homebrew / versions已被弃用,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
现在有一种更简单的方法来安装以前安装的旧版本的公式。简单地使用
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
只是更改符号链接,它非常快。请参阅Homebrew Wiki下的更多文档 外部命令。
更新:2015年1月15日
brew install <url>
(可能必须 brew unlink
首先,例如 brew unlink docker
)brew switch docker 1.3.3
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
我通过开始按照搜索repo和a的步骤找到了这个解决方案 评论 在回购中。
经过一番研究发现,有人收集了一批稀有的配方奶粉。
如果您正在寻找MySQL 5.1.x,请尝试一下。
brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb
按照@ halfcube的建议,这非常有效:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
您可以使用在公式的历史记录中标识公式和特定提交的策略,该策略与您要安装的软件包的版本相匹配。
按 t
在键盘上激活文件查找器。
确定一个看起来最相关的公式,也许: Formula/mysql.rb
,将您带到forumla文件位置: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb。
单击查看修订历史记录 History
按钮,位于 https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb。如果您对MySQL 5.7.10感兴趣,可能需要单击5.7.11之前的最新版本,该版本导航到GitHub提交:
注意:如果在浏览器中未加载提交历史记录,则可能必须根据GitHub的建议在控制台中查看提交历史记录。如果您有兴趣在GitHub上看到该提交,请替换URL中的提交SHA。或者,跳到下面的步骤7。
应用提交后,单击“查看”按钮以查看mysql.rb文件的源。
然后单击“原始”按钮以查看原始源。
复制URL。或者,使用自己构建URL mysql.rb
文件名以标识您的公式和该公式的特定版本(由下面的URL中的提交SHA标识)。
安装它 $ brew install [URL from step 7]
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew/c77882756a832ac1d87e7396c114158e5619016c/Library/Formula/mysql.rb
注意:此答案已更新,以说明删除braumeister.org网站的原因。同样的原则适用,braumeister只是提供了一种初学者友好的方式来导航公式版本。
我只是用Homebrew回到Maven 2.2.1,因为简单 brew install maven
安装Maven 3.0.3。
首先,你必须离开maven目录
$ brew unlink maven
使用brew tap命令
$ brew tap homebrew / versions 克隆到'/ usr / local / Library / Taps / homebrew-versions'...... remote:计数对象:590,完成。 remote:压缩对象:100%(265/265),完成。 远程:总计590(delta 362),重用549(delta 325) 接收对象:100%(590/590),117.49 KiB | 79 KiB / s,完成了。 解决增量:100%(362/362),完成。 点击50公式
现在您可以安装maven2公式:
$ brew install 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 --version 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项目重组了他们的回购。更新了此答案以解释此更改。
基于描述的工作流程 @tschundeee 和 @ Debilski的更新1,我自动化程序并添加了清理 这个脚本。
下载它把它放在你的道路上 brewv <formula_name> <wanted_version>
。对于特定的OP,它将是:
cd path/to/downloaded/script/
./brewv postgresql 8.4.4
:)
在最新版本的自制软件(撰写本文时为0.9.5)中,您将要安装自制软件桶的特定配方。例:
$ brew search mongodb
mongodb mongodb24 mongodb26
然后就做 brew install mongodb26
像平常一样。
如果您已安装最新版本,请确保取消链接最新版本并链接所需版本: brew unlink mongodb && brew link mongodb26
。