M1 iMacにインストールしたパッケージの備忘録
随時書き足していく。
homebrew
Apple Siliconに対応したhomebrewをインストール。
https://brew.shにある記載通りにインストールスクリプトを実行。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
パスを通してインストール完了。
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/xxxxx/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
anyenv
nodejsなどをバージョン管理するためにanyenvをインストール
brew install anyone
echo 'eval "$(anyenv init -)"' >> ~/.zshrc
exec $SHELL -l
anyenv install --init
anyenv系をまとめてアップデートしてくれるanyenv-updateをインストール
mkdir -p $(anyenv root)/plugins
git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
nodejs
anyenvを使ってnodenvをインストール、それからnodejsをインストールする。
anyenv install nodenv
exec $SHELL -l
nodenv install 14.17.0
nodenv global 14.17.0
14.4.0はM1対応していないようでコンパイル時にエラー。
14.17.0に変更したところ成功した。
Visual Studio Code
https://code.visualstudio.com/#alt-downloads
ここからApple Silicon版をダウンロードしてインストール。
キーバインドの変更
2021.06.05
エディタとターミナルをショートカットで行き来できるように設定変更。
http://blogtech.hatenablog.com/entry/vscode_terminal_focus
keybindings.json
[
{
"key": "ctrl+;", "command": "workbench.action.terminal.focus",
"when": "editorTextFocus"
},
{
"key": "ctrl+;", "command": "workbench.action.focusFirstEditorGroup",
"when": "terminalFocus"
}
]
インテリセンスの設定変更
2021.6.20
Enterボタンでインテリセンスの候補が決定されてしまう動作がストレスだったので、Tabでのみ決定されるように変更した。
"editor.acceptSuggestionOnEnter": "off"
Remote - SSH プラグインを追加
2021.06.05
旧メインマシン(MacBook Air)に繋いで開発したい時もあるので、Remote - SSHをインストール。
リモート側にHaskellのプラグインをインストール。
Azure Tools プラグインを追加
2021.07.10
VSCodeからAzureへのASP.NETのデプロイを試してみたかったのでインストール。
Unity
Unity Hubをインストールして最新のLTS版(2020.3.9f1)をインストール。
Apple Silicon対応とどこかに書かれていたと思うんだけど、アクティビティモニタで見るとIntelで動いてた。
試しにLTSではない最新版(2021.1.7)を入れてみたけど変わらずIntel。
あきらめてIntelで動かすことにした。
エディタは上でインストールしたVSCodeを使おうかと思ったが、VSCodeはApple Silicon、Unity本体はIntelでちゃんと動く気がしなかったので、Visual Studio for Macにしておいた。
awscli
2020/05/30
homebrewでインストール。
% brew install awscli
% aws --version
aws-cli/2.2.7 Python/3.9.5 Darwin/20.4.0 source/arm64 prompt/off
% aws configure
Haskell
関数型プログラミングの勉強用にHaskellもインストール。
しようと思ったが、まだM1 MacにNative対応していないようなので保留。
https://www.haskell.org/ghc/blog/20210401-ghc-9.2.1-alpha1-released.htmlによると次期バージョン9.2.1ではサポートされるらしい。
Apple Arcade
2021.6.20
Apple Arcadeが新規デバイス購入特典で3ヶ月間無料だったので使ってみた。
iMacの大画面でiOS向けのアプリが遊べる。
コントローラはPS4のDual Shockを利用。快適。
.NET 5.0
2021.7.10
AzureでのASP.NETアプリの開発を試してみるために.NET 5.0をインストール。
やってみてるのは下記のAzureのチュートリアル。
クイックスタート: ASP.NET Web アプリをデプロイする
チュートリアルに従って.NET 5.0をインストール。まだIntel版しかない。Apple Silicon対応は.NET 6.0から。
https://dotnet.microsoft.com/download
インストールされたのは下記
- .NET SDK 5.0.301
- .NET Runtime 5.0.7
- ASP.NET Core Runtime 5.0.7
rosetta2上で問題なく動いた。
% which dotnet
/usr/local/share/dotnet/dotnet
% dotnet --version
5.0.301
% mkdir TestConsoleApp
% cd TestConsoleApp
% dotnet new console
% dotnet run
Hello World!
Azure CLI
2021.07.11
Homebrewでazure-cliをインストール。Apple Silicon対応済み。
% brew install azure-cli
最新版を入れたら、このバグに当たってしまった。
仕方がないのでコンテナビルドだけはAzureのCouldShellで行った。
Kubernetes CLI
2021.07.14
% brew install Kubernetes-cli
AWS CDK
2021.08.09
% npm install -g aws-cdk
% cdk --version
1.117.0 (build 0047c98)
AWS eksctl
2021.08.09
% brew tap weaveworks/tap
% brew install weaveworks/tap/eksctl
% eksctl version
0.60.0
aws-mfa
2021.08.11
pip3 install aws-mfa
Docker Desktop for Apple Silicon
2021.08.12
下記からApple Silicon用のイメージをダウンロードしてインストール。
動作確認
% which docker
/usr/local/bin/docker
% ls -al /usr/local/bin/docker
lrwxr-xr-x 1 root wheel 54 8 12 09:53 /usr/local/bin/docker -> /Applications/Docker.app/Contents/Resources/bin/docker
% docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
nginxを動かしたとき
% docker run -p 8080:80 nginx
Docker buildx マルチプラットフォームビルド
docker buildxでマルチプラットフォームイメージが構築できるようにする。
ビルダーインスタンスを作成する
% docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS
desktop-linux docker
desktop-linux desktop-linux running linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
default * docker
default default running linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
% docker buildx create --name mybuilder
mybuilder
% docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS
mybuilder docker-container
mybuilder0 unix:///var/run/docker.sock inactive
desktop-linux docker
desktop-linux desktop-linux running linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
default * docker
default default running linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
% docker buildx use mybuilder
% docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS
mybuilder * docker-container
mybuilder0 unix:///var/run/docker.sock inactive
desktop-linux docker
desktop-linux desktop-linux running linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
default docker
default default running linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
ビルダーインスタンスを有効化する。(ビルド用のDockerイメージがPULLされてくる)
% docker buildx inspect --bootstrap
[+] Building 8.9s (1/1) FINISHED
=> [internal] booting buildkit 8.9s
=> => pulling image moby/buildkit:buildx-stable-1 8.3s
=> => creating container buildx_buildkit_mybuilder0 0.5s
Name: mybuilder
Driver: docker-container
Nodes:
Name: mybuilder0
Endpoint: unix:///var/run/docker.sock
Status: running
Platforms: linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
% docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS
mybuilder * docker-container
mybuilder0 unix:///var/run/docker.sock running linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
desktop-linux docker
desktop-linux desktop-linux running linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
default docker
default default running linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
% docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
moby/buildkit buildx-stable-1 febfa34ea4a7 3 weeks ago 134MB
あとは下記のようなコマンドでマルチプラットフォームビルドができる。ローカルにはイメージ登録できないので、Docker HubやAWS ECRなどのレジストリに直接PUSHする。
% docker buildx build --platform linux/amd64,linux/arm64 -t xxxxxxxxxxxx.dkr.ecr.ap-southeast-2.amazonaws.com/photo-view-mp:v1.0 --push .
zsh history
zshのhistory機能の設定を変更。デフォルトだと複数のターミナルのhistoryが共有されないので、setopt share_historyを設定。あとは履歴の数を変更。
export HISTSIZE=1000
export SAVEHIST=10000
setopt share_history
setopt hist_ignore_dups
setopt extended_history
Java 1.8
2021.08.14
hadoopを使ってみたかったので、Javaをインストール。homebrewで1.8をインストール。
% brew tap AdoptOpenJDK/openjdk
% brew install adoptopenjdk8
% java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.292-b10, mixed mode)
バージョン切り替えができるようにjenvもインストール。
jenvはnodenvのようにそれ自体でJavaをインストール機能はもたないらしい。なので、インストール自体はhomebrewで行った後で、jenvに登録する流れ。
% anyenv install jenv
% exec $SHELL -l
% jenv enable-plugin export
% exec $SHELL -l
% jenv add `/usr/libexec/java_home -v "8"`
openjdk64-1.8.0.292 added
1.8.0.292 added
1.8 added
% jenv global openjdk64-1.8.0.292
% jenv version
openjdk64-1.8.0.292 (set by /Users/xxxxxx/.anyenv/envs/jenv/version)
jenvで環境切り替え時にJAVA_HOMEも切り替わる
% echo $JAVA_HOME
/Users/xxxxxx/.anyenv/envs/jenv/versions/openjdk64-1.8.0.292
Hadoop 3
2021.08.14
Hadoop 3をインストール。下記のサイトからaarch64用のバイナリをダウンロードして任意のディレクトリに展開。
% ./bin/hadoop version
Hadoop 3.3.1
Go
2021.08.28
Goをインストール。本家サイトからバイナリ(go1.17.darwin-arm64.pkg)をダウンロード。
% go version
go version go1.17 darwin/arm64
Ansible
2021.09.18
homebrewからAnsibleをインストール
brew install anaible
Packer
2021.09.18
homebrewからPackerをインストール
brew install packer
Microsoft Remote Desktop
2021.09.26
Apple StoreからRemote Desktopクライアントをインストール
pyenvとpython
2021.10.01
anyenv install pyenv
exec $SHELL -l
pyenv install 3.9.7
anyenv initだとpyenvのバイナリの置き場所にパスが通っていなかったので.zshrcに下記を追記。
eval "$(pyenv init --path)"
Serverless Framework
2021.10.05
curl -o- -L https://slss.io/install | bash
この方法ではarm64向けのbinaryがないというエラーが出た。
npmで入れると成功。
npm install -g serverless
Microsoft Edge
2021.10.08
Safariのタブの仕様がかわって使いづらくなったのでEdgeに変えてみた。
multipass
overlay2やbtrfsを使ってみるために、素のUbuntuがさわりたくなったのでmultipassをインストール。
すごくお手軽に環境構築できて便利。
macOS用のパッケージファイルをダウンロードしてインストール。
% multipass version
multipass 1.8.1+mac
multipassd 1.8.1+mac
% multipass launch --cpus 2 --disk 20G --mem 4G --name ubuntu
% multipass list
Name State IPv4 Image
ubuntu Running 192.168.64.2 Ubuntu 20.04 LTS
% multipass exec ubuntu -- uname -a
Linux ubuntu 5.4.0-92-generic #103-Ubuntu SMP Fri Nov 26 16:15:10 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux
% multipass shell ubuntu
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-92-generic aarch64)
localstack
2022.01.22
AWSの擬似サービスをローカルで実行できるOSS。
内部の仕組みを調べてみたくて、インストール。
$ python3 -m pip install localstack
awslocalコマンドもインストール。アクセス先がlocalstackになるawsコマンド。
pip install awscli-local
Wireshark
2022.01.22
localstackがどんな通信をしているか見たくなったのでインストール。
apple silicon用のバイナリもあった。
rbenvとruby
2022.02.13
railsを使いたかったのでrubyをインストール。
% anyenv install rbenv
% rbenv install 3.1.0
% cd xxxxxxxx
% rbenv local 3.1.0
% exec $SHELL -l
% which ruby
/Users/xxxxxxxx/.anyenv/envs/rbenv/shims/ruby
bundlerとrailsをインストール
gem install bundler
gem install rails
% exec $SHELL -l
% which rails
/Users/xxxxxxxx/.anyenv/envs/rbenv/shims/rails
% rails --version
Rails 7.0.2.2
phpenvとphp
2022.04.09
モダンなPHPを動かしてみたかったので、phpをインストール
anyenv install phpenv
exec $SHELL -l
phpenv install 7.4.28
brew install pkg-config
brew install openssl
AWS Session Manager Plugin
Session Manager経由でEC2インスタンスに接続するためにプラグインをインストール。
curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/sessionmanager-bundle.zip" -o "sessionmanager-bundle.zip"
unzip sessionmanager-bundle.zip
sudo ./sessionmanager-bundle/install -i /usr/local/sessionmanagerplugin -b /usr/local/bin/session-manager-plugin