2015年6月6日土曜日

Yosemiteに入れてしまったApple Java 6を片付ける方法

Yosemite登場の10.10.0では、なにかと以下のダイアログが出てうるさく、AppleからJava SE 6をダウンロードしてインストールした方もおられると思います。
でも、10.10.3であるいまは、消してしまってもたいてい大丈夫なようです。おさらばしましょう。

Apple Java SE 6を入れた状態は、こうなっているはずです。
$ pkgutil --pkgs |grep -i java
com.apple.pkg.JavaEssentials
com.apple.pkg.JavaForMacOSX107
com.apple.pkg.JavaMDNS
com.apple.pkg.JavaSecurity
com.apple.pkg.JavaTools
ちなみに、Vanillaな(素の)Mac OS X 10.10.3でこれをやると、以下のようになります。
$ pkgutil --pkgs |grep -i java
com.apple.pkg.JavaEssentials
com.apple.pkg.JavaTools
つまり、間の3つを消せばよいということですね。

それで、pkgutilコマンドで削除できればよいのですが、できません。rubyでこのコマンドを書かれた方がいらっしゃるのでありがたく使わせていただくことにします。
$ wget https://raw.githubusercontent.com/niw/profiles/master/bin/rm_pkg_files
$ chmod +x rm_pkg_files
どこか適当にpathの通っているところに置いておくとよいかと思います。

というわけで、消してしまいましょう。ついついbashのfor文を書きたくなりますが、わかりにくくなるのでひとつひとつ順番に。
$ rm_pkg_files com.apple.pkg.JavaForMacOSX107
$ pkgutil --forget com.apple.pkg.JavaForMacOSX107
$ rm_pkg_files com.apple.pkg.JavaMDNS
$ pkgutil --forget com.apple.pkg.JavaMDNS
$ rm_pkg_files com.apple.pkg.JavaSecurity
$ pkgutil --forget com.apple.pkg.JavaSecurity
これでさようなら。pkgutil --forgetで、pkgの一覧から出ないようにするのを忘れないことと、先にforgetしてしまうとrm_pkg_filesは、pkgutil --filesの結果を使うので「消せなくなる」という悲しいことが生じるので、こちらを先に実行するようにしてくださいね。

for文で書くと、どっちがどっちかあまり考えずにワンライナーでやってしまい後悔する(あらためてAppleからダウンロードしてインストールしなおすはめに)ことになりますはい。