2020年12月11日 星期五

MacOS Git auto completion, bash and zsh

最近換電腦在安裝 git auto completion,按照之前的設定使用 brew install bash-completion,但怎麼做都沒用,後來才發現,原來 macOS terminal 的 default login shell 從 2019 的 Catalina 版本就已經改成 Zsh

In 2019, macOS Catalina adopted Zsh as the default login shell, replacing the aging GPLv2 licensed version of Bash, and when Bash is run interactively on Catalina, a warning is shown by default.

那解決方式有三種

  1. 將 default login shell 改回 bash
  2. 改為使用 zsh-completions
  3. 使用 zsh 自帶的 tab-completion library

第一種方式怎麼改呢?
要進入 系統偏好設定 -> 使用者與群組 按右下角解除鎖頭後,在使用者上按右鍵,點選進階選項,就可以看到登入 shell 的下拉選單。





第二種方式其實就是 brew install zsh-completions,官方的教學就滿清楚的,請參考這裡


第三種是只要在 ~/.zshrc 的檔案裡加上這一行,再重啟 terminal 就好了。

autoload -Uz compinit && compinit

如果不行就試試 force rebuild zcompdump

rm -f ~/.zcompdump; compinit

2020年12月9日 星期三

Homebrew - 如何安裝舊版套件

Homebrew 是一款軟體套件管理系統,用以簡化 macOS 系統上的軟體安裝過程,通常安裝 package 時不指定版本會下載最新穩定版本,但有時會有需要安裝特定版本,可以先利用 search 找找看是否在 Homebrew Formulae 上有提供 

$ brew search postgresql

接著就可以透過 @ 指定安裝版本

brew install postgresql@9.6

但如果想要的版本在 Homebrew Formulae 上找不到呢?

則可以透過進入 homebrew/core repository 檢查歷史紀錄

cd "$(brew --repo homebrew/core)"
git log master -- Formula/memcached.rb

然後可以看到如下的 commit log 資訊

commit 5ec463decefeaab3d1825b923ad2dbee73ffc6dc
Author: Adam Vandenberg <flangy@gmail.com>
Date:   Fri Apr 9 21:19:48 2010 -0700

    Update memcached to 1.4.5

接著記住所需要的 package 版本所在的 commit id,並 checkout 至該版本,然後再安裝,就可以安裝到想要的版本了

cd "$(brew --repo homebrew/core)" && git checkout 5ec463decefeaab3d1825b923ad2dbee73ffc6dc
HOMEBREW_NO_AUTO_UPDATE=1 brew install memcached

最後再將 homebrew/core repository 切回最新版本就好了

git checkout master

Reference: homebrew - how to install older versions