Oracle GraalVM Enterprise Edition includes GraalVM Updater – a command line
gu, to install and manage additional components.
- Native Image ahead of time compilation functionality that allows scripted applications to be compiled ahead-of-time into a native machine-code binary. Note: Native Image plugin is available as an Early Adopter technology.
- LLVM toolchain – a set of tools and APIs for compiling native programs to bitcode that can be executed with the GraalVM LLVM runtime.
- Python interpreter – an implementation of the Python 3.7 language.
- Ruby interpreter – an implementation of the Ruby 2.6.5 programming language.
- R interpreter – a GNU R 3.6.1 compatible implementation of the R programming language.
Note: Python, R and Ruby are experimental and not recommended for production use at this time.
These components are not part of the GraalVM Enterprise core distribution and must be downloaded and installed separately. To assist a user with installation, the components are pre-packaged as JAR files. GraalVM Updater also verifies whether the version of a component is appropriate for the current installation. Component packages are released for each GraalVM Enterprise distribution with respective updates. Component packages downloaded for previous release(s) cannot be used with newer ones.
The source code of GraalVM Updater is located in the
folder. To deploy the tool, confirm that GraalVM Enterprise is set in
PATH environment variable.
Three modes of a component installation are supported:
A manual installation is required for Oracle GraalVM Enterprise Edition users.
- Download a component package from the Oracle Technology Network page. The following pre-built components are available for download:
- Oracle GraalVM Enterprise Edition Native Image Early Adopter
- Oracle GraalVM Enterprise Edition Ruby Language Plugin
- Oracle GraalVM Enterprise Edition Python Language Plugin
- Having downloaded a component package in consideration of the operating system
and the underlying Java SE version, install it with:
gu -L install component.jar
For example, to install the Native Image component for Java 11 GraalVM Enterprise distribution on macOS, run:
gu -L install native-image-installable-svm-java11-darwin-amd64-19.3.2.jar
-L option, equivalent to
--file, tells to install a component from a downloaded JAR.
However, a component may depend on other components (e.g. the Ruby language depends on the LLVM toolchain). For example,
-L install component.jar will fail if the required components are not yet
installed. If all dependencies are downloaded into the same directory, a user can run:
gu -L install -D
gu --help or
gu -C how to instruct GraalVM Updater to find and process required components as well.
Installation from Catalog
The R language plugin and the LLVM toolchain component can be installed to GraalVM Enterprise from the GitHub catalog, maintained by Oracle. This allows to install a component just by its
gu install ComponentId
For example, to install R and LLVM toolchain, run:
gu install r gu install llvm-toolchain
GraalVM Updater first downloads the list of components,
then uses the information in the list to download the actual component package
and installs it. To see more verbose output during the installation, like the download progress bar, print versions and dependency information, use the
If a component being installed depends on another component, GraalVM Updater will search the catalog to find an appropriate dependency and install it as well. If required components could not be found, installation will fail.
Installation from Local Components Collection
Components can be downloaded manually in advance to a local file folder, or to a folder shared on the local network. GraalVM Updater can then use that folder instead of the catalog:
gu install -C /path/to/downloads/directory ComponentId
Specify the directory to use as components collection. It is possible to type
components names (like
ruby) instead of filenames. GraalVM Updater will also
attempt to find required dependencies in the local component collection.
When installing components from a given directory, you can allow installing all components which have correct version number for GraalVM Enterprise using wildcards:
./gu install -C ~/Download/Components/ native*
It will install the
native-image component, or anything that starts with
Check Installed Components
Installed on a machine components can be printed with:
A generic support R, Ruby, Python and WebAssembly languages will work out of the box in most cases. It is recommended to fine-tune system-dependent configurations, thus follow the recommendations in the component post-installation messages.
If a necessary component installed, check its version:
native-image --version llvm-toolchain --version ruby -v Rscript --version graalpython --version
Already installed on components can be printed with:
A set of GraalVM components that provide language implementations may change. Polyglot native image and polyglot native C library may be out of sync, particularly:
- new languages may not be accessible;
- removed languages may cause the native binary to fail on missing resources or libraries.
To rebuild and refresh the native binaries, use the following command:
gu rebuild-images [--verbose] polyglot|libpolyglot|js|llvm|python|ruby [custom native-image args]
Components may be uninstalled from the GraalVM Enterprise installation when no
longer needed. To uninstall a specific component, use its
gu list to find out the exact
ComponentId. The command to uninstall the
gu remove ruby
If more components end with, for example,
ruby, the installer will print an
error message that a component full name is required (
The uninstallation removes the files created during the installation. If a file
belongs to multiple components, it will be removed when the last component using
it is removed.
If GraalVM Updater needs to reach the component catalog, or download a component
package, it may need to pass through the HTTP/HTTPS proxy, if the network uses one. On
macOS, the proxy settings are automatically obtained from the OS. On Linux,
ensure that the
https_proxy environment variables are set
appropriately before launching the
gu tool. Refer to the distribution
and/or desktop environment documentation for the details.
GraalVM Updater intentionally does not support an option to disable certificate
or hostname verification, for security reasons. A user may try to add proxy’s
certificate to the GraalVM default security trust store. A user can also
download the components manually to a folder, and then use
gu -L install
gu -C /path/to/download/dir install component to install
from a local filesystem.
Replace Components and Files
A component may be only installed once. GraalVM Updater refuses to install a
component if a component with the same ID is already installed. But the
installed component may be replaced. GraalVM Updater first uninstalls the
component and then installs a new package. To replace component, use
option, and the
--file) option to treat parameters as local filename of a packaged component:
gu install -L -r component.jar gu install -r ruby
The process is the same as if
gu remove is run first and
gu install next.
The GraalVM Updater also refuses to overwrite existing files if the
to-be-installed and existing versions differ. There are cases when refreshing
file contents may be needed, if they were modified or damaged. Use
gu install -L -o component.jar gu install -o ruby
GraalVM Updater will just instruct to replace the contained files of a
component. By default, it will not alter anything. Alternatively, use
--force) option, which disables most of the checks and allows to install
GraalVM Updater Commands Overview
There is a command-line help available by running
gu <command> -h to get help specific for the particular command, for example,
gu install -h.
|gu info [-cClLnprstuvV] <param>||Print the information about specific component (from file, URL or catalog).|
|gu available [-aClvV] <expr>||List components available in the catalog.|
|gu install [-0cCDfFiLnorsuvyxY] <param>||Install a component package.|
|gu list [-clv] <expression>||List installed components, or components from catalog.|
|gu rebuild-images||Rebuild native images.|
|gu remove [-0Dfxv] <id>||Uninstall a component.|
|gu update [-cCnLsux] [<ver>] [<param>]||Upgrade to the recent GraalVM version.|
|gu <command> -h||Print help message about a specific command.|
|--auto-yes, -A||Say YES or ACCEPT to a question.|
|--catalog, -c||Treat parameters as component IDs from catalog of GraalVM components. This is the default.|
|--local-file, -L||Treat parameters as local filenames of packaged components.|
|--debug, -d||Enable debugging and print stacktraces.|
|--help, -h||Print the help message.|
|--no-progress, -n||Do not display download progress.|
|--non-interactive, -N||Enable non-interactive mode. Fail when input is required.|
|--url, -u||Interpret parameters as URLs of packaged components.|
|--verbose, -v||Enable verbose output. Print versions and dependency information.|