MacPortsは,OSのバージョンを上げたら入れ直し(migration)が必要。OS X El Capitanにアップグレードしたので,MacPortsを入れ直す。

1. はじめに

El Capitanにアップグレードしたマシンでportコマンドを実行すると,

$ ~ takeshi$ sudo port -d selfupdate

Password:

Error: Current platform "darwin 15" does not match expected platform "darwin 14"

Error: If you upgraded your OS, please follow the migration instructions: https://trac.macports.org/wiki/Migration

OS platform mismatch

のようにエラーが出る。エラーメッセージにあるように,Migrationに従って入れ直す必要がある。

ただし,各パッケージのバイナリをビルドするサーバ(buildbot)が稼働していないので,バイナリはまだ提供されていない。選択肢は3つ。

  1. 充分時間をとって,ソースからコンパイルする。コンパイルに問題があるパッケージは,ElCapitanProblemsに掲載され始めている。掲載されていないものの中にもうまくいかないものがあるかもしれない。
  2. YosemiteでインストールしたMacPortsをそのまま使い続ける。ほとんどはそのまま動くはずだ。ただし,OSのライブラリに動的にリンクされているものがあれば,ライブラリのバージョンが変わったり,ライブラリが無くなったりすると,動作しない可能性もある。portコマンドはOSのバージョンが違うとエラーを出すようになっているので,port treeの更新も新しいパッケージの導入もできない。
  3. El Capitanへのアップグレードをもう少し後にする。El Capitanにアップグレードすると,動かなくなるソフトウェアが出て仕事にならなくなる可能性がある。メインのマシンのEl Capitanへのアップグレードは慎重に検討してからの方がよい。

職場のメインのマシンは,しばらくYosemiteのままにする。MacPortsのメンテナ・コミッタをしているので,El Capitanを試す必要がある。そこで自宅のマシンをEl Capitanにアップグレードした。iPhoneやiPadのOSをiOS 9にしたので,El Capitanのメモを使えるようにしたかったのもアップグレードの理由だ。

2. 準備

El Capitanの登場に合わせて,MacPorts 2.3.4がリリースされた。既にEl Capitan用のpkgインストーラがInstallationページに用意されているが,ここではsvnからrelease 2.3.4を取得してソースからコンパイルする。Installationページに説明されているように,XcodeをApp Storeから取得してライセンスを読んで,agree(とタイプする)しておく必要がある。

$ sudo xcodebuild -license

Xcode Betaを試したりして,複数のXcodeがある場合は,

$ sudo xcode-select -print-path

で確認し,必要に応じて

$ sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

などとする。

3. 入れ直し

3.1 MacPorts 2.3.4のインストール

MacPorts関連のファイルはホームの~/MacPortsに入れているので,そこに移動して作業開始。

$ cd ~/MacPorts

svnでリリース2.3.4を取得し,コンパイルの後,インストール。

$ svn co https://svn.macports.org/repository/macports/tags/release_2_3_4/base/ base_2_3_4
$ cd base_2_3_4
$./configure && make
sudo make install

これでportコマンドが動作するようになった。MacPortsとport treeを更新。

sudo port -d self update

3.2 入れ直し作業

後はMigrationに従って作業する。まずはインストールされているものの一覧を書き出す。

$ port -qv installed > myports_yosemite.txt

ユーザがリクエストした(明示的にインストールを指示した)portの一覧を書き出す。

$ port echo requested | cut -d ' ' -f 1 > requested_yosemite.txt

インストールされているportを全てuninstallする。

$ sudo port -f uninstall installed

念のためビルドの残骸を削除する。

$ sudo rm -rf /opt/local/var/macports/build/*

インストールされていたportを復元するTclスクリプトをダウンロードする。ここでは~/MacPorts/binに格納している。

$ cd bin
$ curl -O https://svn.macports.org/repository/macports/contrib/restore_ports/restore_ports.tcl
$ chmod +x restore_ports.tcl
$ cd ..
$ sudo bin/restore_ports.tcl myports_yosemite.txt

リクエストの状態を復元する。

$ sudo port unsetrequested installed
$ xargs sudo port setrequested < requested_yosemite.txt

jason より:

2015年12月16日 5:06 PM

非常に助かりました。今は、Migrationをしている最中….

ピンバック: [【Mac OSX】El CapitanでMacPortsをインストール ](http://atomicbox.tank.jp/developer/1226/)

「OS X El CapitanにアップグレードしたのでMacPortsを入れ直し」への2件のフィードバック

jason より:

2015年12月16日 5:06 PM

非常に助かりました。今は、Migrationをしている最中….