2016年11月6日

Mac - 透過 Homebrew Cask 安裝特定版本套件 ( Use Homebrew Cask to downgrade or install specific version of package manually )

Homebrew 是一個 Mac OS 上運行的套件管理工具,其功能相當完備。但 Homebrew Cask 的指令較沒那麼完善,且很多軟體又都是需要靠它來安裝。因此本篇將介紹如何透過 Homebrew Cask 來安裝特定版本套件,本文章將以安裝 VirtualBox 為範例。( 其他 Mac 相關教學可以參考本篇整理 。If you want to read this article in English, you can visit here )



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

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

# 編輯 VirtualBox 檔案
brew cask eidt virtualbox
若你在編輯之前就將軟體移除,它則不會幫你開啟。這時候你就必須自己去找出 Cask 檔案,例如: /usr/local/Homebrew/Library/Taps/caskroom/homebrew-cask/Casks/virtualbox.rb


動手修改 Cask 檔案:
按照上面的方式將檔案開啟後,我們需要手動改變版本參數,通常需要修改的地方是 versionsha256 ( 仍以 VirtualBox 為例 ),內容如下:
# 最新版本
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'

  ... 省略部分內容

修改 version 與 sha256 至你想要的版本,如下:
# 指定至 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'

  ... 省略部分內容



重新安裝軟體:
接著重新安裝套件,指令如下:
# 先移除,再安裝
brew cask uninstall --force <套件名稱>; brew cask install <套件名稱>;

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


Environment :
  ・ Mac OS X

Reference :
  ・ Homebrew Cask


熱門文章