MacPortsの更新をしたらllvm-3.1が対応していないとエラーが出る時の対応
llvm-3.1が非対応とエラーが出る
久しぶりにmac portsの更新を行おうとした際に、llvm-3.1がMarvericks以降のOSに対応していないというエラーが出た際の解決法。
ちなみに、マシンはMacBookPro 15-inch, Late 2011、OS X 10.9.1
例のごとくselfupdateを行う。
$ sudo port selfupdate
しばらくして、ツリーの更新が完了。
そのまま、古いソフトウェアをまとめて最新版に入れ替えるために、upgradeコマンドを実行。
すると、llvmに対してエラーを出す。
$ sudo port upgrade outdated
---> Computing dependencies for llvm-3.1
---> Fetching distfiles for llvm-3.1
Error: llvm-3.1 is not supported on Mavericks or later.
Error: org.macports.fetch for port llvm-3.1 returned: unsupported platform
Please see the log file for port llvm-3.1 for details:
/opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_llvm-3.1/llvm-3.1/main.log
Error: Unable to upgrade port: 1
To report a bug, follow the instructions in the guide:
http://guide.macports.org/#project.tickets
エラーが出てupgradeが止まってしまう。
どうやらllvm-3.1がMarverickst以降に対応していない?
調べてみたら解答が
そこで、調べてみるとMacPortsこんな回答が。
#41713 (ds9 fails to install on Mavericks due to llvm) – MacPorts
この回答を元にllvmのupgradeを試みることに。
$ sudo port install ld64 cctools
実行してみると、llvm-3.3のインストールが始まる。
なんでupgradeだと上手く行かずに、新規でインストールするとバージョンが上がったものがインストールされるのかはよくわからない。
オプションで指定されている場合にはバージョン依存があるから、勝手にアップデートされないのか?
とにかく最新バージョンのllvmがインストールされた。
続いて依存関係にあるもののインストールも随時行われていき、小一時間待たされる。
インストール終了。
やっぱりうまくいかない
再びupgradeコマンドを叩く。
$ sudo port upgrade outdated
やはり、llvm-3.1で同様のエラーが出て引っかかる。
よくよく調べてみると、activeになっているのはllvm-3.3だが、前にインストールされたllvm-3.1自体は残っており、それが悪さをしている模様。
いらないものをアンインストール
そこで、llvm-3.1のアンインストールを行うことに。
$ sudo port uninstall llvm-3.1
とすると依存関係が表示され、そちらを先にアンインストールせよとのこと。
自分の場合は、cctools+llvm31とld64+llvm31が該当。
ちなみに、共に先ほどllvm-3.3と一緒にインストールしているので、activeになっているのは+llvm33とバージョン3.3に依存していた。
そんなわけで、+llvm31となっている方を、それぞれアンインストールして、再びllvm-3.1のアンインストールを実行。
無事にアンインストール完了。
上手くupgrade出来ました
再びupgradeを試みる。
$ sudo port upgrade outdated
すると今度は上手いこと止まらずに最後までupgradeされた。
思った通りinactiveなllvm-3.1が悪さをしていたみたい。
そんなわけで解決出来ました。
めでたし、めでたし。