エラーメッセージには「dlopen(/opt/local/share/macports/Tcl/macports1.0/MacPorts.dylib, 10): no suitable image found. Did find: /opt/local/share/macports/Tcl/macports1.0/MacPorts.dylib: mach-o, but wrong architecture」と表示されます。
> Error: Requested variants "" do not match original selection "+universal".
> Please use the same variants again, perform 'port clean gperf' or specify the force option (-f).
このメッセージは、ワークディレクトリにあるビルド途中のもののvariantの指定が、これからインストールしようとするものと不一致のときに出ます。
主に、過去にインストールしようとして失敗してそのまま放っておいた場合に出ます。
メッセージにあるように
・同じvariantを指定する(今回のなら +universal)
・sudo port clean ポート名 でワーキングディレクトリを削除してから、もとのportコマンドを再実行する
・sudo port -f ... と -fオプションで強制的に実行する。
のいずれかで対応します。
まずは、あなたの方針を決定します
・32bit/64bit両用のシステムを構築したい場合
→ 先のsudo port upgrade ... に +universal を追加して、可能なものはuniversal版をインストールする。
ffmpegにuniversalのvariantは無いけど、無視されるだけなので問題なし。
・現在のシステム限定でよい
→sudo port clean gperf を実行してから、sudo port upgradeを実行する。
似たようなメッセージがでるようなら、 perform 'port clean gperf' の gperfが別なものになっているはずなんで、sudo port clean XXXX を実行→upgrade を繰り返す。
質問者
補足
32bit/64bit両用のシステムを構築したいと考えていますので、sudo port upgrade ... +universalと実行しましたところ
*******
******* 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
と出ました。
この状態で、sudo port install opencv を実行しても大丈夫ということでしょうか?
そのエラーメッセージにある通りです。
OpenCVはffmpegに依存していますが、既にMacPortsを使ってインストールされているffmpegがi386用(32bit版)なので、x86_64用(64bit版)のOpenCVには使えない、ということです。
sudo port -u upgrade --force --enforce-variants ffmpeg
で現在の環境に合せて再コンパイルされるはずなので、この後でopencvをインストールしてみてください。
ところで、cd opencv は必要ですか?
svn co ...は Macportsからのインストールには必要の無い作業ですが。
質問者
補足
sudo port -u upgrade --force --enforce-variants ffmpeg
と打ったところ
Error: Requested variants "" do not match original selection "+universal".
Please use the same variants again, perform 'port clean gperf' or specify the force option (-f).
Error: Unable to upgrade port: 1
To report a bug, see <http://guide.macports.org/#project.tickets>
とエラーが出てきてしまいました…選択が環境に合ってないということでしょうか…?
cd opencvはいらないですね。ご指摘ありがとうございます。
> (file "/opt/local/bin/port" line 39)
とあるので、portコマンド自体が正常に実行できていません。
よって、opencv等のインストールもできていません。
ちなみに、インストールに成功した場合は
---> Computing dependencies for XXXXX
---> Fetching archive for XXXXX
(略)
---> Activating XXXXX @X.X.X_X+XXXX
という程度の素気無いメッセージが表示されるだけです(-dオプションを付けなかった場合)
> /opt/local/share/macports/Tcl/macports1.0/MacPorts.dylib: mach-o, but wrong architecture
というメッセージからして、MacPortsのインストール自体がうまくいってないように思えるのですが。
http://distfiles.macports.org/MacPorts/
こちらから最新1.9.1で使用しているOSに対応したdmgイメージをダウンロード
→マウント
→インストールパッケージでインストール
するとどうなるでしょうか。
質問者
補足
macportsをインストールし、
$cd opencv
$sudo port install opencv
と打ってみたところエラーが発生してしまいました…以下の通りです。
Error: Cannot install opencv for the arch(s) 'x86_64' because
Error: its dependency ffmpeg is only installed for the arch 'i386'
Error: and does not have a universal variant.
Error: Unable to execute port: architecture mismatch
To report a bug, see <http://guide.macports.org/#project.tickets>
お礼
ありがとうございます。参考になりました。勉強不足で申し訳ありません。 つい聞くことに楽を覚えてしまって、自分で調べることを怠っていました。 インストールはまた新たな問題が出てきてしまって、まだ出来ていないのですが、少し自分で頑張ってみようと思います。 質問の回答、アドバイス大変ためになりました。感謝します。 また、もう駄目だ!というぎりぎりの時に質問させて頂くかもしれませんが、その時はまたアドバイスを頂けると助かります。 では、失礼いたします。