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
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
- duplicates
-
JDK-8023979 The JRE and JDK installers for Linux should use " update-alternatives "
-
- Closed
-