XiaO

brew switch

XiaO / 2022-01-21


当需要在软件的不同版本之间快速切换时,brew switch formula version,用起来着实方便。然而,Homebrew 更新至 2.6.0 版本后,brew switch 命令被抛弃,其相应的功能也一同死翘翘了。

官方对一些事物的抛弃有其「正当」的理由,而「愚众」对自己的需求有自己的定义。

那么,在 brew switch 被抛弃而官方又没有给出一个更好的方案时,就只能想办法「恢复」该命令了。用时下流行的话说,就是「又不是不能用」。借用网友维护的包含旧版本 Homebrew 内核命令的仓库 laggardkernel/homebrew-tap

安装 tap 源

% brew tap user/repo # install a given tap, repo should be named with homebrew-repo
% brew untap user/repo # removes the given tap

% brew tap laggardkernel/tap # 安装 laggardkernel/tap 源

% brew switch --help # 查看命令

tap 源 可简单理解为 GitHub 上的维护者,不同的 tap 源安装在 /usr/local/Homebrew/Library/Taps/ 文件夹中,譬如,如下我所用到的 tap 源

├── beeftornado
│  └── homebrew-rmtree
├── brewsci
│   └── homebrew-bio
├── buo
│   └── homebrew-cask-upgrade
├── emeryberger
│   └── homebrew-hoard
├── homebrew
│   ├── homebrew-bundle
│   ├── homebrew-cask
│   ├── homebrew-cask-fonts
│   ├── homebrew-cask-versions
│   └── homebrew-core
├── laggardkernel # 新安装的 tap 源
│   └── homebrew-tap
└── yt-dlp
    └── homebrew-taps

安装特定版本软件

% brew edit AppName # 打开 formula

sha256 :no_check # 编辑 formula 中的 SHA 值为 no_check

安装 0.89.4 版本的 Hugo

% brew edit hugo

# 修改之前的版本 0.92.0
url "https://github.com/gohugoio/hugo/archive/v0.92.0.tar.gz"
sha256 "3ac140757a7322f0a7511d75fb3b1e77e6a0f0c6e4ea1b0afdbebc00e0d0a7d1"

# 修改之后的版本 0.89.4
url https://github.com/gohugoio/hugo/archive/refs/tags/v0.89.4.tar.gz
sha256 :no_check 

% brew unlink hugo # unlink 目前已安装的 Hugo 版本 0.92.0
% brew install --build-from-source hugo # 通过本地源代码编译的方式安装修改之后的版本 0.89.4
% brew pin hugo # 锁定该版本,防止其更新

% brew unpin hugo # 解除锁定

软件版本切换

% brew list --versions hugo  # 查看现在所有已安装的 Hugo 版本
hugo 0.89.4 0.92.0

% brew switch hugo 0.92.0 # 切换到 0.92.0 版
% brew switch hugo 0.89.4 # 切换到 0.89.4 版

% hugo version # 查看现在使用的版本

Homebrew cheatsheet

% brew install hugo         # Install a package
% brew uninstall hugo       # Remove/Uninstall a package
% brew upgrade hugo         # Upgrade a package
% brew unlink hugo          # Unlink
% brew link hugo            # Link
% brew list --versions hugo # See what versions are installed
% brew switch hugo 0.89.4   # Change versions

% brew info hugo            # List versions, caveats, etc
% brew cleanup hugo         # Remove old versions
% brew edit hugo            # Edit this formula
% brew cat hugo             # Print this formula
% brew home hugo            # Open homepage
% brew search hugo          # Search for formulas

% brew install --cask librewolf # Install the LibreWolf browser
% brew list --cask              # List installed applications

% brew update           # Update brew and cask
% brew upgrade          # Upgrade all packages
% brew list             # List installed
% brew outdated         # What’s due for upgrades?
% brew doctor           # Diagnose brew issues