A More FHS-Compliant JDK Install

Lussier, Denis denisl at openscg.com
Mon Jan 3 00:55:53 UTC 2011


Hi Shea,

I am sorry for my ignorance, but... why is /opt not an appropriate location
for OpenJDK??

OpenSCG's installer binaries for OpenJDK 6 are built on CentOS 4, install in
a directory under /opt (when installed as root).  They seem to work fine in
all the modern Linux Distro's without doing anything funky/extra with LIB
files.

I believe this is similar to how Oracle builds their commercial JDK bu ilds,
but, perhaps I am naive. :-)

--Luss
  http://openscg.org

On Sun, Jan 2, 2011 at 6:17 PM, Shea Levy <shea at shealevy.com> wrote:

> Hi all,
>
> 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 (
> http://www.linuxfromscratch.org/blfs/view/svn/introduction/position.html),
> but everything that follows should apply to /usr/local.
>
> My set up for now:
>
> I've copied build/linux-i586/bin/* to /usr/bin. No problems there.
>
> 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
>
> I've copied 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.
>
> I've copied 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 build/linux-i586/
>
> I've copied build/linux-i586/include/* to /usr/include/java. No problems
> there.
>
> I've copied build/linux-i586/docs/* to /usr/share/doc/openjdk-6-20b
>
> Output of ldd /usr/bin/java:
>
> linux-gate.so.1 =>  (0xb77b6000)
> libpthread.so.0 => /lib/libpthread.so.0 (0xb7793000)
> 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 (0xb7626000)
> /lib/ld-linux.so.2 (0xb77b7000)
>
> System.getProperty("sun.boot.class.path"):
>
>
> /usr/lib/resources.jar:/usr/lib/rt.jar:/usr/lib/sunrsasign.jar:/usr/lib/jsse.jar:/usr/lib/jce.jar:/usr/lib/charsets.jar:/usr/classes
>
> 1. Am I missing any important files if that's all I bring over from
> build/linux-i586/ ?
>
> 2. Am I right that some of these file locations aren't the most appropriate
> given Linux standards?
>
> 3. For 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
> Makefile?)
>
> 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?
>
> Cheers,
>
> Shea Levy
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/build-dev/attachments/20110102/c3cb21b8/attachment.html>


More information about the build-dev mailing list