MacPortsとは
歴史あるMacのパッケージ管理システム.大体のことはこちらの記事に分かりやすくまとめられている
Macパッケージを使う目的
- 大気海洋データの解析
- 特にPython3(+Cartopy)とGrADSを多用する
- ソースコンパイルに自信がないandそのトラブルシュートに時間を割きたくない
※ macOSはBig Sur
使うソフトと新旧のパッケージ管理
旧(移行前) | 新(移行後) | |
---|---|---|
GNU系コマンド | homebrew | MacPorts |
Python3系 | homebrew + miniconda | MacPorts |
GrADS | GrADS v2.0.2 (コンパイル済みを移植) | MacPorts (GrADS v2.2.1) |
あえて(?)MacPortsを使う動機
- 開発ツリーが単一であり安心(MacPortsの紹介)
- Pythonパッケージも(自分の必要なものは)大方整備されている
- HPが意外と洗練されている(特にAvailable Portsは見やすい)
- MacでGrADS2.2.xを動かすには唯一の選択肢(自分の知る限り)
-
まだMontereyへ移行する気はない自分の必要のものは移行完了(上記Available Portsで対応OSを確認できる) - MacPortsからhomebrewへの移行をまとめた記事は多いが,逆はほとんどない
結果
- 快適,homebrewと遜色ない
- brew, pip, condaを混ぜて使わなくて良くなりストレス減(これはhomebrewが悪いわけでないが)
- GrADS2.2.xを使える(驚きと)幸せ
移行手順
miniconda3のアンインストール
こちらの記事を参考にさせていただいた
$ conda install anaconda-clean
$ anaconda-clean
.zshrcの内部,conda initで書き込まれた部分を削除
homebrewのアンインストール
こちらの記事を参考にさせていただいた
公式のGitHubリポジトリに説明がある(Homebrew (un)installer)
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
この時の注意として,私はログインシェルのzshをhomebrewでインストールしていたので,homebrewアンインストール直後,端末を一切使えない事態に陥った..
事前にログインシェルを変更しておくべし(釈迦に説法)
私は以下の記事を参考に,窮地を脱した(環境設定からログインシェルを変更できることを初めて知った..)
MacPortsのインストール
公式ページを参考にした
以下,日本語でまとめる
(Xcode, Command Line Tools, XQuartzをダウンロード済みの場合の人は適宜飛ばしてください)
(過去のmacOS(OSX Leopard以後)にも対応しているのもMacPortsのメリットの一つだが,今回は割愛)
Xcodeのインストール
Appストアよりダウンロード
Xcode
Xcode Command Line Toolsのインストール
Xcodeダウンロード後,以下を端末で実行
$ xcode-select --install
ポップアップが出るので,インストールボタンをクリック
Xcodeのライセンス同意
順次,以下のコマンドを端末で実行
$ sudo xcodebuild -license
自己責任で同意
XQuartzのダウンロード
以下のリンクよりダウンロード、pkgファイルの実行
インストーラのダウンロード
インストールページ上部より適当なバージョンを選択
(今回はBig Sur)
Downloas(or任意のディレクトリ)に「MacPorts-2.x.x-11-BigSur.pkg」のようなファイルがダウンロードされるので,ダブルクリックで実行,順次指示に従いインストール
/opt/local/bin
へパスを通す
例えば,(簡単のため全てechoリダイレクトで.zshrcを編集)
$ echo 'export PATH="/opt/local/bin:$PATH"' >> .zshrc
ちなみに,MacPorts関連のデータは基本的に/opt/local
以下へインストールされる(それゆえsudo
が必要となる)
port
のアップデート
$ sudo port -v selfupdate
ここまでくれば,"enjoy MacPorts!"
port
によるGNU系のコマンド(その他)のインストール
$ sudo port install coreutils
インストール完了後,コメントにある通り,デフォルトのBSD系コマンドよりGNU系コマンドを優先するなら/opt/local/libexec/gnubin
へパスを通す
$ echo 'export PATH="/opt/local/libexec/gnubin:$PATH"' >> .zshrc
zshのインストールとログインシェルの変更
$ sudo port install zsh
$ sudo chpass -s '/opt/local/bin/zsh' $USER
順次インストール(個人的なチョイス)
$ sudo port install git
$ sudo port install emacs
$ sudo port install tmux
$ sudo port install zsh-syntax-highlighting ;#要source文を.zshrcへ追加
$ sudo port install gnutar ;#gnu-tarではない!
$ sudo port install gsed
$ sudo port install gawk
$ sudo port install wget
$ sudo port install diffutils
$ sudo port install htop
$ sudo port install ImageMagick ;#Python3.9もインストールされた
$ sudo port install gcc11 ;#バージョンは要確認
$ sudo port select --set gcc mp-gcc11
ほとんどHomebrewと同じなので,違和感なし
sudo
でパスワード打つの億劫なので,短時間に作業できると吉
port select --set gcc
はgccのバージョンを指定する,none
を指定するとデフォルトを使えたりする,つまり,複数バージョンを同時併用できる(と思っている)
port
によるGrADSのインストール
$ sudo port install grads
grads-v2.2.1がダウンロードされる(2021/11現在)が,これだけでは動かない
GAUDPT
のパスを指定してくれというエラーが出るので,指定する
そのパスはport contents grads | grep udpt
で確認できる
その他,GASCRP
, GADDIR
も天下り式に指定する(スクリプトファイルとFontやMapファイルは東北大学のサイト等を参考にしてください)
$ echo 'export GAUDPT="/opt/local/share/grads/udpt"' >> .zshrc
$ echo 'export GASCRP="/usr/local/lib/grads"' >> .zshrc
$ echo 'export GADDIR="/usr/local/lib/grads"' >> .zshrc
port
によるPython3系のインストール
(個人的なチョイス)
sudo port install python39 ;#既にインストール済み
sudo port select —set python3 python39 ;#pyhon3に設定(python2は使わないのでデフォ)
sudo port install py39-numpy
port select --set cython cython39
#列挙で一気にダウンロードしてくれる(是非横スクロール)
sudo port install py39-pandas py39-matplotlib py39-cartopy py39-pygrib py39-xarray py39-scipy py39-jupyterlab py39-metpy
python3.8を使いたければ,python38, py38-xxxをインストールすれば良い
シンプルで扱いやすい
考察
元々MacPortsユーザーは多かったが,後発のHomebrewへ利用者が流出している,という記事をよく見かける
その理由として,homebrewは
- OSのシステムも利用するのでインストールは高速で低容量
- GitHubリポジトリをそのまま利用しミニマル
- ユーザ,(有志含む)メンテナ共に多く,アップデート頻度高
- brew caskによるGUIソフトのダウンロード
-
sudo
不要
などが挙げられている(参考:3周まわってMacPortsからHomebrewへ移行した, MacでHomebrewを使ったパッケージ管理覚書, MacPorts と Homebrew の違いについて)
MacPortsではこれこれができない,や,homebrewでしかこれこれはできない,などの決定的な根拠を持ってhomebrewを利用している,という場合もあるのかもしれないが,少なくともWeb上の情報では見当たらない
また,MacPortsのroot権限の行使に関しても,なんとなく不安な気持ちになるのはわかるが,これが原因で内部システムが書き換えられ深刻な問題に陥る,ようなケースも私の探した限り見受けられなかった(もしあれば教えて欲しいです)
最後に
MacPortsは,自然科学のデータ解析を行う身としてCartopyやGrADSやGMTを簡素に安心して使える,
という点において大変ありがたいパッケージ管理システムと感じた