LoginSignup
7
4

homebrewからMacPortsに乗り換える(macOS Big Sur)

Last updated at Posted at 2021-11-09

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を簡素に安心して使える,
という点において大変ありがたいパッケージ管理システムと感じた

7
4
1

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
7
4