Existuje množstvo návodov na downgrade balíčka v Brew, no nejako žiadny z tých, čo som skúšal, som nenašiel obzvlášť nápomocný, nieto ešte funkčný a priamočiary. Preto som ich pomiešal dohromady a zostavil Ďalší návod na downgrade brew balíčka™, ktorý aspoň funguje pre moje potreby. Začnite klonovaním repozitára brew core:

git clone https://github.com/Homebrew/homebrew-core

Teraz prejdite do správneho priečinka, kde sa nachádza očakávaná formula, hlboko vnútri priečinka podľa písmena:

cd homebrew-core/Formula/n

Získajte správny hash commitu obsahujúceho požadovanú verziu. Ak chýba tig, nainštalujte ho cez brew:

tig neovim.rb

Môžete buď ručne napísať krátky hash, alebo ho skopírovať pomocou nasledujúcej klávesovej skratky – upravte ~/.config/tig/config:

bind generic 9 !@sh -c "git rev-parse --short %(commit) | pbcopy"

Na požadovanom commite stlačte 9 a krátky hash commitu bude vo vašej schránke. Teraz checkoutnite daný commit vložením alebo napísaním hashu:

git checkout 1a2b3b4d

A tu je tá mágia – nainštalujte balíček:

brew install neovim.rb

Posledná vec, ktorú môžete urobiť, je pinnutie balíčka:

brew pin neovim

Pinnutie zabráni budúcemu upgradu balíčka. Zoznam pinnutých balíčkov môžete skontrolovať cez:

brew list --pinned

Teraz používajte brew ako predtým. Ak chcete automatický upgrade balíčka, jednoducho ho odpiňte:

brew unpin neovim

Jednoduché.

Riešenie problémov #

Uistite sa, že neurobíte chybu vynechaním prípony .rb. Ďalšia vec, na ktorú mi trvalo pomerne dlho prísť, bolo to, že musíte skutočne cd do obsahujúceho priečinka a nepoužívať žiadnu cestu v brew install, inými slovami:

git clone https://github.com/Homebrew/homebrew-core
cd homebrew-core
brew install Formula/n/neovim.rb

Vyššie uvedené pravdepodobne spôsobí veľmi mätúcu chybu:

==> Tapping formula/n
Cloning into '/opt/homebrew/Library/Taps/formula/homebrew-n'...
Username for 'https://github.com':

Dôvodom tejto chyby je, že repozitár https://github.com/Formula/homebrew-n samozrejme verejne neexistuje. Keby taký repozitár existoval, chyba by bola pravdepodobne iná, ale ja som sa tak ďaleko nedostal. Nápovedu k problému som získal cez prepínač -dv:

brew install -dv Formula/n/neovim.rb

Ktorý produkuje trochu viac detailov o prebiehajúcej operácii:

/opt/homebrew/Library/Homebrew/brew.rb (Formulary::FromTapLoader): loading Formula/n/neovim.rb
/usr/bin/env /opt/homebrew/Library/Homebrew/shims/shared/git --version
==> Tapping formula/n
git clone https://github.com/Formula/homebrew-n /opt/homebrew/Library/Taps/formula/homebrew-n --origin=origin --template= --config core.fsmonitor=false
Cloning into '/opt/homebrew/Library/Taps/formula/homebrew-n'...
Username for 'https://github.com':

Tretí bežný problém, na ktorý som narazil, vyzerá takto:

$ brew install zola.rb
==> Downloading https://formulae.brew.sh/api/formula.jws.json
##O=-#     #
Error: Failed to load cask: zola.rb
Cask 'zola' is unreadable: wrong constant name #<Class:0x0000000122484108>
Warning: Treating zola.rb as a formula.
Error: zola 0.19.1 is already installed
To install 0.18.0, first run:
  brew unlink zola

Ale spustenie toho, čo chyba navrhuje, mi stačilo na vyriešenie problému:

brew unlink zola
brew install zola.rb

Príjemné používanie!

Odkazy #