在 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
查看當前生效的版本信息