Hi,
firstly i recommend to use Fedora toolbox [0] for this kind of things on
Silverblue (it's part of Silverblue already).
Secondly, isn't this what modules are meant for? I'm not sure if there
is one for JDK on Fedora.
Regards,
Michal Konecny
[0] -
Hi,
I'm thinking of switching to Fedora 30 Silverblue(once it comes out of
beta anyway) from Arch linux. One of the requirements is to be able to
install, compile from source and easily switch between JDK builds.
However, Fedora fails to meet these requirements so badly I'm fairly
certain whoever packaged and approved the various Java RPMs was on
shrooms(partial offense, sorry but this is nuts).
Confused? Never installed Java in Fedora before? Lets go down the
rabbit hole together!
Firstly, the java version installed by doing:
rpm-ostree install java
gets you Java 8. I understand that Red Hat is providing support until
sometime 2023 however I feel it to be much more appropriate that this
either gives the latest LTS(11 currently) or the newest JDK(12
currently). Even if still technically support, installing a JRE that
old isn't likey to be advised. Even in Ubuntu 18.10 you get Java 11.
OK, so just specify the specific versions that you actually need and
everything will work as it should. No big deal, right? Nope.
alternatives(see:
https://fedoraproject.org/wiki/Java), which is
supposed to allow you to switch between Java versions, flat out
doesn't work. You tell it to list all alternatives like so:
alternatives --display java
and the command executes without printing anything. Odd. Let's just
check what's in /usr/lib/jvm for a sanity check:
ls /usr/lib/jvm
java-11-openjdk-11.0.2.7-7.fc30.x86_64
java-12-openjdk-12.0.0.33-1.ea.1.rolling.fc30.x86_64
java-1.8.0-openjdk-1.8.0.201.b09-6.fc30.x86_64
jre
jre-11
jre-11-openjdk
jre-11-openjdk-11.0.2.7-7.fc30.x86_64
jre-12
jre-12-openjdk
jre-12-openjdk-12.0.0.33-1.ea.1.rolling.fc30.x86_64
jre-1.8.0
jre-1.8.0-openjdk
jre-1.8.0-openjdk-1.8.0.201.b09-6.fc30.x86_64
jre-openjdk
...
What. I only installed Java 8, Java 11, and Java 12. Installing Java
on either Ubuntu and Arch doesn't duplicate any JRE/JDK like this.
OK, so lets open it in nautilus:
nautilus /usr/lib/jvm
Those aren't duplicates, all but 3 folders are system links? What?
This should be the one and only system location for JRE/JDK(s). What's
going on here? Where do they go?
They go to /etc/alternatives. I guess this is supposed to be how
alternatives finds alternative JRE/JDK installs. Ubuntu doesn't have
to do this for update-alternatives nor does Arch's archlinux-java
script but... OK. This is insanely complicated for no real good reason.
But wait, we aren't done yet because what's being linked to from
/usr/lib/jvm isn't a file, it's... another system link. Back to the 3
non system links in /usr/lib/jvm which have horrendously long and
complex folder names. Is calling them
java-<version>-<jre/jdk>-<oracle/zulu/openjdk> not enough?
To top this "what" fest off, the JRE/JDK folders in /etc/alternatives
aren't even named properly. That is to say, "jre" is attached to the
front even if what's being linked is a JDK. Yes, a JDK contains a JRE
but it's still horribly confusing for no good reason. Like, imagining
if alternatives did work, does it list duplicate entries for each
JRE/JDK? For example:
jre_11
java-11-openjdk
which(again) system link to the same JDK install.
What shroom induced insanity is this? Why does alternatives not work?
_______________________________________________
devel mailing list -- devel(a)lists.fedoraproject.org
To unsubscribe send an email to devel-leave(a)lists.fedoraproject.org
Fedora Code of Conduct:
https://getfedora.org/code-of-conduct.html
List Guidelines:
https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives:
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org