【Tips】「MacPorts」の調子が悪い時は再インストールしたほうが良い!?

Command

Macのソフトウェアパッケージ管理システム「MacPorts」は、OS Xの標準ソフトウェアにできるだけ依存せず動作するように設計されています。このためOSがバージョンアップしても、そのまま動作する場合が多いのですが、必ずしも常にうまく動き続けるとは限らないようです。

実際、MacPortsの公式「マイグレーションガイド」では、「MacPortsは、特定のオペレーティングシステム、特定のハードウェアアーキテクチャ動作するようにデザインされていて、OSのアップグレードや、アーキテクチャの変更が発生した場合は、問題が起こるかもしれない」と注意書きがあります。

A MacPorts installation is designed to work with a particular operating system and a particular hardware architecture. Problems may occur after major system changes

PowerPCからIntelのようなアーキテクチャの変更はそうそう起こらないから良いとして、OSのバージョンアップ(例えばMavericksからYosemite)時にも、MacPortsの再インストールが推奨されているのです。

今回はMacPortsの再インストール方法を説明したいと思います。

MacPorts再インストール手順

基本的にマイグレーションガイド記載されている通りに実行します。

Xcodeのインストール

Mac App StoreからXcodeをインストールします。コマンドラインツールもインストールしておきます。

MacPortsベースシステムのインストール

OSごとのバイナリパッケージをダウンロードして、インストールします。

次に、/opt/local/etc/macportsにある「macports.conf」などのconfファイルをアップデートします。既に「macports.conf」が存在していた場合「macports.conf.default」として新しい設定ファイルがインストールされているはずですので、手作業で必要な設定を移植しましょう。

自分が特別な設定を行っていない場合、単に新しい設定をファイルを、古い設定ファイルに上書きしても大丈夫です。

sudo cp macports.conf.default macports.conf

他のconfファイルに関しても同様です。

Portsの再インストール

インストール済みportsのリストを保存します。

port -qv installed > myports.txt

(オプション)requests ports(明示的にインストールしたports)のリストを保存します。

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

全てのportsをアンインストールします。

sudo port -f uninstall installed

クリーンします。

sudo port clean all

保存しておいたリストとインストール用スクリプトを使って、portsをインストールし直します。

curl -O https://svn.macports.org/repository/macports/contrib/restore_ports/restore_ports.tcl
chmod +x restore_ports.tcl
sudo ./restore_ports.tcl myports.txt

(オプション)requested statusを戻します。自分が明示的にインストールしたportsがどれか分かるようになります。

sudo port unsetrequested installed
xargs sudo port setrequested < requested.txt

公式手順はこの通りですが、以前と全く同じportsを入れなおす必要がない場合、portsを削除後、手作業でportsをインストールした方が良いかもしれません(requested.txtをみながら)。

まとめ

全く同じMacPortsを入れているはずの二つのMacで、libz.aのファイル形式が異なっていることを発見し、MacPortsが古くなっていることに気が付きました。この場合個別のportsで何回入れなおしてもだめで、全体を再インストールし直すしか解決方法はありませんでした。

MacPortsの調子が悪くかつOSバージョンアップ前からMacPortsを使っている場合、再インストールするとうまく動くようになるかもしれません。

スポンサーリンク