Wow. Great detective work. I'm sure there's a way to put dependency requirements into an RPM.... although I am probably closer to understanding guage theory on principal fibre bundles than knowing how to properly mangle a spec file. :-p So who gets to update the rpm? The Free Software Foundation, Sun, Red Hat, or Troy? :-) :-) :-) -Dave David Gore, Ph.D. <HAT> Beam-line Scientist </HAT> Research Assist. Professor of Physics <HAT> Beam-line Operations Manager </HAT> Illinois Institute of Technology <HAT> Visiting Experimenter Support </HAT> V (630) 252 0547 [02:76:00:FC:02:23] <HAT> Computer Administrator </HAT> F (630) 252 0545 [02:76:00:FC:02:21] <HAT> Safety Officer </HAT> http://www.bio.aps.anl.gov/~dgore "Multi religiosi, pauci leones" GPG PUBLIC KEY FINGERPRINT: 08D9 003D 3F57 FEEF B9F5 1D2E 657E 88C0 FE83 191C "If your VCR is still blinking '12:00,' Linux is probably not the right answer." Jon Peatfield wrote: > On Tue, 29 May 2007, Glenn Morris wrote: > >> FWIW, I had these links in / after an install as well (but only one on >> machine out of five so far). Looks like the culprit can only be >> java-1.4.2-gcj-compat-devel, but I can't see how. > > > How about this as an explanation... > > $ mkdir -p /tmp/foo && cd /tmp/foo > $ ls -al > total 12 > drwxr-xr-x 2 jp107 other 4096 May 28 13:16 ./ > drwxrwxrwt 29 root root 8192 May 31 01:12 ../ > $ ln -sf `gcj -print-file-name=include/jawt_md.h` > /usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/include/linux/jawt_md.h > -bash: gcj: command not found > $ ls -al > total 12 > drwxr-xr-x 2 jp107 other 4096 May 31 01:24 ./ > drwxrwxrwt 29 root root 8192 May 31 01:12 ../ > lrwxrwxrwx 1 jp107 other 59 May 31 01:24 jawt_md.h -> > /usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/include/linux/jawt_md.h > > that ln is from the postinstall scriptlett, if it gets run while gcj > isn't available it drops the bad link in . which is probably / during > install. > > I wonder if any scriptlet errors (during the install) get logged > somewhere useful like anaconda.log... > > $ rpm -qp java-1.4.2-gcj-compat-devel-1.4.2.0-40jpp.112.i386.rpm > --scripts| grep -A2 ln > ln -sf \ > `gcj -print-file-name=include/jni.h` \ > /usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/include/jni.h > -- > ln -sf \ > `gcj -print-file-name=include/jni_md.h` \ > /usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/include/linux/jni_md.h > -- > ln -sf \ > `gcj -print-file-name=include/jawt.h` \ > /usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/include/jawt.h > -- > ln -sf \ > `gcj -print-file-name=include/jawt_md.h` \ > /usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/include/linux/jawt_md.h > > So that explains how/why it can happen, but doesn't really provide a fix. > >> This rpm seems to be broken in other ways; eg an install creates the >> directory /usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/include and populates >> it with links, but they are not registered as belonging to the >> package, and are not removed by an uninstall. > > > It presumably adds the links in the postinstall 'cos it doesn't know > what they will point at (depends on gcj). Maybe marking them as > shadow would do the right thing on an uninstall -- but it could at > least rm them in the postuninstall since it does know the link-names... > > Is there a simple way to require that package to be installed after > whatever is providing gcj (if anything)? >