Red Hat Bugzilla – Bug 130499
libgcj update rpm wipes out java and javac
Last modified: 2007-11-30 17:07:03 EST
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4.3)
Description of problem:
Can't do java development or run ordinary java programs.
The damage was done by up2date. I have not been able to find any
Version-Release number of selected component (if applicable):
Steps to Reproduce:
Actual Results: A place holder scrit runs instead of the compiler or
the run-time. The place holder outputs a cryptic messages to stdout.
Expected Results: javac should run
java should run
Which version of java and javac were installed? What rpms were they
part of? And do they rpms still believe they are installed?
java and javac are part of the rpm j2sdk-1.4.2_03-fcs
Yes they are installed. By hand I have fixed up the soft links from
I had to spend at least an hour researching how to do this but,
a worse problem is that necessary functions were broken for some
time before this was discovered.
I believe that installing an unrelated rpm should not cause this
kind of grief. If it is going to make such a change, the least it
could do is give a detailed message describing the links that have
to be set up rather than the cryptic message that is now produced.
Better yet, when an rpm breaks existing links in order to implement
alternatives, the installer should include logic to determine which
alternative is currently being used. Instead an alternative was
set up that few on earth choose to use. This is all too reminiscent
of the way things are done in MS land.
It should be sufficient to have /usr/java/j2sdk1.4.2_03/bin appear in
PATH before /usr/bin (rather than altering the symlinks by hand).
This change was designed to work with supported RHEL3 JVM packages.
It causes problems however, if a non-RHEL3 JVM's bin directory appears
after /usr/bin in the PATH. The new libgcj rpm (for the reasons
described in the placeholder script) installs java and javac
alternatives symlinks in /usr/bin, so it overrides any java commands
that appear after /usr/bin in PATH.
I'll append a message to this effect to the output of the placeholder
script in the next release of libgcj.
I'm appending this message to the placeholder script's output:
This script was designed to be overridden by the supported RHEL3 JRE
packages, java-1.4.2-bea and java-1.4.2-ibm. It is installed as an
alternative symlink as /usr/bin/java. It will override a third-party
(non-RHEL3) JRE's java command if the JRE's bin directory is listed
after /usr/bin in PATH. In that case, it is recommended that the
third-party JRE's bin directory be listed first in PATH instead.
That last comment applied to libgcj-java-placeholder.sh.
To libgcj-javac-placeholder.sh I'll add:
This script was designed to be overridden by the supported RHEL3 SDK
packages, java-1.4.2-bea-devel and java-1.4.2-ibm-devel. It is
installed as an alternative symlink as /usr/bin/javac. It will
override a third-party (non-RHEL3) SDK's javac command if the SDK's
bin directory is listed after /usr/bin in PATH. In that case, it is
recommended that the third-party SDK's bin directory be listed first
in PATH instead.
New text in libgcj-3.2.3-47.
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.