A More FHS-Compliant JDK Install
shea at shealevy.com
Sun Jan 2 23:17:03 UTC 2011
I've just successfully built openjdk6, and am wondering about
the best way to install it on my system, given that the /opt prefix is no
longer obviously appropriate for the build. I have an install that works
for now, but there are aspects I'm unhappy with. I am on a Linux From
Scratch system, so I install everything into /usr
), but everything that follows should apply to /usr/local.
My set up
I've copied build/linux-i586/bin/* to /usr/bin. No problems
I've copied build/linux-i586/lib/* to /usr/lib, but upon review I
think it probably belongs in a separate /usr/lib/java/ since there aren't
any .so files in the base of build/linux-1586/lib. If I try that, running
/usr/bin/java complains of being unable to find libjli.so
build/linux-i586/classes/ to /usr. This is the most disconcerting, as I'd
rather not add to the root of /usr and these files seem perfectly suited to
fit in /usr/lib/java. If I try moving it there, running /usr/bin/java
complains of having no class definition for Object.
build/linux-i586/j2sdk-image/man/man1/* to /usr/share/man/man1. No problems
there, though it would be nice if there were a share directory in
I've copied build/linux-i586/include/* to
/usr/include/java. No problems there.
I've copied build/linux-i586/docs/*
Output of ldd /usr/bin/java:
linux-gate.so.1 => (0xb77b6000)
libpthread.so.0 => /lib/libpthread.so.0
libjli.so => /usr/bin/../lib/i386/jli/libjli.so (0xb778a000)
libdl.so.2 => /lib/libdl.so.2 (0xb7786000)
libc.so.6 => /lib/libc.so.6
1. Am I missing any important files if that's all I bring over from
2. Am I right that some of these file locations
aren't the most appropriate given Linux standards?
build/linux-i586/lib: I could manually relink all of the relevant binaries
to the new library locations. Would there be any problems aside from
linking in moving those files to /usr/lib/java? Is there a better way than
manual relinking to specify that those files lie in a different directory
(e.g. some sort of ALT env variable, or a simple modification to a
3. For build/linux-i586/classes: I could globally alias java
to java -Xbootclasspath:whatever, but that's ugly. I'm pretty sure there
has to be some Makefile I could edit to change the built in bootclasspath,
since build/linux-i586/j2sdk-image/bin/java looks in ../jre/classes, but
I'm not sure where to start looking. What Makefile would I need to modify?
Or is there an env variable I could set?
4. In general, are there plans
to autotool the build or add an install target to the main Makefile?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the build-dev