Homebrewで古いバージョンのHugoをインストールする方法

f:id:ksmxxxxxx:20220306005839p:plain
Hugo
Hugoで古いバーションをインストールする必要があったので、やり方をメモ。

HomebrewのFormulaによっては、Formula名@numberみたいになってて、そのままbrew install formula_name@ver_numみたいにインストールできるものもあるけど、ないものもある。

HugoはバージョンごとにFormulaになってなかったので、Formulaのgit logで古いバージョンをチェックアウトしてインストールするようにした。

なお、ログはiTerm2で保存していたログから転記しているので、もしかしたらちょっと変な事になってるところがあるかも知れない…そこはご愛嬌ということで 🙏

% brew info hugo
hugo: stable 0.80.0 (bottled), HEAD
Configurable static site generator
https://gohugo.io/
/usr/local/Cellar/hugo/0.80.0 (44 files, 83.2MB) *
  Poured from bottle on 2021-02-08 at 17:32:48
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/hugo.rb
License: Apache-2.0
==> Dependencies
Build: go ✘
==> Options
--HEAD
Install HEAD version
==> Analytics
install: 11,117 (30 days), 52,112 (90 days), 278,612 (365 days)
install-on-request: 11,096 (30 days), 51,856 (90 days), 273,940 (365 days)
build-error: 0 (30 days)

最新版の0.8が入ってる。これを0.4.7にしたい。

まずはHomebrewのFormulaが入ってるディレクトリに移動

% cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula

hugo.rbのgit logして、インストールしたいバージョンのcommitを探す。

% git log hugo.rb
commit e2c833d326c45d9aaf4e26af6dd8b2f31564dc04
Author: Rylan Polster <rslpolster@gmail.com>
Date:   Wed Feb 3 00:13:48 2021 -0500

    formulae: use new bottle syntax

commit 85d9fd62e65fe460b941a84199c43958a676decc
Author: FX Coudert <fxcoudert@gmail.com>
Date:   Fri Jan 1 10:04:25 2021 +0000

    hugo: update 0.80.0 bottle.

commit 3ad9b27450e9b2a841329f79ebc83d6fea2a54bf
Author: Rui Chen <rui@chenrui.dev>
Date:   Fri Jan 1 01:26:38 2021 -0500

    hugo 0.80.0

    Closes #68115.

    Signed-off-by: Dawid Dziurla <dawidd0811@gmail.com>
    Signed-off-by: FX Coudert <fxcoudert@gmail.com>

:::::::::::::::: 中略 :::::::::::::::::::::::::::::::::::::::::::::

commit ccd09f224b5e002c28e584851410e2add8dd51bc
Author: BrewTestBot <homebrew-test-bot@lists.sfconservancy.org>
Date:   Mon Aug 20 16:48:39 2018 +0000

    hugo: update 0.47.1 bottle.

commit 5d19d42b4924417a120b40d735ecbcd542a102fe
Author: BrewTestBot <homebrew-test-bot@lists.sfconservancy.org>
Date:   Mon Aug 20 09:46:39 2018 +0000

    hugo: update 0.47.1 bottle.

commit 71d5ecee247e2bc1b119323f122335beede9cbc4
Author: Camille Roux <25977+camilleroux@users.noreply.github.com>
Date:   Mon Aug 20 11:34:10 2018 +0200

    hugo 0.47.1

    Closes #31297.

    Signed-off-by: Chongyu Zhu <i@lembacon.com>

commit 0e19a6d3fc87e392de0882c380422fcf8ae03a19
Author: BrewTestBot <homebrew-test-bot@lists.sfconservancy.org>
Date:   Mon Aug 20 08:22:12 2018 +0000

    hugo: update 0.47 bottle.

commit d38251ff601b12428501d75c5b8c4c85dc076baf
Author: BrewTestBot <homebrew-test-bot@lists.sfconservancy.org>
Date:   Fri Aug 17 13:26:10 2018 +0000

    hugo: update 0.47 bottle.

commit 40dc46cc743bcf08dc9199d3974f74f7b3f02da7
Author: Camille Roux <25977+camilleroux@users.noreply.github.com>
Date:   Fri Aug 17 15:14:37 2018 +0200

    hugo 0.47

    Closes #31209.

    Signed-off-by: Dominyk Tiller <dominyktiller@gmail.com>

0.47系だと、ccd09f224b5e002c28e584851410e2add8dd51bcあたりのcommitが一番最後っぽいので、これをインストールすることにする。

hugo.rbgit checkout commit_numberでチェックアウトする。

% git checkout ccd09f224b5e002c28e584851410e2add8dd51bc hugo.rb

続いてbrew install hugo

% brew install hugo
Updating Homebrew...
==> Auto-updated Homebrew!
Updated Homebrew from f416f8b54 to 320bccb38.
Updated 5 taps (homebrew/cask-versions, homebrew/core, homebrew/cask, homebrew/bundle and homebrew/services).
==> New Formulae
datalad                                      libmd                                        rtl_433                                      xcprojectlint
==> Updated Formulae
Updated 413 formulae.
==> Renamed Formulae
ht-rust -> xh
==> New Casks
astah-uml                audiogridder-server      curseforge               google-drive             lightform                opgg                     webull
audiogridder-plugin      cakebrewjs               forticlient-vpn          imdone                   mubu                     parsify
==> Updated Casks
Updated 226 casks.
==> Deleted Casks
racket-cs
==> Homebrew was updated to version 3.0.1
The changelog can be found at:
  https://github.com/Homebrew/brew/releases/tag/3.0.1
==> Downloading https://homebrew.bintray.com/bottles/hugo-0.47.1.mojave.bottle.tar.gz
==> Downloading from https://d29vzk4ow07wi7.cloudfront.net/632d57305e1d9dc12941b5d49bcc015cc3208b959fc27561b25fa153d9f99e6b?response-content-disposition=attachment%3Bfilename%3D%
######################################################################## 100.0%
Error: hugo 0.80.0 is already installed
To install 0.47.1, first run:
  brew unlink hugo

すでに0.8が入っていると怒られるので、brew unlinkする。
brew install hugoを再トライ。

% brew unlink hugo
Unlinking /usr/local/Cellar/hugo/0.80.0... 40 symlinks removed.
% brew install hugo
==> Downloading https://homebrew.bintray.com/bottles/hugo-0.47.1.mojave.bottle.tar.gz
Already downloaded: /Users/ksm/Library/Caches/Homebrew/downloads/ef41cd92034c2581512a91024dce3a69d68ae6766e6f4df741ed52727d0c97a6--hugo-0.47.1.mojave.bottle.tar.gz
==> Pouring hugo-0.47.1.mojave.bottle.tar.gz
🍺  /usr/local/Cellar/hugo/0.47.1: 32 files, 56.3MB
% brew info hugo
hugo: stable 0.47.1 (bottled), HEAD
Configurable static site generator
https://gohugo.io/
/usr/local/Cellar/hugo/0.47.1 (32 files, 56.3MB) *
  Poured from bottle on 2021-02-15 at 11:17:26
/usr/local/Cellar/hugo/0.80.0 (44 files, 83.2MB)
  Poured from bottle on 2021-02-08 at 17:32:48
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/hugo.rb
==> Dependencies
Build: dep ✘, go ✘
==> Options
--HEAD
Install HEAD version
==> Analytics
install: 11,117 (30 days), 52,112 (90 days), 278,612 (365 days)
install-on-request: 11,096 (30 days), 51,856 (90 days), 273,940 (365 days)
build-error: 0 (30 days)

基本的にソフトウェアって最新を使ったほうが良いと思うほうなんだけど……仕事だとどうしても(政治的という大人の事情で)古いバージョンのものを使うことになるので…(不服)。
今回hugoでやったけど、ほかのFormulaでもできると思う。