Skip to content

Instantly share code, notes, and snippets.

@florian-h05
Last active November 17, 2022 18:26
Show Gist options
  • Save florian-h05/bc5367263733db2c73e843fcd4033631 to your computer and use it in GitHub Desktop.
Save florian-h05/bc5367263733db2c73e843fcd4033631 to your computer and use it in GitHub Desktop.
Script for installing GraalVM Community Edition on Linux

GraalVM Community Edition Installation on Linux

Get a download link from the GraalVM CE Release Site.

Run the graalvm-install.bash script as sudo/root and pass the download link as a parameter.

After the script has run, use update-java-alternatives to select the JDK.

name=graalvm-ce-java
priority=1119
section=main
hl rmid /usr/lib/jvm/graalvm-ce-java/bin/rmid
hl java /usr/lib/jvm/graalvm-ce-java/bin/java
hl keytool /usr/lib/jvm/graalvm-ce-java/bin/keytool
hl jjs /usr/lib/jvm/graalvm-ce-java/bin/jjs
hl pack200 /usr/lib/jvm/graalvm-ce-java/bin/pack200
hl rmiregistry /usr/lib/jvm/graalvm-ce-java/bin/rmiregistry
hl unpack200 /usr/lib/jvm/graalvm-ce-java/bin/unpack200
jdkhl jar /usr/lib/jvm/graalvm-ce-java/bin/jar
jdkhl jarsigner /usr/lib/jvm/graalvm-ce-java/bin/jarsigner
jdkhl javac /usr/lib/jvm/graalvm-ce-java/bin/javac
jdkhl javadoc /usr/lib/jvm/graalvm-ce-java/bin/javadoc
jdkhl javap /usr/lib/jvm/graalvm-ce-java/bin/javap
jdkhl jcmd /usr/lib/jvm/graalvm-ce-java/bin/jcmd
jdkhl jdb /usr/lib/jvm/graalvm-ce-java/bin/jdb
jdkhl jdeprscan /usr/lib/jvm/graalvm-ce-java/bin/jdeprscan
jdkhl jdeps /usr/lib/jvm/graalvm-ce-java/bin/jdeps
jdkhl jimage /usr/lib/jvm/graalvm-ce-java/bin/jimage
jdkhl jinfo /usr/lib/jvm/graalvm-ce-java/bin/jinfo
jdkhl jlink /usr/lib/jvm/graalvm-ce-java/bin/jlink
jdkhl jmap /usr/lib/jvm/graalvm-ce-java/bin/jmap
jdkhl jmod /usr/lib/jvm/graalvm-ce-java/bin/jmod
jdkhl jps /usr/lib/jvm/graalvm-ce-java/bin/jps
jdkhl jrunscript /usr/lib/jvm/graalvm-ce-java/bin/jrunscript
jdkhl jshell /usr/lib/jvm/graalvm-ce-java/bin/jshell
jdkhl jstack /usr/lib/jvm/graalvm-ce-java/bin/jstack
jdkhl jstat /usr/lib/jvm/graalvm-ce-java/bin/jstat
jdkhl jstatd /usr/lib/jvm/graalvm-ce-java/bin/jstatd
jdkhl rmic /usr/lib/jvm/graalvm-ce-java/bin/rmic
jdkhl serialver /usr/lib/jvm/graalvm-ce-java/bin/serialver
jdkhl jhsdb /usr/lib/jvm/graalvm-ce-java/bin/jhsdb
jdk jconsole /usr/lib/jvm/graalvm-ce-java/bin/jconsole
jdk jfr /usr/lib/jvm/graalvm-ce-java/bin/jfr
jdk jvisualvm /usr/lib/jvm/graalvm-ce-java/bin/jvisualvm
#!/bin/bash
# Purpose: Install GraalVM CE on Linux
# Author: Florian Hotze
# License: MIT
if [ "${EUID:-$(id -u)}" -ne 0 ]; then echo "Please run as root or with sudo!" && exit; fi
DOWNLOAD_LINK=$1 # Example: https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.3.0/graalvm-ce-java11-linux-amd64-22.>
GRAALVM_ARCHIVE="$(pwd)/$(basename "${DOWNLOAD_LINK}")"
echo "Downloading GraalVM..."
wget "${DOWNLOAD_LINK}" 2>&1 | grep ERROR
echo "Extracting GraalVM..."
GRAALVM_EXTRACTED=$(tar -tf "${GRAALVM_ARCHIVE}" | head -1 | sed -e 's/\/.*//')
tar -xzf "${GRAALVM_ARCHIVE}"
echo "Moving GraalVM to /usr/lib/jvm..."
mv "$(pwd)/${GRAALVM_EXTRACTED}" /usr/lib/jvm/
echo "Adding GraalVM to alternatives..."
GRAALVM_PATH="/usr/lib/jvm/${GRAALVM_EXTRACTED}"
add_alternative () {
update-alternatives --install "/usr/bin/${1}" "${1}" "${GRAALVM_PATH}/bin/${1}" 1119
}
# Add alternatives for stuff provided by the OpenJDK
for val in java jjs keytool pack200 rmid rmiregistry unpack200; do
add_alternative "${val}"
done
# Add alternatives for some GraalVM stuff
for val in gu javac jconsole javadoc jshell; do
add_alternative "${val}"
done
echo "Installing config file for update-java-alternatives..."
wget -P /usr/lib/jvm/ https://gist.githubusercontent.com/florian-h05/bc5367263733db2c73e843fcd4033631/raw/cedd042455ac1c5077994dada2617b19d962c95d/graalvm-ce-java.jinfo 2>&1 | grep ERROR
sed -i 's/graalvm-ce-java/'"${GRAALVM_EXTRACTED}"'/g' /usr/lib/jvm/graalvm-ce-java.jinfo
mv /usr/lib/jvm/graalvm-ce-java.jinfo "/usr/lib/jvm/.${GRAALVM_EXTRACTED}.jinfo"
echo "Installing VisualVM..."
gu install visualvm > /dev/null
add_alternatives jvisualvm
echo "Use 'update-java-alternatives' (Debian) or 'alternatives --config java' (Fedora) to change the JDK"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment