haku-maiのブログ

インフラエンジニアですが、アプリも作ります。

 【mac issue】M1 MacBook Airの環境セットアップ(zsh/pyenv/python/Homebrew/docker/他ansibleでセットアップ)

mac issue系

  • 自分のメモようなので雑です。

本記事で行うこと

環境

$ sw_vers
ProductName:    macOS
ProductVersion: 11.1
BuildVersion:   20C69
$ uname -m
arm64

まとめ

項目 セットアップ方法
Homebrew&git Homebrewセットアップ
gitセットアップ gitセットアップ
vscode m1 viscodeインストール
iTerm2 iTerm2インストール
pyenv/python3.9 pyenv/python3.9インストール
ansible ansibleインストール
ansible(chrome/firefox/その他諸々) ansible実行
zsh zsh
docker docker m1 preview
node.js nvm/node.jsインストール
golang golang install

Homebrewセットアップ

公式ページ:https://brew.sh/index_ja.html - ※ちなみにgitも同時にインストールしてくれる

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
$ export PATH=$PATH:/opt/homebrew/bin:/opt/homebrew/sbin
$ brew doctor
Your system is ready to brew.

$ vi ~/.zshrc

gitセットアップ

$ git --version
git version 2.24.3 (Apple Git-128)

$ git config --global user.name "{username}"
$ git config --global user.email "{email}"

promptにgit表示させる git/contrib/completion at master · git/git · GitHub

$ mkdir ~/.zsh
$ cd ~/.zsh
$ curl -O https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh
$ curl -O https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
$ ls -l
total 2952
-rw-r--r--  1 haku-mai  staff  1058991  1 31 16:05 git-completion.bash
-rw-r--r--  1 haku-mai  staff   174722  1 31 15:55 git-completion.zsh
-rw-r--r--  1 haku-mai  staff   271156  1 31 15:57 git-prompt.sh

$ vi ~/.zshrc
# Git
fpath=(~/.zsh $fpath)
if [ -f ${HOME}/.zsh/git-completion.zsh ]; then
       zstyle ':completion:*:*:git:*' script ~/.zsh/git-completion.zsh
fi
if [ -f ${HOME}/.zsh/git-prompt.sh ]; then
       source ${HOME}/.zsh/git-prompt.sh
fi
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWUNTRACKEDFILES=true
GIT_PS1_SHOWSTASHSTATE=true
GIT_PS1_SHOWUPSTREAM=auto
setopt PROMPT_SUBST ; PS1='[%n@ %c$(__git_ps1 " (%s)")]$ '

viscodeインストール (4/6追記)

vscodegithubのアカウントを連携していくことで設定が共有できる。
settings.jsonを今までgit管理していたが不要になり本当に楽になった。
Download Visual Studio Code - Mac, Linux, Windows

正式対応したのでUniversal版をインストール f:id:n-guitar:20210406215613p:plain:w600

codeコマンドを使いたいのでpath設定
f:id:n-guitar:20210131151710p:plain:w300

iTerm2インストール

以下をダウンロード&インストール
Downloads - iTerm2 - Mac OS Terminal Replacement

pyenv/python3.9インストール

基本的にpythonプログラムを書くときはpyenvを利用します。
m1に対応しているのはpython3.9.1からになります。
Python Release Python 3.9.1 | Python.org

$ brew install pyenv
# pyenv
eval "$(pyenv init -)"
$ pyenv install 3.9.1
$ pyenv global 3.9.1
$ pyenv versions
  system
* 3.9.1 (set by /Users/haku-mai/.pyenv/version)
$ vi ~/.zshrc
# pyenv
eval "$(pyenv init -)"
export PATH=$HOME/.pyenv/shims:$PATH

ansibleインストール

※pyenv環境でansibleを使いたかったがpipインストールエラーとなる。
デバッグに時間がかかりそうなので、homebrewでインストールする。
homebrewでインストールできるansibleはarm版に対応していました。

$ brew install ansible
$ ansible --version
ansible 2.10.5
  config file = None
  configured module search path = ['/Users/haku-mai/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /opt/homebrew/Cellar/ansible/2.10.6/libexec/lib/python3.9/site-packages/ansible
  executable location = /opt/homebrew/bin/ansible
  python version = 3.9.1 (default, Jan  8 2021, 12:11:08) [Clang 12.0.0 (clang-1200.0.32.28)]

ansible実行

GitHub - n-guitar/macbook-setup

$ git clone -b m1-macbook-air https://github.com/n-guitar/macbook-setup.git
$ $ ansible-playbook -i inventory mac_setup.yml

karabiner

左右のコマンドキーで入力切り替え。
Karabiner-Elements
f:id:n-guitar:20210131211121p:plain:w600

zsh

以下を利用。 macbook-setup/.zshrc at m1-macbook-air · n-guitar/macbook-setup · GitHub

$ vi ~/. zshrc
# 補完機能
autoload -U compinit
compinit

# 色を利用
autoload -Uz colors
colors

# historyの重複削除
setopt histignorealldups
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000

# よく使うAlias
alias ll='ls -la'
## arm版vscodeがstableになるまで
alias code='code-insiders'

# homebrew
export PATH=$PATH:/opt/homebrew/bin:/opt/homebrew/sbin

# Git
fpath=(~/.zsh $fpath)
if [ -f ${HOME}/.zsh/git-completion.zsh ]; then
       zstyle ':completion:*:*:git:*' script ~/.zsh/git-completion.zsh
fi
if [ -f ${HOME}/.zsh/git-prompt.sh ]; then
       source ${HOME}/.zsh/git-prompt.sh
fi
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWUNTRACKEDFILES=true
GIT_PS1_SHOWSTASHSTATE=true
GIT_PS1_SHOWUPSTREAM=auto
setopt PROMPT_SUBST ; PS1='[%n@ %c$(__git_ps1 " (%s)")]
$ '

# pyenv
eval "$(pyenv init -)"
export PATH=$HOME/.pyenv/shims:$PATH

2021/2/10追記 historyからコマンド補完

以下ツールを利用
https://github.com/zsh-users/zsh-autosuggestions/blob/master/INSTALL.md

$ git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions
$ vi ~/. zshrc
<中略>

# history補完
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh

2021/3/2追記 nvm

# vnm
export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && . "/opt/homebrew/opt/nvm/nvm.sh"  # This loads nvm
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && . "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion

2021/6/26追記 nvm

# node
export PATH=$HOME/.nodebrew/current/bin:$PATH

# kubectl
[[ /usr/local/bin/kubectl ]] && source <(kubectl completion zsh)

# goenv
export GOENV_ROOT="$HOME/.goenv"
export PATH="$GOENV_ROOT/bin:$PATH"

docker m1 preview

以下previewページからダウンロード
2021/2/6時点で、問題なく動作しますね。
www.docker.com
f:id:n-guitar:20210206150703p:plain:w600

$ docker --version
Docker version 20.10.1, build 831ebeae96

$ docker-compose --version
docker-compose version 1.27.4, build 40524192

※docker-composeも同時にインストールされるようになったんですね。楽。

nvm/node.js

nvm

$ brew install nvm
$ mkdir ~/.nvm

zshにpath追記。以下参照
zshに追記

$ nvm --version
0.37.2

node.js

2021/3/2時点で以下を見ると正式サポートはしていないっぽい。
15.x上のソースからbuildしてつかえよって感じ。
Apple Silicon Support · Issue #37309 · nodejs/node · GitHub

LTSがないので、現時点の最新v15.10.0を入れる

$ nvm ls-remote |grep v15
        v15.0.0
        v15.0.1
        v15.1.0
        v15.2.0
        v15.2.1
        v15.3.0
        v15.4.0
        v15.5.0
        v15.5.1
        v15.6.0
        v15.7.0
        v15.8.0
        v15.9.0
       v15.10.0
# sourceからbuildする。10分程度かかる。
$ nvm install  v15.10.0
・・・
Now using node v15.10.0 (npm v7.5.3)
Creating default alias: default -> v15.10.0

$ node --version
v15.10.0

golang/goenv

公式手順 goenv/INSTALL.md at master · syndbg/goenv · GitHub

goenv install

$ git clone https://github.com/syndbg/goenv.git ~/.goenv

以下追記 $ vi ~/. zshrc

export GOENV_ROOT="$HOME/.goenv"
export PATH="$GOENV_ROOT/bin:$PATH"
eval "$(goenv init -)"
export GOPATH="$HOME/go"
export PATH="$GOROOT/bin:$PATH"
export PATH="$PATH:$GOPATH/bin"

$ exec $SHELL

golang install

1.16以上がM1対応。

$ goenv install --list
$ goenv install 1.16.4
Downloading go1.16.4.darwin-arm64.tar.gz...
-> https://golang.org/dl/go1.16.4.darwin-arm64.tar.gz
Installing Go Darwin arm 1.16.4...
Installed Go Darwin arm 1.16.4 to /Users/haku-mai/.goenv/versions/1.16.4

$ goenv local 1.16.4
$ go version
go version go1.16.4 darwin/arm64

適時追加