あちこち古いのに飛ぶのも何なんで (修正しにくい)。情報を集約しておく。 Xcode 関係でドタバタしたので、落ち着いた時点でまとめることが必要かもしれない。 macOS の新しいメジャーバージョンが出たときはしばらく静観していて、 Xcode 関係が落ち着いてから MacPorts に手を出すべきものかも。
MacPorts が本家である。
公式ドキュメントは充実している (英語だけど)。 MacPorts Guide (Documentation)
macOS のメジャーバージョンを変えていないときは、簡単にアップデートできる。
ターミナルで次のようにしてアップデートできる |
sudo port selfupdate sudo port upgrade outdated |
macOS のアップグレード (メジャーバージョンが上がる) 際には、 全とっかえのような作業が必要である。普段は
Migrating MacPorts after a major operating system upgrade or from one computer to anotherに書いてあることに従えば良い (大抵はスムーズに出来た)。
↑上の手順は結構大変なので (慣れていないとケガをしそう)、 古い MacPorts を全部削除して、1からインストールしなおすのもありかも。
古い MacPorts を削除する |
sudo port -fp uninstall installed sudo rm -rf /opt/local /Applications/MacPorts(/opt/local に他の何かを入れている人は、 そういうのを消さないように注意する (まずは sudo mv /opt/local /opt/local.old とか退避させるのか?)。 /opt/macports とかすればよかったのに。 この辺は Homebrew にも文句を言いたい。) |
ターミナルで 4 つのポートをインストール |
sudo port -N install netpbm sudo port -N install gnuplot sudo port -N install ImageMagick sudo port -N install ffmpeg(個々のポートに必要なポートもインストールするので、 割と長い時間がかかる。) |
Xcode と Command Line Tools ところで、MacPorts には、 Xcode と Command Line Tools が必要である。 「Xcode のインストールは必要でない、Command Line Tools だけで十分」 という意見があるが、 残念ながらすべての Ports でそうなっているわけでないみたい。
トラブルを避けたいならば、Xcode をインストール/更新しよう。 それから一度 Xcode を起動して License agreement をしておく (sudo xcodebuild -license というのもある)。 それから CommandLine Tools をインストールする。
xcode-select --install |
sudo rm -rf /Library/Developer/CommandLineTools xcode-select --install |
これで済まない場合もあって、以前書いた 「MacPorts で Command Line Tools のバージョンが分からない、 と言われたら」 が何かの参考になるかも。特に https://developer.apple.com/download/more/?=command%20line%20toolsからパッケージを取って来て手動でインストールするとか。 この Xcode と CommandLine Tools の問題については、 「もういい加減に直してくれ」 と言いたい。
実は今回(Venturaへのアップグレード騒ぎ)も、 パッケージ “Command Line Tools for Xcode 14.1 Release Candidate 2 October 24, 2022” というのを入手する羽目になった。 早速 Candidate 2 ですか。
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer |
(一般的説明に戻って) SDK (Software Developpers Kit?) のありかを環境変数に設定する必要がある。
これを bash, zsh の設定ファイルに入れておく |
export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)" |
さて、私が最近インストールしている port として
sudo port -N install gzip sudo port -N install gsed sudo port -N install wget sudo port -N install lha sudo port -N install a2ps-j sudo port -N install nkf sudo port -N install lv sudo port -N install jpeg2ps sudo port -N install gnupg2 sudo port -N install gv sudo port -N install xpdf-japanese +autoactivate sudo port -N install kochi-substitute sudo port -N install netpbm sudo port -N install gnuplot sudo port -N install ImageMagick sudo port -N install ffmpeg +nonfree sudo port -N install openblas +native sudo port -N install py310-numpy +openblas sudo port -N install py310-scipy +openblas sudo port -N install py310-matplotlib sudo port -N install py310-ipython sudo port -N install py310-jupyter sudo port -N install pandoc sudo port select --set python python310 sudo port select --set python3 python310 sudo port select --set ipython py310-ipython sudo port select --set ipython3 py310-ipython sudo port select --set cython cython310 sudo port select --set pygments py310-pygments sudo port -N install openjdk11 sudo port install gcc12 sudo port select --set gcc mp-gcc12 |
(2022/10/30追記) gcc12 のインストールでこけた。 Command Line Tools for Xcode 14.1 Release Candidate 2 (October 24, 2022) を取って来てからやり直してうまく行った。 それにしても連発しているね (beta, beta3, Release Candidate に続いての登場) せっかくのお休みが Xcode に侵食される… Fortran コンパイラが要るんだよ…
(2022/10/31追記) Command Line Tools for Xcode 14.1 がリリースされた。 またインストールし直し。
(2022/11/1追記) 昨日インストールしたのは 14.0 だった。 一体どういうことなのか?? Candidate は Candidate で正式な推奨対象ではない、ということか。 結局 14.1 Release Candidate 2 に戻す。 macOS がアップデート対象としてある意味で (MacPorts と一緒に使って警告がでない、という意味で) 不適切なものを提示する、 ということは知っておくと良いだろう (ちゃんと詳細表示させてバージョンを確認して、 納得できてからアップデートすること)。 これを理解してかなりスッキリした (少なくともここまでバージョンに関する警告を貰ってない)。
Command Line Tools のバージョンの確認 |
pkgutil --pkg-info=com.apple.pkg.CLTools_Executables |
No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'. |
version: 14.1.0.0.1.1666437224 volume: / location: / install-time: 1667280332 groups: com.apple.FindSystemFiles.pkg-group |
以下、port コマンドの使い方の説明。
どの port がインストールされているかリストを表示する |
port installed |
名前を頼りに port を検索する |
port search キーワード |
そのポートでインストールしてあるバージョンを表示 |
port installed ポートの名前 |
active なものを切り替える |
sudo port activate ポートの名前@バージョン |
その port にはどういうバリアントがあるか |
port variants ポートの名前例えば port variants openblas とか |
例えば openblas ならば |
% port variants openblas OpenBLAS has the variants: g95: Build using the g95 Fortran compiler * conflicts with gcc10 gcc11 gcc12 gccdevel gcc10: Build using the MacPorts gcc 10 compiler * conflicts with g95 g95 gcc11 gcc12 gccdevel gcc11: Build using the MacPorts gcc 11 compiler * conflicts with g95 g95 gcc10 gcc12 gccdevel [+]gcc12: Build using the MacPorts gcc 12 compiler * conflicts with g95 g95 gcc10 gcc11 gccdevel gccdevel: Build using the MacPorts gcc devel compiler * conflicts with g95 g95 gcc10 gcc11 gcc12 [+]lapack: Add Lapack/CLapack support to the library native: Force compilation on machine to get fully optimized library universal: Build for multiple architectures |
port をバリアントを指定してインストールする |
sudo port install ポートの名前 [+バリアント] |
以下は未整理。
sudo port -uf uninstall leaves sudo port -p uninstall inactive sudo port -p clean --all all |
export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)" |
port select python sudo port select --set python python39 sudo port select --set python3 python39 |
% port select --list gcc Available versions for gcc: mp-gcc-devel none (active) % sudo port select --set gcc mp-gcc-devel |
sudo port install gcc6 sudo port select --set gcc mp-gcc6 sudo port install openmpi-gcc6 sudo port select --set mpi openmpi-gcc6-fortran |
桂田 祐史