6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

M1 iMac インストール備忘録

Last updated at Posted at 2021-05-27

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.

Docker本体はRosetta2なしで動作している様子。
スクリーンショット 2021-08-12 10.28.11.png

nginxを動かしたとき

% docker run -p 8080:80  nginx 

スクリーンショット 2021-08-12 10.30.28.png

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
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?