Bたーんぶろぐ

プログラマがそんなにテックでないことを書きます。

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が悪さをしていたみたい。

 

そんなわけで解決出来ました。

めでたし、めでたし。