Mac OS X 10.9 (Marvericks) にHomebrewをインストールしたときにはまったこと
インストール環境
- Mac OS X 10.9 (Marvericks)
はまった内容
巷のサイトにあるようにJREをインストールしても、ターミナルでjavaのパスがうまく通らない。
インストール後も以下のように、インストールされていないよと言われる。
% java -version No Java runtime present, requesting install.
「システム環境設定」を開くと、最下部にJavaのアイコンがあるため、インストールされていることはわかった。
JREのパスはデスクトップから「システム環境設定」→「Java」→「Javaコントロール・パネル」→「Java」タブ→「表示」から確認できた。
調べてみると、どうやらJREのJAVA_HOMEが「/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home」であるため、「/usr/bin/java」で起動できるように一工夫が必要ということが分かった。
- 参考URL
以下の手順でターミナル上からjavaコマンドにパスを通すことができた。
% sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home /System/Library/Frameworks/JavaVM.framework/Versions/1.7.0 Password: % vi .zshrc export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.7.0 % source .zshrc % java -version java version "1.7.0_45" Java(TM) SE Runtime Environment (build 1.7.0_45-b18) Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
ただ、何か腑に落ちない。
試しに、上記の設定を一旦削除し、JDKをインストールしてみた。 ※JREをインストールしてから1週間程度たっていたため、Versionが1.7.0.u51をインストール。
すると、普通にパスが通った。
javaコマンドのパスを辿ってみる。
% which java /usr/bin/java % ls -l /usr/bin/java lrwxr-xr-x 1 root wheel 74 10 31 15:52 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java % ls -l /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java -rwxr-xr-x 1 root wheel 50432 10 31 15:52 /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java % ls -l /System/Library/Frameworks/JavaVM.framework/Versions/Current lrwxr-xr-x 1 root wheel 1 10 31 15:52 /System/Library/Frameworks/JavaVM.framework/Versions/Current -> A % ls -l /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java -rwxr-xr-x 1 root wheel 50432 10 31 15:52 /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java % /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java -version java version "1.7.0_51" Java(TM) SE Runtime Environment (build 1.7.0_51-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
幾つかのサイトによれば、JDKは「Library/Java/JavaVirtualMachines」配下にVersionを分けてインストールされるようだ。
% ls -l /Library/Java/JavaVirtualMachines total 0 drwxr-xr-x 3 root wheel 102 1 25 15:13 jdk1.7.0_51.jdk % ls -l /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home total 39768 -rw-rw-r-- 1 root wheel 3339 12 19 12:13 COPYRIGHT -rw-rw-r-- 1 root wheel 40 12 19 12:13 LICENSE -rw-rw-r-- 1 root wheel 114 12 19 12:13 README.html -rw-rw-r-- 1 root wheel 123324 12 19 06:34 THIRDPARTYLICENSEREADME-JAVAFX.txt -rw-rw-r-- 1 root wheel 173559 12 19 12:13 THIRDPARTYLICENSEREADME.txt drwxrwxr-x 44 root wheel 1496 12 19 12:19 bin drwxrwxr-x 9 root wheel 306 12 19 12:13 db drwxrwxr-x 9 root wheel 306 12 19 12:13 include drwxrwxr-x 10 root wheel 340 12 19 12:16 jre drwxrwxr-x 14 root wheel 476 12 19 12:17 lib drwxrwxr-x 5 root wheel 170 12 19 06:34 man -rw-rw-r-- 1 root wheel 502 12 19 12:13 release -rw-rw-r-- 1 root wheel 20039662 12 19 12:13 src.zip % /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/java -version java version "1.7.0_51" Java(TM) SE Runtime Environment (build 1.7.0_51-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
確かに動作はするようだが、「/System/Library/Frameworks/JavaVM.framework/Versions」との関連性は見えてこない。
いったいどれが本物なのか。。。
どれもバイナリファイルなので、感覚だけではこの辺が限界だった。
もう少し、調査が必要だ。