在 mac OS 中使用 brew install 默认安装的软件都是最新版本的。有的时候我们需要安装指定版本,应该怎么做呢?
下面以 Gradle 为例演示一下安装过程以及版本切换的方法。
安装源
第一步,查看软件的信息
使用命令 brew info gradle
输出内容如下:
gradle: stable 4.9
Build system based on the Groovy language
https://www.gradle.org/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/gradle.rb
==> Requirements
Required: java >= 1.7 ✔
==> Options
--with-all
Installs Javadoc, examples, and source in addition to the binaries
可以看到,我这里是已经安装了 gradle 4.9 版本,第一行显示了 brew 使用的 bottled 里的 gradle 为 4.9 版本,在第 4 行中有路径。而现在需要安装的版本为 4.1。
第二步,修改安装源信息
查看文件sha256
openssl dgst -sha256 /Users/admin/Downloads/gradle-4.1-all.zip
我们将第 5 行显示的 From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/gradle.rb
文件下载到本地,然后编辑文件
class Gradle < Formula
desc "Build system based on the Groovy language"
homepage "https://www.gradle.org/"
url "https://services.gradle.org/distributions/gradle-4.1-all.zip"
sha256 "5c07b3bac2209fbc98fb1fdf6fd831f72429cdf8c503807404eae03d8c8099e5"
bottle :unneeded
option "with-all", "Installs Javadoc, examples, and source in addition to the binaries"
depends_on :java => "1.7+"
def install
rm_f Dir["bin/*.bat"]
libexec.install %w[bin lib]
libexec.install %w[docs media samples src] if build.with? "all"
(bin/"gradle").write_env_script libexec/"bin/gradle", Language::Java.overridable_java_home_env
end
test do
assert_match version.to_s, shell_output("#{bin}/gradle --version")
end
end
我们修改第4行 url 和第5行 sha256,将这两个关键信息修改,即可安装指定版本。可以从 https://gradle.org/releases/ 网站查询到 gradle v4.1 的相关信息,修改成如上内容并保存
其实这里的 url 可以改成任意地址,只要能下载到指定的 zip 文件即可。比如使用墙内的或本地的 gradle-3.5.1-all.zip 下载地址等等
第三步,使用修改过的安装源安装
然后我们执行安装命令 brew install ~/Downloads/gradle.rb
,这里指定的 ruby 文件是我们修改后的文件路径,如果安装提示如下错误:
Error: gradle 4.9 is already installed
To install 4.1, first run `brew unlink gradle`
只需安装提示执行brew unlink gradle
,然后再次执行安装命令brew install ~/Downloads/gradle.rb
即可。
安装成功后执行命令gradle -v
查看当前生效的版本
软件版本切换
查看软件信息
执行命令brew info gradle
可以查看已安装的信息
/usr/local/Cellar/gradle/4.1 (169 files, 71.7MB) *
/usr/local/Cellar/gradle/4.9 (377 files, 249.7MB)
切换版本
如果我们需要切换成 4.1 的话,我们就使用
brew switch gradle 4.1
命令,然后执行gradle -v
查看当前生效的版本信息