Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8044320

Add support for /etc/alternatives

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Duplicate
    • Icon: P4 P4
    • 9
    • 7, 8-pool, 9
    • install
    • x86
    • linux

      A DESCRIPTION OF THE REQUEST :
      The jre/jdk rpms do not support the "alternatives" command which is used in Fedora and other distros.

      JUSTIFICATION :
      Individual users can choose to use jre/jdk instead of the default java by changing PATH, MANPATH, and probably some other environment variables, but the jre rpm does not support a global choice by the system administrator using the alternatives command to make the links in /etc/alternatives point to the /usr/java/default/ files.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      The rpm scripts should ensure that one of the alternatives for java available to the system administrator is the jre/jdk. And incidentally, for this to work properly, the man pages need to be gzipped.
      ACTUAL -
      No alternatives commands are executed.

      CUSTOMER SUBMITTED WORKAROUND :
      ==> alternatives-command <==
      #!/bin/bash
      /usr/sbin/alternatives --install /usr/bin/java java /usr/java/default/bin/java 20000 --slave /usr/bin/javaws javaws /usr/java/default/bin/javaws --slave /usr/bin/keytool keytool /usr/java/default/bin/keytool --slave /usr/bin/orbd orbd /usr/java/default/bin/orbd --slave /usr/bin/pack200 pack200 /usr/java/default/bin/pack200 --slave /usr/bin/rmid rmid /usr/java/default/bin/rmid --slave /usr/bin/rmiregistry rmiregistry /usr/java/default/bin/rmiregistry --slave /usr/bin/servertool servertool /usr/java/default/bin/servertool --slave /usr/bin/tnameserv tnameserv /usr/java/default/bin/tnameserv --slave /usr/bin/unpack200 unpack200 /usr/java/default/bin/unpack200 --slave /usr/share/man/man1/java.1.gz java.1.gz /usr/java/default/man/man1/java.1.gz --slave /usr/share/man/man1/keytool.1.gz keytool.1.gz /usr/java/default/man/man1/keytool.1.gz --slave /usr/share/man/man1/orbd.1.gz orbd.1.gz /usr/java/default/man/man1/orbd.1.gz --slave /usr/share/man/man1/pack200.1.gz pack200.1.gz /usr/java/default/man/man1/pack200.1.gz --slave /usr/share/man/man1/rmid.1.gz rmid.1.gz /usr/java/default/man/man1/rmid.1.gz --slave /usr/share/man/man1/rmiregistry.1.gz rmiregistry.1.gz /usr/java/default/man/man1/rmiregistry.1.gz --slave /usr/share/man/man1/servertool.1.gz servertool.1.gz /usr/java/default/man/man1/servertool.1.gz --slave /usr/share/man/man1/tnameserv.1.gz tnameserv.1.gz /usr/java/default/man/man1/tnameserv.1.gz --slave /usr/share/man/man1/unpack200.1.gz unpack200.1.gz /usr/java/default/man/man1/unpack200.1.gz

      ==> create-alternatives-command <==
      #!/bin/bash
      printf '%s\n' "#!/bin/bash"
      printf '%s \\\n' "/usr/sbin/alternatives --install"
      printf ' %s \\\n' "/usr/bin/java java /usr/java/default/bin/java 20000"
      cat /var/lib/alternatives/java | tr \\n @ | sed "s/^[^@]*@[^@]*@//; s/@ *@.*/@/; s:@/: /:g" | tr @ \\n | while read name link; do
            nogz=${name%.gz}
            path=$( rpm -ql jre | egrep '(/bin/|/man/man1/)'$nogz'$' | sed 's:^/usr/java/[^/]*/:/usr/java/default/:' )
            if [[ -n "$path" ]]; then
               printf ' %s \\\n' "--slave $link $name ${path%${nogz}}$name"
            else
               echo "$0: Not found in rpm -ql jre: $link $name" >&2
            fi
         done
      echo

      ==> gzip-the-man-pages <==
      for f in /usr/java/jre*/man/man1/*.1; do gzip --stdout $f >$f.gz; done

            pbhat Pranav Bhat (Inactive)
            pardesha Pardeep Sharma
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported: