透過 Homebrew Cask 安裝特定版本套件

Nov 5, 2016 Mac English

Homebrew Cask 是一個基於 Homebrew 的套件管理工具。但 Homebrew Cask 的指令與 Homebrew 相較之下沒那麼完善,例如在安裝特定版本的套件時會有點棘手。因此本篇將介紹如何透過 Homebrew Cask 來安裝特定版本套件,接下來以安裝 VirtualBox 為範例。



Cask 檔案

Cask 檔案 ( 或稱 Formula ) 為 Homebrew Cask 執行編譯、安裝軟體腳本的名稱,其存放位置通常是在 /usr/local/Library/Taps/caskroom/homebrew-cask/Casks/ ( 或者 /usr/local/Homebrew/Library/Taps/caskroom/homebrew-cask/Casks/ ) 底下。每一個套件都會有自己的 Cask 檔案。需要客製化自己的編譯方式或想要額外加入參數,就可以從這邊手動修改檔案。Homebrew Cask 提供指令開啟、編輯 Cask 檔案:

# 列出已安裝套件
brew cask list

# 編輯套件的 Cask 檔案
brew cask edit <套件名稱>

# 編輯 VirtualBox 檔案
brew cask eidt virtualbox

若你在編輯之前就將套件移除,它則不會幫你開啟。這時候你就必須自己去找出 Cask 檔案。

動手修改 Cask 檔案

按照上面的方式將檔案開啟後,我們需要手動改變版本參數,通常需要修改的地方是 versionsha256 ( 仍以 VirtualBox 為例 ),內容如下:

# 預設最新版本為 5.1.8
cask 'virtualbox' do
  if MacOS.version <= :lion

  ... 省略部分內容

  else
    version '5.1.8-111374'
    sha256 '2eae6eadcf2a5532979a46eb007820f8c4205bf4de1e070a4c3543e4d56e335f'
  end

  url "http://download.virtualbox.org/virtualbox/#{version.sub(%r{-.*}, '')}/VirtualBox-#{version}-OSX.dmg"
  appcast 'http://download.virtualbox.org/virtualbox/LATEST.TXT',
          checkpoint: '280bd9701a0fcbe1d7ef2e23ffede42d31db69bedaeb7b46084e450e653d8224'

  ... 省略部分內容

以下為修改後的內容:

# 更改版本從 5.1.8 至 5.0.20 
cask 'virtualbox' do
  if MacOS.version <= :lion

  ... 省略部分內容

  else
    version '5.0.20-106931'
    sha256 '804bfe75d40baf1a25ba025a07f440165868947ad2b41164ab0105cfa0fe6936'
  end

  url "http://download.virtualbox.org/virtualbox/#{version.sub(%r{-.*}, '')}/VirtualBox-#{version}-OSX.dmg"
  appcast 'http://download.virtualbox.org/virtualbox/LATEST.TXT',
          checkpoint: '804bfe75d40baf1a25ba025a07f440165868947ad2b41164ab0105cfa0fe6936'

  ... 省略部分內容


重新安裝套件

修改 Cask 檔案後,接著重新安裝套件,指令如下:

# 先移除套件,再重新安裝
brew cask uninstall --force <套件名稱>; brew cask install <套件名稱>;

# 移除 VirtualBox 再重新安裝
brew cask uninstall --force virtualbox; brew cask install virtualbox;



你也可能會喜歡:




若對於文章內容有任何建議與指正,非常歡迎你告訴我或者與我一起討論 ! :)

zeckli.devforgalaxy@gmail.com   © 2015-2019 zeckli, thanks to Jekyll and GitHub.