MacPortsで、build.cmdが見つからないというエラーが出る場合の対処法

遅ばせながら、Snow LeopardからLionにOSをアップデートし、
それに合わせて、今までのXcodeをアンインストールして、Mac App Storeから最新版のXcodeをインストールしました。
その後にMacPortsを使おうとしたところ、MacPortsが新しいmakeのパスを認識できず、以下のエラーを吐いて止まってしまう問題が起きました。

Computing dependencies for ***: Unable to execute port: can't read "build.cmd": 
Failed to locate 'make' in path: '/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin' 
or at its MacPorts configuration time location, did you move it?

原因は、見ての通りMacPortsがmakeの場所にパスが通っていないことだったのですが、
portはroot権限(sudo)で実行するため、ユーザーの.bash_profileやenvironment.plistにパスを設定しても効果がありませんでした。
よくよく探したところ、「/opt/local/etc/macports/macports.conf」の15行目にパスの設定があり、
ここに正しいmakeのパスを指定してやることで、無事回避できました。
15行目のコメントアウトされている「binpath」の行を、コメントアウトを外し、以下のように書き換えます。

binpath /opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/Applications/Xcode.app/Contents/Developer/usr/bin

なお、このファイルの編集にはroot権限が必要なので注意してください。
CotEditorを使うと、普通にファイルを開いても、保存時にパスワードを入力するだけでroot権限でファイルを保存できます。

これで無事、Xcode 4.3のみの環境でも、MacPortsを使えるようになりました。

(追記: 2012/3/13)
MacPortsのドキュメントを確認したところ、
“Command Line Tools”をインストールしていなかったことが原因だとわかりました。
Xcodeを起動後、Xcode > Preferences > Downloads から、「Command Line Tools」をインストールすることで同様に解決しました。
Command Line Toolsをインストールすると、自動的に/usr/binからmake等のSimlinkが貼られるようです。

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

週刊Railsウォッチ

インフラ

Rubyスタイルガイドを読む

BigBinary記事より

ActiveSupport探訪シリーズ