Da es kein leichtes Unterfangen war, Oracle Berkeley DB XML auf FreeBSD 7.0/7.1 (amd64) mit Java-Binding zu installieren, hier die Beschreibung, wie es geht:
1. Sourcen herunterladen und entpacken
http://www.oracle.com/technology/software/products/berkeley-db/xml/index.html
2. jdk, linux-expat und gmake installieren:
cd /usr/ports/textproc/linux-expat/ && make install clean cd /usr/ports/devel/gmake/ && make install clean cd /usr/ports/java/jdk16/ && make install clean
(Java-Sourcen müssen, wie im Port beschrieben, von java.sun.com heruntergelden werden.)
3. Datei /etc/libmap.conf anpassen oder ändern:
echo "libc_r.so.7 libpthread.so # Everything that uses 'libc_r'" >> /etc/libmap.conf echo "libc_r.so libpthread.so # now uses 'libpthread'" >> /etc/libmap.conf
Am besten mit find /usr -name “libc_r.so*” gucken, ob es so.7 oder so.6 heißen muss.
Falls gar kein Shared object vorliegt, müssten die Quelldateien von libc_r (durch die Installation der obigen Ports) in /usr/src/lib/libc_r liegen. Dann hier einfach “make && make install” eingeben.
4. Path erweitern, damit das Java Native Interface (jni.h) gefunden wird, und Sourcen kompilieren:
export PATH="/usr/local/jdk1.6.0/include:/usr/local/jdk1.6.0/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/root/bin" ./buildall.sh --enable-java -p freebsd -m gmake -b 64 -x c++
Auf 32-Bit-Systemen sollte “-b 64″ weg gelassen werden. “-b 32″ ist Standard.
5. Die kompilierten Dateien liegen im ./install-Verzeichnis.
Einfach von hier an eine beliebige andere Stelle verschieben und ggf. in den Pfad aufnehmen.
Das war’s schon!
Wenn man nachher ein Java-Programm betreiben will, das dbxml.jar benutzt, muss der Flag des Installationsverzeichnisses von dbxml im Classpath angehangen werden:
# /usr/local/jdk1.6.0/bin/java \ -Djava.library.path=/usr/local/dbxml/lib \ ...
Falls es zu Problemen wie diesem hier kommt:
java.lang.UnsatisfiedLinkError: no dbxml_java-2.4 in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682) at java.lang.Runtime.loadLibrary0(Runtime.java:823) at java.lang.System.loadLibrary(System.java:1030) at com.sleepycat.dbxml.dbxml_javaJNI.<clinit>(dbxml_javaJNI.java:49) at com.sleepycat.dbxml.XmlManager.<init>(XmlManager.java:56)
Einfach einige Symlinks im Lib-Verzeichnis setzen:
ln -s libdbxml_java-2.4.so.0.0 libdbxml_java-2.4.so ln -s libdbxml_java-2.4.so.0.0 libdbxml_java-2.4_g.so ln -s libdbxml_java-2.4.so.0.0 libdbxml_java-2.so ln -s libdbxml_java-2.4.so.0.0 libdbxml_java.so ln -s libdbxml-2.4.so.0.0 libdbxml.so ln -s libdbxml-2.4.so.0.0 libdbxml-2 ln -s libdbxml-2.4.so.0.0 libdbxml-2.4.so
Fehlermeldungen im Kontext
Beim Kompilieren von XERCES und XQILLA traten bei mir folgende Fehler auf:
- checking for gcc… gcc
checking for C compiler default output file name…
configure: error: C compiler cannot create executables
See `config.log’ for more details. - /usr/bin/ld: cannot find -lc_r






