Macのパッケージマネージャーの1つ、MacPortsをApple SiliconのMac(MacBook Air)に入れてみます。
HomebrewとMacPortsの違い
HomebrewもMacPortsもどちらもMacのパッケージマネージャーです。
Apple Siliconが出て大きな違いとして、 2020/12/11現在MacPortsだとarm64というApple Silicon向けのものが提供されているパッケージはApple Silicon向けのものを、 提供されていないパッケージはx86_64と呼ばれるIntel向けのものをDLしてくれる、という機能があります。
そのため「このパッケージてもうApple Silicon対応してるんだっけ?」という事を調べたり意識したりしなくて良くなる、という利点があります。
MacPortsをインストールする
前準備
XcodeのインストールとXcode Command Line Toolsが必要になります。
私は先にHomebrewを入れてその際にインストールしたので良ければこちらを参考にしてみて下さい。
MacPortsをダウンロードする
MacPorts公式ページにいき、 macOS Big Sur v11
をDL。
DLしたpkgファイルをダブルクリックしてインストール。
pkgのインストールまで完了したOKです!
MacPortsを使う
MacPortsを使う場合port
というコマンドを使います。
port
というコマンド自体、そしてそのport
を使ってインストールしたパッケージは
/opt/local/bin/
の中に入っています。
jq
やpeco
インストール後に見てみると、port
やpeco
がいるのが分かりますね!
そのため先に/opt/local/bin/
に対してPATHを通します。
PATHを通す
export PATH="/opt/local/bin:$PATH"
ターミナルを再起動して確認してみると、
$ port -v
MacPorts 2.6.4
Entering shell mode... ("help" for help, "quit" to quit)
使えるようになってますね!
パッケージをインストールする
試しにjq
という既にarm64版が提供されているパッケージをインストールしてみます。
port
はhomebrewと比べて以下のような特徴があります。
sudo
が必須-f
を付けてsudo port install -f jq
のようにする事で依存関係のあるパッケージインストール時の[Y/n]が表示されなくなる
% sudo port install jq
・・・
The following dependencies will be installed: oniguruma6
Continue? [Y/n]:
・・・
---> Attempting to fetch jq-1.6_3.darwin_20.arm64.tbz2 from https://kmq.jp.packages.macports.org/jq
---> Attempting to fetch jq-1.6_3.darwin_20.arm64.tbz2.rmd160 from https://kmq.jp.packages.macports.org/jq
---> Installing jq @1.6_3
---> Activating jq @1.6_3
---> Cleaning jq
---> Scanning binaries for linking errors
---> No broken files found.
---> No broken ports found.
途中でfetchしてインストールしているのが「arm64」と書かれてますね!
それだけで感動する。笑
arm64版がインストール出来ているか確認します。
# インストール先の確認(MacPortsのインストール先になっている)
$ which jq
/opt/local/bin/jq
$ lipo -archs $(which jq)
arm64
arm64版のインストールが出来ました!
まだarm64版が提供されていないパッケージはどうだろう?と思い、試しにpeco
をインストールしてみました。
$ sudo port install -f peco
# インストール先の確認
$ which peco
/opt/local/bin/peco
$ lipo -archs $(which peco)
x86_64
arm64版が提供されていないものは無事Intel版(x86_64)がインストール出来てますね!
インストールしたコマンドやアプリがどちらを使っているか確認する方法については↓の記事に詳しく書きました!