macOS 環境構築
更新履歴
- 2022/08/27: 2022年版からアップデート
主な内容: HomebrewとDocker(有償回避)のインストール手法を刷新
概要
新規購入したApple silicon版のmacOS上で開発環境を整えるための手順書
前提
コマンドは特別な明記がない限り、一行ずつ実行していく。
手順
oh-my-zsh
- 1. terminal.appを起動
- 2. oh-my-zsh本体のインストール
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Homebrew
- 1. terminal.appを起動
- 2. HomeBrew本体のインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
- 3. 「~/.Brewfile」として、下記内容を記入して保存する。
.Brewfile
tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/cask-versions"
tap "homebrew/core"
cask "iterm2"
cask "visual-studio-code"
cask "jetbrains-toolbox"
cask "alfred"
brew "vim"
brew "git"
brew "tig"
brew "zsh-syntax-highlighting"
brew "zsh-completions"
brew "zsh-autosuggestions"
brew "arp-scan"
brew "imagemagick"
brew "docker"
brew "docker-compose"
brew "lima"
- 4. 下記コマンドを実行してインストール
brew bundle --global
- 5. 設定をzshrcに保存
.zshrc
echo '# zsh-syntax-highlighting' >> ~/.zshrc
echo 'source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh' >> ~/.zshrc
echo '# zsh-completions' >> ~/.zshrc
echo 'if type brew &>/dev/null; then' >> ~/.zshrc
echo ' FPATH=$(brew --prefix)/share/zsh-completions:$FPATH' >> ~/.zshrc
echo ' autoload -Uz compinit' >> ~/.zshrc
echo ' compinit' >> ~/.zshrc
echo 'fi' >> ~/.zshrc
echo '# zsh-autosuggestions' >> ~/.zshrc
echo 'source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh' >> ~/.zshrc
- 6.設定の再読み込みと下処理
source ~/.zshrc
rm -f ~/.zcompdump; compinit
Docker(有償回避)
- 1. Dockerに必要なソフトウェアのインストール(brewfileで入れてなければ)
brew install lima docker docker-compose
Dockerテンプレート経由でお手軽インストール
- 2. limaのDockerテンプレートをダウンロード
curl -o docker.yaml https://raw.githubusercontent.com/lima-vm/lima/master/examples/docker.yaml
- 3. テンプレートを編集
# To run `docker` on the host (assumes docker-cli is installed):
# $ export DOCKER_HOST=$(limactl list docker --format 'unix://{{.Dir}}/sock/docker.sock')
# $ docker ...
# ===これを追記===
arch: "x86_64"
cpus: 4
memory: "4GiB"
disk: "10GiB"
# ==============
....
# writableをtrueにすると読み書きができる。
# デフォルトにも書いてある通り、「~」や「/」のみを指定してwritableをtrueにはしないこと。非常に危険。
mounts:
- location: "~"
writable: false
- location: "/tmp/lima"
writable: true
- location: "~/work"
writable: true
- location: "~/private"
writable: true
- 4. 仮想環境を新規作成
limactl start docker.yaml
# Proceed with the current configuration を選択
-
5.dockerの設定
※ 手順4の最後に出てくるものをコピペで実行。最後の行にあるdocker runは実行しない。
docker context create lima-docker --docker "host=unix:///Users/[username]/.lima/docker/sock/docker.sock"
docker context use lima-docker
- 6. dockerの動作確認
docker version
# macOS側
# Client: Docker Engine - Community
# ....
# OS/Arch: darwin/arm64
# ...
# Lima側
# Server: Docker Engine - Community
# Engine:
# ...
# OS/Arch: linux/amd64
# ...
defaultテンプレート経由のローレベル設定
- 2. limaのテンプレートをダウンロード
curl -o default.yaml https://raw.githubusercontent.com/lima-vm/lima/master/examples/default.yaml
- 3. テンプレートを編集
# ===================================================================== #
# BASIC CONFIGURATION
# ===================================================================== #
# Arch: "default", "x86_64", "aarch64".
# "default" corresponds to the host architecture.
arch: "null" # ← defaultをx86_64に書き換える
....
# writableをtrueにすると読み書きができる。
# デフォルトにも書いてある通り、「~」や「/」のみを指定してwritableをtrueにはしないこと。非常に危険。
mounts:
- location: "~"
writable: false
- location: "/tmp/lima"
writable: true
- location: "~/work"
writable: true
- location: "~/private"
writable: true
- 4. 仮想環境を新規作成
limactl start default.yaml
# Proceed with the current configuration を選択
# INFO[0036] READY. Run `limactl shell ...まで待機
- 5. 仮想環境が動いていることを確認し、インスタンス名を控えておく。
インスタンス名:
limactl list
# NAME STATUS SSH ARCH DIR
# default Running 127.0.0.1:60022 x86_64 /Users/[username]/.lima/default
# インスタンス名は、 NAME列の名前
- 6. Dockerホストの設定
echo "export DOCKER_HOST='tcp://127.0.0.1:2375'" >> ~/.zshrc
source ~/.zshrc
- 7. 仮想環境にDockerをインストール
curl -fsSL https://get.docker.com | limactl shell [インスタンス名]
- 8. 仮想環境のユーザー名を控える
ユーザー名:
limactl shell [instance名] whoami
- 9. dockerグループに追加
limactl shell [instance名] sudo gpasswd -a [ユーザー名] docker
- 10. 仮想環境を再起動
limactl stop [instance名] ; sleep 5; limactl start [instance名]
- 11. 仮想環境のDockerを確認
limactl shell [instance名] docker version
- 12. dockerのdeamon.jsonを作成
limactl shell [instance名] sudo vim /etc/docker/daemon.json
- 13. 下記を追記し、保存
{"hosts": ["tcp://127.0.0.1:2375", "unix:///var/run/docker.sock"]}
- 14. dockerサービスのoverride.confを作成
limactl shell [instance名] sudo mkdir -p /etc/systemd/system/docker.service.d/
limactl shell [instance名] sudo vim /etc/systemd/system/docker.service.d/override.conf
- 15. 下記を追記し、保存
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
- 16. dockerサービスを再起動
limactl shell [instance名] sudo systemctl daemon-reload
limactl shell [instance名] sudo systemctl restart docker.service
- 17. dockerの動作確認
docker version
# macOS側
# Client: Docker Engine - Community
# ....
# OS/Arch: darwin/arm64
# ...
# Lima側
# Server: Docker Engine - Community
# Engine:
# ...
# OS/Arch: linux/amd64
# ...
その他のDockerコマンド集
- Opensearch(or Elasticsearchの為に設定変更
limactl shell [instance名] sudo sysctl -w vm.max_map_count=262144
- docker-composeバルスコマンド
docker-compose down --rmi all --volumes --remove-orphans
Docker-compose - LocalStack
- docker-composeファイル
下記ファイルを作成後、このファイルがあるディレクトリで「docker-compose up」
version: '3'
services:
localstack:
image: localstack/localstack:latest
ports:
- "127.0.0.1:4566:4566"
- "127.0.0.1:4510-4559:4510-4559"
- "127.0.0.1:443:443"
- localstackの動作確認
何かしらのAWSコマンドでエンドポイントをローカルホストにすればOK。
サービスによってポート番号が異なるので各自調べていただく。
aws s3 ls --endpoint-url=http://localhost:4566
- localstackの状態を取得
curl -s http://localhost:4566/health | jq
nodebrew
- 1. terminal.appを起動
- 2. nodebrew本体のインストール
brew install nodebrew
mkdir -p ~/.nodebrew/src
echo '# Nodebrew' >> ~/.zshrc
echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.zshrc
- 3. NodeJSの最新版を控える
NodeJS Ver:
nodebrew ls-remote
# example) v17.2.0
- 4. NodeJSの最新版をインストール
nodebrew install [NodeJS Ver]
nodebrew use [NodeJS Ver]
- 5. NodeJSのバージョン確認
node -v
SDKMAN
- 1. terminal.appを起動
- 2. SDKMAN本体のインストール
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
Java
- 1. Amazon Correttoの最新版を控える
最新版のバージョン:
sdk list java | grep amzn
#example) 17.0.1.12.1-amzn
- 2. Amazon Correttoの最新版をインストール
sdk install java [最新版のバージョン]
# globalにするのかを聞かれたら Y を入力。
# 聞かれていない場合は、下記コマンドを実行
sdk default java [最新版のバージョン]
- 3. Amazon Correttoのバージョンを確認
java -version
Sbt
- 1. Sbtの最新版を控える
最新版のバージョン:
sdk list sbt
#example) 1.5.7
- 2. Sbtの最新版をインストール
sdk install sbt [最新版のバージョン]
# globalにするのかを聞かれたら Y を入力。
# 聞かれていない場合は、下記コマンドを実行
sdk default sbt [最新版のバージョン]
- 3. Sbtのバージョンを確認
sbt about
Scala
-
1. Scalaの最新版を控える
最新版のバージョン:
sdk list scala
#example) 3.1.0
- 2. Scalaの最新版をインストール
sdk install scala [最新版のバージョン]
# globalにするのかを聞かれたら Y を入力。
# 聞かれていない場合は、下記コマンドを実行
sdk default scala [最新版のバージョン]
- 3. Scalaのバージョンを確認
scala -version
Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 1) Proceed with installation (default)← これを選ぶ
# 2) Customize installation
# 3) Cancel installation
echo '# Rust' >> ~/.zshrc
echo 'source $HOME/.cargo/env' >> ~/.zshrc
Python
brew install pyenv
echo '# Python' >> ~/.zshrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init --path)"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc
pyenv install -l
pyenv install [Pythonバージョン] # 3.10.6とか anacondaとか
pyenv global [Pythonバージョン]
python -V # バージョン確認
補足
ARP-SCAN
sudo arp-scan -I [ifconfigのインターフェイス] -l
# ex) sudo arp-scan -I en0 -l
システム設定
- キー入力の連打を有効化させる
defaults write -g ApplePressAndHoldEnabled -bool false
limaの基本コマンド
limactl ls # lima vm 一覧
limactl start xxxx(or xxxxx.yml) vm 起動
limactl stop xxxx vm 停止
limactl delete xxxx 削除
ecrの認証情報の取得
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin [accountID].dkr.ecr.ap-northeast-1.amazonaws.com
iOSバックアップ - NAS 間 シンボリックリンク
ln -s /Volumes/BackUps/Buckup /Users/${USERNAME}/Library/Application\ Support/MobileSync
Terminal.appの背景を透明にする方法
- Terminal.appの環境設定→「プロファイル」タブを選択
- 「カラーとエフェクト」をクリック
- 出てきたウィンドウの「不透明度」を50~60%に、「ブラー」を0%にする
- Terminal.appを再起動
Apple Developerの証明リスト出力
security -v find-identity