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!