Oracle GraalVM Enterprise Edition 19 contains GraalVM Updater command line
gu, to add support for additional features.
- Native Image plugin that allows scripted applications to be compiled ahead-of-time into a native machine-code binary. Warning: Native Image plugin is available as an Early Adopter technology.
- Polyglot support for the Python, R, and Ruby languages. Warning: GraalVM Enterprise support for Python, R and Ruby languages is experimental. Experimental features might never be included in a production version, or might change significantly before being considered production-ready.
To assist a user with the installation, these features are pre-packaged as Components. These components are not part of the GraalVM Enterprise core distribution and must be downloaded and installed separately. GraalVM Updater also verifies whether the version of the component is appropriate for a 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 the tool is located in the
To start using the
gu installer tool, resolve the
PATH environment variable to the GraalVM
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 [-clLprstuv] <param>||Print the information about specific component (from file, URL or catalog).|
|gu available [-lv] <expr>||List components available in the catalog.|
|gu install [-0cfiLnorvyxY] <param>||Install a component package.|
|gu list [-clv] <expression>||List installed components, or components from catalog.|
|gu rebuild-images||Rebuild native images.|
|gu remove [-0fxv] <id>||Uninstall a component.|
|gu update [-x] [<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.|
Two modes of a component installation are supported:
Manual installation: A user downloads the component package from Oracle Technology Network page and GraalVM Updater will install it. It requires accepting the License Agreement before downloading. The following pre-built components are available for GraalVM Enterprise:
With the already downloaded package archive, the component can be installed as:
gu -L install component.jar
-L option, equivalent to
--local-file, tells to install a component from a downloaded archive.
Installation from catalog: There is a list of components maintained by Oracle, allowing to install a component just by name. 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 which components are available in the catalog and get their IDs, and descriptive names, use:
Then, the component can be installed by using its
ComponentId (for example
gu install ruby
To see more verbose output during the installation, like the download progress bar, print versions and dependency information, use the
Warning: By installing a component from catalog, GraalVM Enterprise would by default
download it from GitHub. To prevent installation of “community” component version, install it manually.
The installation of the R language component is available only from catalog (
gu install R).
Installed components can be printed by:
GraalVM Updater can list components in the component catalog (not necessarily installed on your machine):
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.
Replacing 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
--local-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