macportsからsubversionをインストールしようとしたらdb46のインストールでハマったのでメモ。
db46単体でインストールしようとするとこんなエラーが。
$ sudo port install db46
---> Computing dependencies for db46
---> Fetching db46
---> Verifying checksum(s) for db46
---> Extracting db46
---> Applying patches to db46
---> Configuring db46
---> Building db46
Error: Target org.macports.build returned: shell command failed
Log for db46 is at: /opt/local/var/macports/logs/_Users_sanojimaru_db46/main.log
Error: Status 1 encountered during processing.
To report a bug, see <http://guide.macports.org/#project.tickets>
ログにgrepをかけてみる。
$ cat /opt/local/var/macports/logs/_Users_sanojimaru_db46/main.log | grep 'error'
:info:build ../dist/../libdb_java/db_java_wrap.c:123:17: error: jni.h: No such file or directory
:info:build ../dist/../libdb_java/db_java_wrap.c:147: error: expected ')' before '*' token
:info:build ../dist/../libdb_java/db_java_wrap.c:196: error: expected ')' before '*' token
:info:build ../dist/../libdb_java/db_java_wrap.c:200: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
以下略
javaが悪いことしてそう。
とりあえずググると、/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDKに何かシンボリックリンクを張ったら動いたとの記述を発見(ソース失念><)したので、とりあえず該当パスを見てみた。
$ ls /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
drwxr-xr-x 11 root wheel 374 10 28 16:07 .
drwxr-xr-x 3 root wheel 102 10 12 14:56 ..
drwxr-xr-x 11 root wheel 374 10 22 14:16 Classes
drwxr-xr-x 41 root wheel 1394 10 22 14:16 Commands
drwxr-xr-x 6 root wheel 204 10 22 14:16 Home
-rw-r--r-- 1 root wheel 1576 10 12 14:39 Info.plist
drwxr-xr-x 50 root wheel 1700 10 22 14:16 Libraries
drwxr-xr-x 3 root wheel 102 10 22 14:16 MacOS
drwxr-xr-x 21 root wheel 714 10 22 14:16 Resources
-rw-r--r-- 1 root wheel 454 10 12 14:42 version.plist
あれ、Headersがない。。。
とりあえず、JDKの方のCurrentJDK/Headersにシンボリックリンクを張りつつ再チャレンジ。
$ ln -s /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers
$ sudo port -f clean --all db46
$ sudo port install db46
---> Computing dependencies for db46
---> Fetching db46
---> Attempting to fetch patch.4.6.21.1 from http://download.oracle.com/berkeley-db/patches/db/4.6.21/
---> Attempting to fetch patch.4.6.21.2 from http://download.oracle.com/berkeley-db/patches/db/4.6.21/
---> Attempting to fetch patch.4.6.21.3 from http://download.oracle.com/berkeley-db/patches/db/4.6.21/
---> Attempting to fetch patch.4.6.21.4 from http://download.oracle.com/berkeley-db/patches/db/4.6.21/
---> Attempting to fetch db-4.6.21.tar.gz from http://download-uk.oracle.com/berkeley-db/
---> Verifying checksum(s) for db46
---> Extracting db46
---> Applying patches to db46
---> Configuring db46
---> Building db46
---> Staging db46 into destroot
---> Installing db46 @4.6.21_6
---> Activating db46 @4.6.21_6
---> Cleaning db46
通ったよっと。
30分ぐらいハマった。
今日は忙しいので原因究明は我慢するっ
–2010年11月5日修正–
–$ ln -s /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers /Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers
++$ ln -s /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers
リンクの置き場所のパスが間違っていました、申し訳ございません。