macOS の最新版 Mojave に合わせて MacPorts を更新したので,手順をメモします
概要
MacPortsインストール済みの macOS を Mojave にアップグレードすると以下のようなエラーメッセージがでて MacPorts は動作しなくなります
Error: Current platform "darwin 18" does not match expected platform "darwin 17" Error: If you upgraded your OS, please follow the migration instructions: https://trac.macports.org/wiki/Migration OS platform mismatch while executing "mportinit ui_options global_options global_variations" Error: /opt/local/bin/port: Failed to initialize MacPorts, OS platform mismatch
理由はメッセージの通りで,対処するには Mojave つまり darwin 18用に /opt/local/bin/port コマンドなどを更新する作業が必要になります.
更新作業は以下の順に進めます
- Xcode Developer Tools をinstall
- port コマンドのinstall
- パッケージの更新
以下,順に説明します
Xcode Developer Toolsのインストール
コマンドラインで作業します
$ xcode-select --install
これでGUIのアプリが起動して,ダウンロード&インストールが自動で処理されます
インストールが終わったら,念のため Developer バージョンを選択しておきます
$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
port コマンドのインストール
現時点(2018/10/02) ではまだ公式のバイナリが公開されていません
そこで以下の手順で自分でビルドします
作業ディレクトリに移動してソースコードをダウンロードします.以下の例では /tmp で作業しました
$ cd /tmp
$ wget https://distfiles.macports.org/MacPorts/MacPorts-2.5.3.tar.bz2
configure して install します.
$ tar xfj MacPorts-2.5.3.tar.bz2 $ cd MacPorts-2.5.3 $ ./configure $ make -j4 $ sudo make install
これで /opt/local 以下に Mojave 用のport環境がインストールされます
一度,パッケージのメタ情報を更新しておきます
$ sudo port -v selfupdate
念のため古いビルド情報を破棄します.
$ sudo rm -rf /opt/local/var/macports/build/*
パッケージの更新
通常通り
$ sudo port upgrade -u outdated
などを実行すればOKです
インストール済みパッケージを自力でリビルドする方法
どうしても自前でバイナリをリビルドしたい人むけに,リビルド用のスクリプトが用意されています
$ wget https://github.com/macports/macports-contrib/raw/master/restore_ports/restore_ports.tcl $ chmod +x restore_ports.tcl
使用方法は以下の通り.
まずインストール済みのパッケージ一覧のリストを作ります
$ port -qv installed > list.txt
一度全パッケージをアンインストールします
$ sudo port -f uninstall installed
全パッケージをリビルド&インストールします
$ ./restore_ports.tcl list.txt
これだけですが,全パッケージをリビルドするのでかなり時間が掛かります.