MacPortをx86_64環境にする

前回の続き

作業環境

  • MacBook OSX 10.6.4
  • bashを利用している。
  • ~/.bash_profileに以下のコマンドを追記している。
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
  • 実はXcodeもMacPortもOSX 10.5の頃からインストール済みだった。
  • だから、rtmpdumpとffmpegをインストールするにあたっては、以下のコマンド3行で完了するはずだった。
sudo port selfupdate
sudo port install rtmpdump
sudo port install ffmpeg

エラー発生

  • しかし、ffmpegインストール中にエラーが発生。
--->  Computing dependencies for pkgconfig
--->  Fetching pkgconfig
--->  Verifying checksum(s) for pkgconfig
--->  Extracting pkgconfig
--->  Applying patches to pkgconfig
--->  Configuring pkgconfig
--->  Building pkgconfig
--->  Staging pkgconfig into destroot
--->  Computing dependencies for pkgconfig
--->  Installing pkgconfig @0.25_1
--->  Deactivating pkgconfig @0.23_1
--->  Activating pkgconfig @0.25_1
--->  Cleaning pkgconfig
Portfile changed since last build; discarding previous state.
--->  Computing dependencies for gettext
--->  Fetching gettext
--->  Attempting to fetch gettext-0.18.1.1.tar.gz from ftp://ftp.dti.ad.jp/pub/GNU/gettext
--->  Verifying checksum(s) for gettext
--->  Extracting gettext
--->  Applying patches to gettext
--->  Configuring gettext
Error: You cannot install gettext for the architecture(s) x86_64 because
Error: its dependency expat only contains the architecture(s) i386.
Error: 
Error: Did you upgrade to a new version of Mac OS X? If so, please see
Error: 
Error:     http://trac.macports.org/wiki/Migration
Error: 
Error: Target org.macports.configure returned: incompatible architectures in dependencies
Log for gettext is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_gettext/main.log
Error: Unable to upgrade port: 1
Error: Unable to execute port: upgrade gmake failed
To report a bug, see <http://guide.macports.org/#project.tickets>
  • エラーメッセージ中に以下のURLを見ましょうと書いてある。
  • OSX 10.6で完全な64ビットOSになり、CPUアーキテクチャx86_64のソフトウェアとしておく必要があるらしい。
  • どうやら、MacPortでインストールしたソフトウェアを一旦すべて削除して、入れ直した方が良さそうだ。

再インストール

上記ページの手順どおりやってみた

  • MacPortでインストールされたソフトウェアの一覧をmyports.txtに書出し。
  • MacPort管理のソフトウェアをすべてアンインストール。
  • 未完了のビルドファイル等もすべて削除。
port installed > myports.txt
sudo port -f uninstall installed
sudo port clean --work --archive all
  • その後、myports.txtを見て、必要なソフトウェアを再インストールすれば良さそう。
  • しかし、すべてを手作業で再インストールするとなると、相当面倒だ。(100ファイル以上あった)
  • その面倒を見越して、myports.txtを元に、自動で再インストールしてくれるスクリプトが公開されていた。
curl -O http://svn.macports.org/repository/macports/contrib/restore_ports/restore_ports.tcl
chmod +x restore_ports.tcl
sudo ./restore_ports.tcl myports.txt
  • 上記のコマンドを実行すると、早速myports.txtに書かれたソフトウェアの再インストールが始まった。
  • MacBookの冷却ファンが回って唸り出す。
  • すべて完了するのに3、4時間かかっただろうか。

完了

  • 再度ffmpegをインストールをチャレンジしてみると、呆気なく完了した。
sudo port install ffmpeg
--->  Computing dependencies for ffmpeg
--->  Fetching ffmpeg
--->  Verifying checksum(s) for ffmpeg
--->  Extracting ffmpeg
--->  Applying patches to ffmpeg
--->  Configuring ffmpeg
--->  Building ffmpeg
--->  Staging ffmpeg into destroot
--->  Installing ffmpeg @0.6_2
--->  Activating ffmpeg @0.6_2

*******
******* This build of ffmpeg includes nonfree code as follows:
*******
*******     libfaac
*******
******* The following libraries and binaries may not be redistributed:
*******
*******     ffmpeg
*******     libavcodec
*******     libavdevice
*******     libavfilter
*******     libavformat
*******     libavutil
*******
******* To remove this restriction use variant +no_nonfree
*******

--->  Cleaning ffmpeg


ちょっと遅過ぎる(1年後)、MacPortのSnow Leopard対応が完了した!