70
74

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

開発環境 on M1 Mac with Homebrew

Last updated at Posted at 2020-12-22

はじめに

※この文章はベータ版です。随時アップデートしていく予定です。

M1 Macの開発環境が MacPorts を採用した場合の情報+αなので、Homebrewをパッケージマネージャとして採用した場合の情報+αを書いています。
(なるべく被らないようにしています。)

自分の環境に入れているモノを中心にM1への対応状況をリストしています。

Homebrewで提供されているモノはそれを、Homebrewで提供されていないモノは、インストール方法を紹介しています。

リストへの編集リクエスト、ウェルカムです。

Homebrew on M1 Mac

Rosetta2を使えばIntel Mac用のパッケージ(x86_64)をそのまま利用できますが、その場合、管理するパッケージ全て、Resetta2でIntel Mac用の
Homebrewパッケージ(x86_64)のバイナリを変換して動作させることになり
ます、Rosetta2が優秀でもオールラウンドな変換を行えるとは考えにくく、
Rosetta2頼みの環境構築は得策とはいえないので、M1(AppleSilicon)Mac用のパッケージ(arm64)を利用します。

M1 Macネイティブで、Homebrewのカバーするソフトウェア(Homebrew
パッケージ)群の多くが動作するようになってきていて、ほぼ全てのソフトウェア群が動作するステージに入っています。

Homebrewパッケージ(フォーミュラ)のM1対応状況に関しては このページ にまとめ
(英語)が作成され、随時更新されていました( つづき があります)。

Homebrewのインストールについてはこちら

対応状況

IDE / エディタ

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ Vim 9.0.0350_1 arm64 Homebrew

開発ツール / パッケージマネージャ

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ Homebrew 3.1.8 arm64 -
✔︎ llvm 15.0.1 arm64 Homebrew
✔︎ gcc 12.2.0 arm64 Homebrew
✔︎ jemalloc 5.3.0 arm64 Homebrew
✔︎ CMake 3.21.3 arm64 Homebrew
✔︎ Ninja 1.11.1 arm64 Homebrew
✔︎ Git 2.37.3 arm64 Homebrew
✔︎ Yarn 1.22.19 arm64 Homebrew ボトル未提供
✔︎ direnv 2.32.1 arm64 Homebrew ボトル未提供
✔︎ mecab 0.996 arm64 Homebrew

プログラミング言語

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ Ruby 2.7.2 arm64 Homebrew
✔︎ Ruby 3.1.1 - rbenv
(ruby-build 20201225)
2020/12/25
✔︎ Ruby 3.0.0 arm64 Homebrew 2020/12/28
✔︎ Ruby 3.1.2_1 arm64 Homebrew
✔︎ rbenv 1.2.0 arm64 Homebrew
✔︎ ruby-build 20220910.1 arm64 Homebrew
✔︎ Node.js 15.11.0 arm64 Homebrew 2021/03/04
✔︎ Node.js 18.9.0 arm64 Homebrew
✖️ Deno.js 1.6.1 arm64 Homebrew 実験的サポート、Rust待ち、Rust1.50-nightlyで動作
✔︎ Deno.js 1.7.2 arm64 Homebrew 2021/01/23
✔︎ Deno.js 1.8.1 arm64 Homebrew 2021/03/13
✔︎ Deno.js 1.9.2 arm64 Homebrew
✔︎ Deno.js 1.26.1 arm64 Homebrew
✔︎ Deno.js 1.26.1 arm64 cargo
✔︎ Deno.js 1.26.1 arm64 rustup + cargo
✖️ Rust 1.48.0 arm64 Homebrew
✔︎ Rust 1.49.0-bata arm64 Homebrew 2020/12/27
✔︎ Rust 1.49.0 arm64 Homebrew 2021/01/10
✔︎ Rust 1.50.0 arm64 Homebrew 2021/03/04
✔︎ Rust 1.64.0 arm64 Homebrew
✔︎ rustup (-init) 1.64.0 arm64 Homebrew
✔︎ Rust 1.50.0 arm64 rustup
✔︎ Rust 1.64.0 arm64 rustup
✔︎ Python 3.9.13_4 arm64 Homebrew
✔︎ Python 3.10.6_2 arm64 Homebrew
✔︎ OpenJDK 16 preview arm64 Homebrew 2021/01/16
✔︎ Go 1.19.2 arm64 Homebrew
✔︎ Perl 5.34.1 arm64 Homebrew
✔︎ Dart 2.18.2 arm64 Homebrew
✔︎ PHP 8.0.6 arm64 Homebrew

DB / サーバー

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ PostgreSQL 14.5_2 arm64 Homebrew
✔︎ MySQL 8.0.30 arm64 Homebrew
✔︎ MariaDB 10.5.9 arm64 Homebrew
✔︎ Nginx 1.23.1 arm64 Homebrew
✔︎ h2o 2.2.6_1 arm64 Homebrew
✔︎ Apache2(httpd) 2.4.54 arm64 Homebrew
✔︎ unbound 1.16.1 arm64 Homebrew

ライブラリ

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ OpenSSL 1.1.1q arm64 Homebrew
✔︎ readline 8.1 arm64 Homebrew
✔︎ libxml2 2.10.2 arm64 Homebrew
✔︎ libxslt 1.1.37 arm64 Homebrew
✔︎ libiconv 1.16 arm64 Homebrew
✔︎ libffi 3.3 arm64 Homebrew
✔︎ ImageMagick 7.1.0-48 arm64 Homebrew
✔︎ libvips(vips) 8.13.1 arm64 Homebrew
✔︎ libsass 3.6.4 arm64 Homebrew 公式非推奨
✔︎ dart-sass(sass) 1.55.0 arm64 Homebrew ボトル未提供
✔︎ Qt (qt) 5.15.5_1 arm64 Homebrew 2020/12/27
✔︎ Qt (qt@5) 6.0.3 arm64 Homebrew 2020/03/05
✔︎ Qt (qt) 6.3.2 arm64 Homebrew
✔︎ groonga 12.0.7 arm64 Homebrew

デスクトップアプリケーション

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ Cakebrew 1.3 Universal Homebrew 公式サイト
✔︎ Docker 4.4.2 arm64 公式サイト non-free
✔︎ Rayon 1.9 Universal AppStore github
✔︎ Sourcetree 4.1.6 Universal 公式サイト
✔︎ Fork 2.7 Unversal 公式サイト non-free
✔︎ VS Code 1.56.1 Universal 公式サイト
✔︎ Sequel Ace 3.3.1 arm64 AppStore
✔︎ Insomnia 2022.1.0 x86_64 公式サイト
✔︎ CotEditor 4.1.3 x86_64 AppStore
✔︎ mi 3.6 Universal 公式サイト
✔︎ Hidden Bar 1.8 x86_64 AppStore 公式サイト
✔︎ Maccy 0.22.2 Universal 公式サイト
✔︎ Tabby 1.0 Universal 公式サイト
✔︎ Dropbox 121.4.4267 Universal Desktop Client Build
✔︎ Evernote 10.31.6 Universal AppStore
✔︎ Slack 4.23.0 Universal AppStore
✔︎ Skype 8.81.0.268 x86_64 公式サイト
✔︎ zoom.us 5.10.0 Universal 公式サイト

ボトル未提供

リストのメモに「ボトル未提供」と書かれている場合、Homebrewでのインストール時にオプションを付けて、ソースからビルドすることになります。

% brew install --build-from-source パッケージ名

GCC

現在、M1未対応ではあるものの、下記のブランチにて対応作業(GCC12?向け)が進行中です。
https://github.com/iains/gcc-darwin-arm64

M1の正式サポートを含む GCC は2021年の中頃かそれ以降のリリースが予定されています。

公式には、GCC12? 以前に、段階的にM1対応を行なっていくようなプランは、ないようです。

macOS 11 では、gcc or g++ コマンドを叩くと、Clangを呼び出すので、大抵の場合、問題はありません。

但し、GCCを前提として、ビルドにClangとの互換性のないGCCの(GCCにはあるもののclangにはない)機能を利用しているHomebrewパッケージの場合、clangではビルド中にこけて、ビルドが失敗してしまいます。

来年半ばかそれ以降にリリースされる GCC12? を待つわけにはいかないので、GCC前提のHomebrewパッケージの多くは、フォーミュラレベルでClangに対応するか、アップストリームにClangでのビルドスクリプトが追加されることになるはずです。
(GCC前提のHomebrewパッケージの多くは、開発言語としてClangのサポートするC系の言語で作成されているはずです。)

GCCに含まれるC系以外のプログラミング言語で作成されているソフトウェアについては、GCC前提となっている場合、開発言語をサポートする、GCC12? より早期にM1対応の実現する、他のコンパイラ&ツールチェインの利用を検討するか、GCC12? のリリースを待つしかないのが現状です。

[2020/12/25]
状況が変わったので、追記します。

上記のブランチから GCC10 へのバックポート作業が下記ブランチにて進行中です。
https://github.com/fxcoudert/gcc/tree/gcc-10-arm
https://github.com/iains/gcc-darwin-arm64/issues/31

このブランチから作成されたパッチが適用された GCC10.2 の M1 (暫定)対応版が利用可能になっています。

gcc & g++ は clang で利用されているので、コンパイルする際には、gcc -> gcc-10、g++ -> g++-10、とする必要があります。

[2021/05/02]
M1への正式対応が予定されていた GCC11、GCC11.1.0 はリリースされていますが、M1対応は含まれていません。
https://github.com/Homebrew/homebrew-core/pull/74843#issuecomment-827745294
https://gcc.gnu.org/gcc-11/changes.html

GCC11.1.0 のフォーミュラ作成は進行中です。
https://github.com/Homebrew/homebrew-core/pull/74843

Rust

バックエンドとして利用しているllvmはM1対応済みなので、M1対応は今年末か来年頭にリリース予定の1.49から開始される予定です。

M1への最適化(コンパイラを含む)は 1.50 以降、順次、行われていくことに
なるはずです。

1.49.0 がリリースされれば、Homebrewパッケージが更新され、利用可能に
なるはずです。
( https://github.com/Homebrew/homebrew-core/pull/67535 )

[2020/12/27]
Rust用フォーミュラのM1対応が、昨日、完了し、1.49.0-betaが利用可能と
なっています。1.49.0のリリース待ちです。
( https://github.com/Homebrew/homebrew-core/pull/67535 )
( https://github.com/Homebrew/brew/issues/7857#issuecomment-751295329)

[2020/12/31]
1.49.0 がリリースされました。近日中に利用可能となるはずです。
https://blog.rust-lang.org/2020/12/31/Rust-1.49.0.html

[2021/01/04]
Rust1.49.0のフォーミュラ、作成中です。
https://github.com/Homebrew/homebrew-core/pull/68089

[2021/01/05]

1.49.0 に含まれている Cargo.lock ファイルが古いままで更新されていないために、Homebrew 開発チームが運用している CI でエラーが発生していて、解消するためにアップストリームでの Cargo.lock ファイルの更新が必要となっている状況です。

ローカルの開発環境でのビルド&テストには成功している模様。

Cargo.lockファイルが古いバージョンのままであることに起因するCIでのエラーに関しては、ひとまずスキップされる模様。

[2021/01/10]
1.49.0 が利用可能になっています。

CIでRust依存のソフト群のビルドも一緒に行われていて、その中でビルドに失敗するモノがあり、エラーとなっていた模様。

いくつかについては フォーミュラ or CI が修正され、それでもエラーとなるモノについては、リグレッションではないと判断され、それらは個別に対応されることになったようです。

[2021/03/04]
1.50.0が利用可能になっています。

Deno.js

1.6.0から M1の実験的サポートが追加されているものの、開発言語であるRustがM1対応作業中となっているため、Rustの対応待ちとなっています。

1.6.0は Rust1.50-nightly で動作確認済みの模様。

Rust1.49 がリリースされれば、Homebrewパッケージが更新され、利用可能になるはずです。

[2020/12/28]
Deno 1.6.3のフォーミュラ、作成中です。
https://github.com/Homebrew/homebrew-core/pull/66920

[2020/01/14]
Deno が v8 のビルドに利用している v8公式のGoogle製ビルドツール gn
がend of life となった Python2.x で書かれているため、Homebrew でのフォーミュラ作成が停まっている模様。
https://github.com/Homebrew/homebrew-core/pull/68461
(Homebrew は、end of life となったモノを提供しない方針で、Python2.x は現在、提供されていません。)

Denoでも、gnのこの問題に対する issue が上がったことがあります、v8 開発サイドで対応すべき問題であり、Deno 開発サイドで対処する問題ではない、という結論で、issue がクローズされていました。

(先日(2021/02/16)、GoogleがPSFのビジョナリー・スポンサーになり、CPythonの開発支援 及び 基本的な周辺ツール・サービスの改善に乗り出す、ことを発表しました、v8公式のGoogle製ビルドツール gn の3.xへの移行があるかもしれません。

GoogleがPython Software Foundationへの支援を強化「ビジョナリースポンサー」に )

[2020/01/17]
v8公式のGoogle製ビルドツール gn の件については、Appleがレガシー対応のためにmacOS 11 に含めている Python 2.xを利用する形になっています。

Rust1.49.0(1.50.0-beta) に含まれている Cargo.lock ファイルが古いままで更新されていないために、Denoのビルドが途中でエラーになっています、解消するためにアップストリームでの Cargo.lock ファイルの更新が必要となっている状況のようです。
https://github.com/denoland/deno/issues/8992

[2020/01/17]
Homebrew で Deno が利用可能になるまでに、まだしばらく、時間がかかりそうな状況です。

Homebrew + Rust orHomebrew + Rust + Rustup で Deno をインストールする方法を紹介します。

Rust

% brew install rust
% cargo install deno --locked
% vi ~/.zshrc
export CARGO_HOME="$HOME/.cargo"    # 追加
export PATH="$CARGO_HOME/bin:$PATH" # 追加
export PATH="$HOME/.deno/bin:$PATH" # 追加
% vi ~/.zshrc

Rust + Rustup

% brew install rust
% brew install rustup-init
% rustup-init
% vi ~/.zshrc
export CARGO_HOME="$HOME/.cargo"    # 追加
export PATH="$CARGO_HOME/bin:$PATH" # 追加
% source ~/.zshrc
% rustup install beta # なくても、OK
% rustup default beta # なくても、OK
% cargo install deno --locked
% vi ~/.zshrc
export PATH="$HOME/.deno/bin:$PATH" # 追加
% source ~/.zshrc

[2020/01/20]
Deno1.7.0がリリースされました、Cargo.lock ファイルの問題が修正されています。

Denoのフォーミュラ、1.7.0に更新中です。
https://github.com/Homebrew/homebrew-core/pull/66920

CIでのテストが通れば、Homebrewパッケージが更新され、利用可能になります。

[2021/01/23]
Deno 1.7.0、利用可能になりました。

[2021/03/04]
Deno1.8.0は、まだ利用可能になっていませんが、deno upgradeすることで利用できます。

Deno 1.8 Release Notes
https://deno.land/posts/v1.8

[2021/03/05]
Deno 1.8.0、利用可能になっています。

Qt

Qt5のQtWebEngineがM1 Mac上で動作させるためにパッチされていないChromiumを使っているので、Qt5のビルドに失敗するようです。

Qt6ではQtWebEngineのfixが既に行われています。

Qt6からQt5へのこののfixのバックポートがデカすぎてARMでのコンパイルに失敗する問題への対応が進行中です。
https://github.com/Homebrew/homebrew-core/pull/67170

Qt6のフォーミュラの作成も進行中です。
https://github.com/Homebrew/homebrew-core/pull/67536
-> https://github.com/Homebrew/homebrew-core/pull/68134
(上記の2つのプルリクエストはメインブランチにマージされることなく
クローズされています。)

[2020/12/27]
QtWebEngineを含まないQt5.15.2 が利用可能になっています。
Qt5.xにはCMakeの問題があるので、シムリンクは行われません。

[2021/03/03]
-> https://github.com/Homebrew/homebrew-core/pull/70826

Qt 6.0.1、利用可能になっています。

[2021/05/15]
Qt 6.1.0、既に利用可能になっています。

Docker

DockerのM1対応版は、現在、Developer Preview のステージなので、現在、仕事のプロジェクトで利用するのはあまりオススメできません。

仕事のプロジェクトで採用されているか勉強用途での利用で、問題が発生した時に自分で対応できるのなら、インストールして利用して問題ないと思います。

Developer Preview は Docker Developer Preview Program に参加すると招待されるSlackチャンネル経由でダウンロードできます。

AppleのM1チップ対応「Docker Desktop」プレビュー版が登場、WSL2のGPU対応も

Developer Preview の入手方法については、M1 Macの開発環境 にも記載されています。

M1対応DockerDesktop の Tech Preview の 7版(Preview7) が Docker Blog の記事にあるリンクからダウンロードできるようになっています。

Docker Developer Preview Program に参加するほどではないけど、M1対応Docker を触ってみたい方はどうぞ。

Download and Try the Tech Preview of Docker Desktop for M1

M1 対応 Docker Desktop は、x86 用コンテナイメージのビルドと実行にも対応しているようです。
https://www.publickey1.jp/blog/20/apple_m1docker_desktopcpux86docker.html

[2021/03/04]

Apple M1 Tech Preview
https://docs.docker.com/docker-for-mac/apple-m1/

from
New Docker Desktop Preview for Apple M1 Released
https://www.docker.com/blog/new-docker-desktop-preview-for-apple-m1-released/

[2021/03/22]
Docker、Apple Siliconに対応した「Docker Desktop RC 1」をリリース
https://applech2.com/archives/20210320-docker-desktop-for-apple-silicon-rc-1.html

[2021/04/16]
Apple M1チップに対応した「Docker Desktop」が一般リリース
https://forest.watch.impress.co.jp/docs/news/1319217.html

70
74
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
70
74

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?