Downgrade Homebrew Cask installed version of package
The techniques herein have been ported from the fantastic blog post located here
Cask file
You can modify a cask file so it will force brew to install an older version of a package
# List installed packages
brew cask list
# Edit Cask file
brew cask edit <PackageName>
# e.g. Edit Ansible Cask file
brew cask edit ansible
The command might not work if you already removed the package. In this case, you have to open the Cask file by yourself.
Modify the Cask file
Now, we are going to specify the version of package by modifying the Cask file. All we have to do is to change the values of the version and the sha256. Take a look at the latest Cask file (still take Ansible as an example):
class Ansible < Formula
include Language::Python::Virtualenv
desc "Automate deployment, configuration, and upgrading"
homepage "https://www.ansible.com/"
url "https://releases.ansible.com/ansible/ansible-2.9.3.tar.gz"
sha256 "2f83f8ccc50640aa41a24f6e7757ac062f83f8ccc50640aa41a24f6e7757ac06"
revision 1
head "https://github.com/ansible/ansible.git", :branch => "devel"
bottle do
cellar :any
sha256 "2f83f8ccc50640aa41a24f6e7757ac062f83f8ccc50640aa41a24f6e7757ac06" => :catalina
sha256 "97df95880897d23f6f56fb69d9772aa07f7693a6a61adcf2cc799b7733203081" => :mojave
sha256 "1a645b578dd08bc43e62add53647f00e0ebd38a032057ca6065da08c3ec81c49" => :high_sierra
end
Below is a modified example:
class Ansible < Formula
include Language::Python::Virtualenv
desc "Automate deployment, configuration, and upgrading"
homepage "https://www.ansible.com/"
url "https://releases.ansible.com/ansible/ansible-2.9.2.tar.gz"
sha256 "2f83f8ccc50640aa41a24f6e7757ac06b0ee6189fdcaacab68851771d3b42f3a"
revision 1
head "https://github.com/ansible/ansible.git", :branch => "devel"
bottle do
cellar :any
sha256 "2f83f8ccc50640aa41a24f6e7757ac06b0ee6189fdcaacab68851771d3b42f3a" => :catalina
sha256 "97df95880897d23f6f56fb69d9772aa07f7693a6a61adcf2cc799b7733203081" => :mojave
sha256 "1a645b578dd08bc43e62add53647f00e0ebd38a032057ca6065da08c3ec81c49" => :high_sierra
end
Reinstall the package
Once modified the Cask file, let’s reinstall the package:
Reinstall a package
brew cask uninstall --force <PackageName>; brew cask install <PackageName>;
Reinstall the VirtualBox
brew cask uninstall --force virtualbox; brew cask install virtualbox;