How-To: Deploy Java 21 OpenJDK in an Air-Gapped Environment using yumdownloader
This guide outlines a robust process for deploying Java 21 OpenJDK in environments with no internet connectivity (air-gapped systems). It leverages the yumdownloader utility to efficiently gather all necessary RPM packages and their dependencies from an internet-connected host, enabling a secure and controlled installation on the isolated target system.
Prerequisites
To successfully follow this guide, ensure you have the following:
Step-by-Step Guide
Step 1: Prepare the Internet-Connected Host
On your internet-connected AlmaLinux 9 (or equivalent RHEL/CentOS) host, we will use yumdownloader to collect all required RPMs.
Install yum-utils Package:
The yumdownloader utility is part of the yum-utils package. If it's not already installed, proceed with the installation.
sudo dnf install yum-utils |
You will be prompted to confirm the installation. Type y and press Enter.
Verify OpenJDK 21 Package Name:
Before downloading, it's a good practice to confirm the exact package name for Java 21 OpenJDK available in your repositories.
Look for the java-21-openjdk.x86_64 entry, which represents the primary runtime environment package.
Create a Dedicated Download Directory:
Establish a clean, dedicated directory to store all the downloaded RPM packages. This organization is vital for managing the numerous dependency files.
mkdir ~/openjdk-rpm-download |
Download Java 21 OpenJDK and its Dependencies:
This is the core step. Use yumdownloader with the --resolve option to automatically identify and download all recursive dependencies of java-21-openjdk. The --downloaddir option directs where these RPMs will be saved.
yumdownloader java-21-openjdk --downloaddir ~/openjdk-rpm-download --resolve |
java-21-openjdk: Specifies the primary package for which dependencies are to be resolved.
--downloaddir ~/openjdk-rpm-download: Sets the target directory for all downloaded RPM files.
--resolve: Crucial for air-gapped environments, this option ensures that yumdownloader fetches not only the specified package but also all its direct and indirect dependencies. This guarantees a self-contained set of RPMs for offline installation.
The download process may take some time, as OpenJDK has a significant number of dependencies (as observed in your previous output, around 130 packages).
Verify Downloaded Files:
Once the download operation completes, list the contents of your designated download directory to confirm that all expected RPM files are present.
ls ~/openjdk-rpm-download
You should see a comprehensive list of .rpm files, including java-21-openjdk-*.rpm and java-21-openjdk-headless-*.rpm, alongside all their required libraries and components.
Step 2: Transfer Files to the Air-Gapped Host
Securely move the entire ~/openjdk-rpm-download directory (containing all the collected RPM files) from your internet-connected host to a suitable location on the air-gapped target host.
Example using a USB Drive:
Copy to USB Drive (on Internet Host):
cp -r ~/openjdk-rpm-download /mnt/usb_drive/ # Adjust /mnt/usb_drive/ as per your system
Safely Unmount USB Drive (on Internet Host).
Connect USB Drive (to Air-Gapped Host).
Copy from USB Drive (on Air-Gapped Host):
cp -r /mnt/usb_drive/openjdk-rpm-download /opt/rpms/ # Adjust paths as needed
Step 3: Install Java 21 OpenJDK on the Air-Gapped Host
Manual Dependency Installation (For Learning/Debugging)
For those who wish to understand the dependency chain explicitly or debug specific issues, you can attempt to install packages one by one. This method is generally not recommended for production environments due to its tedious nature and potential for errors, but it is highly valuable for learning and precise dependency mapping.
Navigate to the RPM Directory:
cd /path/to/openjdk-rpm-download # Replace with the actual path where you transferred the RPMs |
Attempt to Install the Main Package First:
Start by trying to install the primary java-21-openjdk package. This will reveal its immediate missing dependencies.
sudo rpm -Uvh java-21-openjdk-21.0.8.0.9-1.el9.alma.1.x86_64.rpm |
You will likely see an error: Failed dependencies: output, similar to your original notes, listing all the immediate prerequisites. For example:
error: Failed dependencies:
fontconfig(x86-64) is needed by java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64
java-21-openjdk-headless(x86-64) = 1:21.0.8.0.9-1.el9.alma.1 is needed by java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64
libX11.so.6()(64bit) is needed by java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64
... (many more dependencies)
Install Listed Dependencies Iteratively:
Go through the list of failed dependencies and install them one by one. After installing a set of dependencies, try installing the main package again. Repeat this process until all dependencies are satisfied.
Example Iteration:
# Install fontconfig
sudo rpm -Uvh fontconfig-*.rpm
# Install java-21-openjdk-headless (often a major dependency)
sudo rpm -Uvh java-21-openjdk-headless-*.rpm
# Install X11 libraries
sudo rpm -Uvh libX11-*.rpm libXcomposite-*.rpm libXext-*.rpm libXi-*.rpm libXrender-*.rpm libXtst-*.rpm xorg-x11-fonts-Type1-*.rpm
Continue until Main Package Installs:
Keep repeating step 2, installing the newly reported missing dependencies, until sudo rpm -Uvh java-21-openjdk-*.rpm executes successfully without dependency errors.
This manual process provides deep insight into the package's dependencies but is significantly more time-consuming than the recommended sudo rpm -Uvh *.rpm approach, which leverages rpm's internal dependency resolver to handle the order automatically when all files are present.
To install all at once (you are confidence the dependencies don't break others packages), run the rpm -Uvh *.rpm command on the target systems. Prefer to install rpm one by one.
On your air-gapped host, navigate to the directory where you've placed the RPMs and proceed with the installation.
Install All Downloaded RPMs:
Since yumdownloader with --resolve has ensured that all dependencies are available locally, you can perform a single, comprehensive installation of all RPMs in the directory. The rpm -Uvh command will install new packages or upgrade existing ones, providing verbose output (-v) and a progress bar (-h).
sudo rpm -Uvh *.rpm
Note on Dependencies: Unlike your initial attempt to install only java-21-openjdk.rpm which failed due to missing dependencies, installing *.rpm in the directory ensures that rpm can find and satisfy all dependencies from the local set of files. This is the correct and most efficient method for air-gapped installations.
Verify Installation:
After the installation process completes, confirm that Java 21 OpenJDK has been successfully installed and is accessible on your air-gapped system.
java -version
You should observe output similar to the following, confirming the installed Java version:
openjdk version "21.0.8" 2025-07-16
OpenJDK Runtime Environment (build 21.0.8+9-LTS)
OpenJDK 64-Bit Server VM (build 21.0.8+9-LTS, mixed mode, sharing)
Advanced Considerations and Best Practices
Version Consistency: Reiterate the critical importance of ensuring the exact same major and minor Linux distribution version (e.g., AlmaLinux 9.x, RHEL 9.x) on both the internet-connected and air-gapped hosts. Even slight version mismatches can lead to library conflicts or unexpected behavior.
Automation with Ansible: For managing multiple air-gapped systems or automating routine updates, leveraging Ansible is highly recommended. Playbooks can be crafted to:
Execute yumdownloader on a designated "bastion" host with internet access.
Securely transfer the collected RPMs to a local repository or directly to target air-gapped servers (adhering to strict security protocols for data transfer).
Run the rpm -Uvh *.rpm command on the target systems.
Local Repository Management: For larger-scale air-gapped deployments, consider setting up a local YUM/DNF repository. This involves using tools like reposync to mirror external repositories and createrepo to generate metadata, providing a more robust and scalable solution for managing packages offline. While yumdownloader is excellent for individual package sets, a local repository offers greater flexibility for ongoing maintenance.
References and Further Reading
This section compiles all the external resources and documentation referenced in our discussion, providing avenues for deeper understanding and official guidance.
Red Hat Access: How to download an installed package, "yumdownloader" is useful.
URL: https://access.redhat.com/solutions/10154
Description: An official Red Hat solution article detailing the basic usage of yumdownloader for downloading RPM packages. This also covers using yumdownloader for installed packages.
Red Hat Access: How to use yum to download a package without installing it
URL: https://access.redhat.com/solutions/9934
Description: Another official Red Hat solution covering two methods for downloading packages without installation: the downloadonly plugin and yumdownloader. This was a key reference for understanding the --downloadonly option and --downloaddir option.
AlmaLinux Git: rpms/java-21-openjdk
URL: https://git.almalinux.org/rpms/java-21-openjdk
Description: The Git repository for the java-21-openjdk RPM in AlmaLinux. It provides insights into how OpenJDK packages are built and maintained, noting the shift to a single portable build for different RHEL major versions. This is useful for inspecting package specifics, build information, and dependencies at a deeper level.
Red Hat Developer Program: Download RHEL
URL: https://developers.redhat.com/products/rhel/download
Description: The official portal for developers to download Red Hat Enterprise Linux, crucial for obtaining compatible RHEL versions for your internet-connected host.
Red Hat Developer Program: Getting Started with RHEL on Windows Subsystem for Linux (WSL2)
URL: https://developers.redhat.com/articles/2025/05/20/getting-started-rhel-windows-subsystem-linux
Description: A comprehensive guide for setting up Red Hat Enterprise Linux (RHEL) within Windows Subsystem for Linux 2 (WSL2) on Windows 11. This enables developers and system administrators to run RHEL locally on Windows, facilitating the preparation of RPMs in a familiar environment.
Red Hat Customer Portal: Red Hat Enterprise Linux 9 Downloads (for WSL2)
URL: https://access.redhat.com/downloads/content/479/ver=/rhel---9/9.6/x86_64/product-software
Description: Direct download links for RHEL 9.x releases, specifically relevant for obtaining the necessary image to set up RHEL 9 within WSL2. This is essential for ensuring version parity between your source and target systems.
Prepared by Harisfazillah Jamel with the help of Google Gemini, LinuxMalaysia 26 Jul 2025.
Notes
Yumdownloader - RPM download
How to download java-21-openjdk using Yumdownloader from a host, to another host that in inside a airgap enviroments. to download an installed package, "yumdownloader" is useful. The download RPM can be transferred to the server without Internet connection.
Install the yum-utils package:
yum install yum-utils
Run the command followed by the desired package:
yumdownloader <package>
https://access.redhat.com/solutions/10154
Add --resolve to download dependencies with the rpm.
###########
Need to read
https://git.almalinux.org/rpms/java-21-openjdk
#########
For redhat better to install another redhat such as redhat for developer. We need to use same RHEL version major and minor.
https://developers.redhat.com/products/rhel/download
or for Windows11 WSL2
https://developers.redhat.com/articles/2025/05/20/getting-started-rhel-windows-subsystem-linux
For RHEL9
https://access.redhat.com/downloads/content/479/ver=/rhel---9/9.6/x86_64/product-software
##########
How to use yum to download a package without installing it https://access.redhat.com/solutions/10154
OpenJDK21 Almalinux9 repository
https://git.almalinux.org/rpms/java-21-openjdk
The OpenJDK packages are now created from a single build which is then packaged for different major versions of Red Hat Enterprise Linux (RHEL). This allows the OpenJDK team to focus their efforts on the development and testing of this single build, rather than having multiple builds which only differ by the platform they were built on.
This does make rebuilding the package slightly more complicated than a normal package. Modifications should be made to the java-21-openjdk-portable.specfile file, which can be found with this README file in the source RPM or installed in the documentation tree by the java-21-openjdk-headless RPM.
Getting started with RHEL on WSL Windows
https://developers.redhat.com/articles/2025/05/20/getting-started-rhel-windows-subsystem-linux
Red Hat Enterprise Linux (RHEL) can now be used on Microsoft Windows Subsystem for Linux (WSL). This enables developers, system administrators, and other users to run RHEL, the leading enterprise Linux environment, locally on Windows.
In this article, we'll explore the steps to get started with RHEL on WSL and create customized RHEL images, enabling you to work seamlessly with Windows and Linux environments.
For RHEL9 WSL2 Download
https://access.redhat.com/downloads/content/479/ver=/rhel---9/9.6/x86_64/product-software
############
How to use yum to download a package without installing it Solution Vérifié - Mis à jour 7 Août 2024 à 07h22 - English Environnement
Red Hat Enterprise Linux 9 Red Hat Enterprise Linux 8 Red Hat Enterprise Linux 7 Red Hat Enterprise Linux 6 Red Hat Enterprise Linux 5
Question
How do I use yum to download a package without installing it?
Résolution
There are two ways to download a package without installing it.
One is using the "downloadonly" plugin for yum, the other is using "yumdownloader" utility. Downloadonly plugin for yum
Install the package including "downloadonly" plugin:
Raw
(RHEL5) # yum install yum-downloadonly
(RHEL6) # yum install yum-plugin-downloadonly
Run yum command with "--downloadonly" option as follows: Raw
# yum install --downloadonly --downloaddir=<directory> <package>
Confirm the RPM files are available in the specified download directory.
Note:
Before using the plugin, check /etc/yum/pluginconf.d/downloadonly.conf to confirm that this plugin is "enabled=1" This is applicable for "yum install/yum update" and not for "yum groupinstall". Use "yum groupinfo" to identify packages within a specific group. If only the package name is specified, the latest available package is downloaded (such as sshd). Otherwise, you can specify the full package name and version (such as httpd-2.2.3-22.el5). If you do not use the --downloaddir option, files are saved by default in /var/cache/yum/ in rhel-{arch}-channel/packages If desired, you can download multiple packages on the same command. You still need to re-download the repodata if the repodata expires before you re-use the cache. By default it takes two hours to expire.
Yumdownloader
If downloading a installed package, "yumdownloader" is useful.
Install the yum-utils package: Raw
# yum install yum-utils
Run the command followed by the desired package: Raw
# yumdownloader <package>
Note:
The package is saved in the current working directly by default; use the --destdir option to specify an alternate location. Be sure to add --resolve if you need to download dependencies
########## this example is using Almalinux9
package name java-21-openjdk and other dependencies.
1) On the node thats has Internet.
Install yumdownloader
dnf install yum-utils
[root@LinuxMalaysia-MIFOMBP ~]# dnf install yum-utils Last metadata expiration check: 0:02:13 ago on Sat 26 Jul 2025 04:22:10 AM +08. Dependencies resolved. ========================================================================================================================================================================== Package Architecture Version Repository Size ========================================================================================================================================================================== Installing: yum-utils noarch 4.3.0-20.el9 baseos 35 k Upgrading: dnf-plugins-core noarch 4.3.0-20.el9 baseos 36 k python3-dnf-plugins-core noarch 4.3.0-20.el9 baseos 246 k
Transaction Summary ========================================================================================================================================================================== Install 1 Package Upgrade 2 Packages
Total download size: 316 k
Is this ok [y/N]: y Downloading Packages: (1/3): dnf-plugins-core-4.3.0-20.el9.noarch.rpm 175 kB/s | 36 kB 00:00 (2/3): yum-utils-4.3.0-20.el9.noarch.rpm 158 kB/s | 35 kB 00:00 (3/3): python3-dnf-plugins-core-4.3.0-20.el9.noarch.rpm 822 kB/s | 246 kB 00:00 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 175 kB/s | 316 kB 00:01 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Upgrading : python3-dnf-plugins-core-4.3.0-20.el9.noarch 1/5 warning: Unable to get systemd shutdown inhibition lock: Could not activate remote peer.
Upgrading : dnf-plugins-core-4.3.0-20.el9.noarch 2/5 Installing : yum-utils-4.3.0-20.el9.noarch 3/5 Cleanup : dnf-plugins-core-4.3.0-16.el9.noarch 4/5 Cleanup : python3-dnf-plugins-core-4.3.0-16.el9.noarch 5/5 Running scriptlet: python3-dnf-plugins-core-4.3.0-16.el9.noarch 5/5 Verifying : yum-utils-4.3.0-20.el9.noarch 1/5 Verifying : dnf-plugins-core-4.3.0-20.el9.noarch 2/5 Verifying : dnf-plugins-core-4.3.0-16.el9.noarch 3/5 Verifying : python3-dnf-plugins-core-4.3.0-20.el9.noarch 4/5 Verifying : python3-dnf-plugins-core-4.3.0-16.el9.noarch 5/5
Upgraded: dnf-plugins-core-4.3.0-20.el9.noarch python3-dnf-plugins-core-4.3.0-20.el9.noarch Installed: yum-utils-4.3.0-20.el9.noarch
Complete!
####
[root@LinuxMalaysia-MIFOMBP openjdk-rpm-download]# dnf search openjdk AlmaLinux 9 - AppStream 2.2 MB/s | 14 MB 00:06 AlmaLinux 9 - BaseOS 2.3 MB/s | 15 MB 00:06 AlmaLinux 9 - Extras 13 kB/s | 20 kB 00:01 ==================================================================== Name & Summary Matched: openjdk ===================================================================== ant-openjdk11.noarch : OpenJDK 11 binding for Ant ant-openjdk17.noarch : OpenJDK 17 binding for Ant ant-openjdk21.noarch : OpenJDK 21 binding for Ant ant-openjdk8.noarch : OpenJDK 8 binding for Ant java-1.8.0-openjdk.x86_64 : OpenJDK 8 Runtime Environment java-1.8.0-openjdk-demo.x86_64 : OpenJDK 8 Demos java-1.8.0-openjdk-devel.x86_64 : OpenJDK 8 Development Environment java-1.8.0-openjdk-headless.x86_64 : OpenJDK 8 Headless Runtime Environment java-1.8.0-openjdk-javadoc.noarch : OpenJDK 8 API documentation java-1.8.0-openjdk-javadoc-zip.noarch : OpenJDK 8 API documentation compressed in a single archive java-1.8.0-openjdk-src.x86_64 : OpenJDK 8 Source Bundle java-11-openjdk.x86_64 : OpenJDK 11 Runtime Environment java-11-openjdk-demo.x86_64 : OpenJDK 11 Demos java-11-openjdk-devel.x86_64 : OpenJDK 11 Development Environment java-11-openjdk-headless.x86_64 : OpenJDK 11 Headless Runtime Environment java-11-openjdk-javadoc.x86_64 : OpenJDK 11 API documentation java-11-openjdk-javadoc-zip.x86_64 : OpenJDK 11 API documentation compressed in a single archive java-11-openjdk-jmods.x86_64 : JMods for OpenJDK 11 java-11-openjdk-src.x86_64 : OpenJDK 11 Source Bundle java-11-openjdk-static-libs.x86_64 : OpenJDK 11 libraries for static linking java-17-openjdk.x86_64 : OpenJDK 17 Runtime Environment java-17-openjdk-demo.x86_64 : OpenJDK 17 Demos java-17-openjdk-devel.x86_64 : OpenJDK 17 Development Environment java-17-openjdk-headless.x86_64 : OpenJDK 17 Headless Runtime Environment java-17-openjdk-javadoc.x86_64 : OpenJDK 17 API documentation java-17-openjdk-javadoc-zip.x86_64 : OpenJDK 17 API documentation compressed in a single archive java-17-openjdk-jmods.x86_64 : JMods for OpenJDK 17 java-17-openjdk-src.x86_64 : OpenJDK 17 Source Bundle java-17-openjdk-static-libs.x86_64 : OpenJDK 17 libraries for static linking java-21-openjdk.x86_64 : OpenJDK 21 Runtime Environment java-21-openjdk-demo.x86_64 : OpenJDK 21 Demos java-21-openjdk-devel.x86_64 : OpenJDK 21 Development Environment java-21-openjdk-headless.x86_64 : OpenJDK 21 Headless Runtime Environment java-21-openjdk-javadoc.x86_64 : OpenJDK 21 API documentation java-21-openjdk-javadoc-zip.x86_64 : OpenJDK 21 API documentation compressed in a single archive java-21-openjdk-jmods.x86_64 : JMods for OpenJDK 21 java-21-openjdk-src.x86_64 : OpenJDK 21 Source Bundle java-21-openjdk-static-libs.x86_64 : OpenJDK 21 libraries for static linking maven-openjdk11.noarch : OpenJDK 11 binding for Maven maven-openjdk17.noarch : OpenJDK 17 binding for Maven maven-openjdk21.noarch : OpenJDK 21 binding for Maven maven-openjdk8.noarch : OpenJDK 8 binding for Maven
####
2) create the needed directory
mkdir ~/openjdk-rpm-download
3) Download the package
yumdownloader java-21-openjdk --downloaddir ~/openjdk-rpm-download --resolve
####
[root@LinuxMalaysia-MIFOMBP openjdk-rpm-download]# rm -f * [root@LinuxMalaysia-MIFOMBP openjdk-rpm-download]# yumdownloader java-21-openjdk --downloaddir ~/openjdk-rpm-download --resolve Last metadata expiration check: 0:04:58 ago on Sat 26 Jul 2025 04:22:10 AM +08. (1/130): graphite2-1.3.14-9.el9.x86_64.rpm 366 kB/s | 94 kB 00:00 (2/130): geoclue2-2.6.0-8.el9_6.1.x86_64.rpm 453 kB/s | 122 kB 00:00 (3/130): fdk-aac-free-2.0.0-8.el9.x86_64.rpm 1.0 MB/s | 324 kB 00:00 (4/130): libproxy-0.4.15-35.el9.x86_64.rpm 940 kB/s | 73 kB 00:00 (5/130): libpng-1.6.37-12.el9.x86_64.rpm 1.1 MB/s | 116 kB 00:00 (6/130): pango-1.48.7-3.el9.x86_64.rpm 1.3 MB/s | 297 kB 00:00 (7/130): harfbuzz-2.7.4-10.el9.x86_64.rpm 1.4 MB/s | 623 kB 00:00 (8/130): gsettings-desktop-schemas-40.0-6.el9.x86_64.rpm 1.0 MB/s | 666 kB 00:00 (8/130): gsettings-desktop-schemas-40.0-6.el9.x86_64.rpm 2% [=- ] 1.4 MB/s | 3.0 MB 01:19 ETA
.........
(114/130): at-spi2-core-2.40.3-1.el9.x86_64.rpm 679 kB/s | 176 kB 00:00 (115/130): libXtst-1.2.3-16.el9.x86_64.rpm 108 kB/s | 20 kB 00:00 (116/130): atk-2.36.0-5.el9.x86_64.rpm 621 kB/s | 270 kB 00:00 (117/130): libproxy-webkitgtk4-0.4.15-35.el9.x86_64.rpm 148 kB/s | 20 kB 00:00 (118/130): low-memory-monitor-2.1-4.el9.x86_64.rpm 234 kB/s | 35 kB 00:00 (119/130): hicolor-icon-theme-0.17-13.el9.noarch.rpm 400 kB/s | 65 kB 00:00 (120/130): lua-5.4.4-4.el9.x86_64.rpm 723 kB/s | 187 kB 00:00 (121/130): gtk3-3.24.31-5.el9.x86_64.rpm 940 kB/s | 4.8 MB 00:05 (122/130): lua-posix-35.0-8.el9.x86_64.rpm 727 kB/s | 131 kB 00:00 (123/130): libgusb-0.3.8-2.el9.x86_64.rpm 434 kB/s | 50 kB 00:00 (124/130): libasyncns-0.8-22.el9.x86_64.rpm 426 kB/s | 29 kB 00:00 (125/130): rtkit-0.11-29.el9.x86_64.rpm 548 kB/s | 55 kB 00:00 (126/130): gdk-pixbuf2-2.42.6-4.el9_4.x86_64.rpm 879 kB/s | 466 kB 00:00 (127/130): gdk-pixbuf2-modules-2.42.6-4.el9_4.x86_64.rpm 586 kB/s | 85 kB 00:00 (128/130): avahi-glib-0.8-22.el9_6.1.x86_64.rpm 261 kB/s | 13 kB 00:00 (129/130): libicu-67.1-9.el9.x86_64.rpm 1.5 MB/s | 9.6 MB 00:06 (130/130): java-21-openjdk-headless-21.0.8.0.9-1.el9.alma.1.x86_64.rpm 2.7 MB/s | 48 MB 00:18 [root@LinuxMalaysia-MIFOMBP openjdk-rpm-download]#
[root@LinuxMalaysia-MIFOMBP openjdk-rpm-download]# ls abattis-cantarell-fonts-0.301-4.el9.noarch.rpm libatomic-11.5.0-5.el9_5.alma.1.x86_64.rpm libXrender-0.9.10-16.el9.x86_64.rpm adobe-source-code-pro-fonts-2.030.1.050-12.el9.1.noarch.rpm libcanberra-0.30-27.el9.x86_64.rpm libXtst-1.2.3-16.el9.x86_64.rpm adwaita-cursor-theme-40.1.1-3.el9.noarch.rpm libcanberra-gtk3-0.30-27.el9.x86_64.rpm lksctp-tools-1.0.19-3.el9_4.x86_64.rpm adwaita-icon-theme-40.1.1-3.el9.noarch.rpm libdatrie-0.2.13-4.el9.x86_64.rpm low-memory-monitor-2.1-4.el9.x86_64.rpm alsa-lib-1.2.13-2.el9.x86_64.rpm libepoxy-1.5.5-4.el9.x86_64.rpm lua-5.4.4-4.el9.x86_64.rpm atk-2.36.0-5.el9.x86_64.rpm libfontenc-1.1.3-17.el9.x86_64.rpm lua-posix-35.0-8.el9.x86_64.rpm at-spi2-atk-2.38.0-4.el9.x86_64.rpm libgusb-0.3.8-2.el9.x86_64.rpm mkfontscale-1.2.1-3.el9.x86_64.rpm at-spi2-core-2.40.3-1.el9.x86_64.rpm libicu-67.1-9.el9.x86_64.rpm ModemManager-glib-1.20.2-1.el9.x86_64.rpm avahi-glib-0.8-22.el9_6.1.x86_64.rpm libjpeg-turbo-2.0.90-7.el9.x86_64.rpm nspr-4.35.0-17.el9_2.x86_64.rpm avahi-libs-0.8-22.el9_6.1.x86_64.rpm libldac-2.0.2.3-10.el9.x86_64.rpm nss-3.101.0-10.el9_2.x86_64.rpm bluez-libs-5.72-4.el9.x86_64.rpm libnotify-0.7.9-8.el9.x86_64.rpm nss-softokn-3.101.0-10.el9_2.x86_64.rpm cairo-1.17.4-7.el9.x86_64.rpm libogg-1.3.4-6.el9.x86_64.rpm nss-softokn-freebl-3.101.0-10.el9_2.x86_64.rpm cairo-gobject-1.17.4-7.el9.x86_64.rpm libpng-1.6.37-12.el9.x86_64.rpm nss-sysinit-3.101.0-10.el9_2.x86_64.rpm colord-libs-1.4.5-6.el9_6.x86_64.rpm libproxy-0.4.15-35.el9.x86_64.rpm nss-util-3.101.0-10.el9_2.x86_64.rpm copy-jdk-configs-4.0-3.el9.noarch.rpm libproxy-webkitgtk4-0.4.15-35.el9.x86_64.rpm opus-1.3.1-10.el9.x86_64.rpm cups-libs-2.3.3op2-33.el9.x86_64.rpm libsbc-1.4-9.el9.x86_64.rpm pango-1.48.7-3.el9.x86_64.rpm dconf-0.40.0-6.el9.x86_64.rpm libsndfile-1.0.31-9.el9.x86_64.rpm pipewire-1.0.1-1.el9.x86_64.rpm fdk-aac-free-2.0.0-8.el9.x86_64.rpm libsoup-2.72.0-10.el9_6.2.x86_64.rpm pipewire-alsa-1.0.1-1.el9.x86_64.rpm flac-libs-1.3.3-10.el9_2.1.x86_64.rpm libstemmer-0-18.585svn.el9.x86_64.rpm pipewire-jack-audio-connection-kit-1.0.1-1.el9.x86_64.rpm fontconfig-2.14.0-2.el9_1.x86_64.rpm libtdb-1.4.12-1.el9.x86_64.rpm pipewire-jack-audio-connection-kit-libs-1.0.1-1.el9.x86_64.rpm freetype-2.10.4-10.el9_5.x86_64.rpm libthai-0.1.28-8.el9.x86_64.rpm pipewire-libs-1.0.1-1.el9.x86_64.rpm fribidi-1.0.10-6.el9.2.x86_64.rpm libtiff-4.4.0-13.el9.x86_64.rpm pipewire-pulseaudio-1.0.1-1.el9.x86_64.rpm fuse-2.9.9-17.el9.x86_64.rpm libtool-ltdl-2.4.6-46.el9.x86_64.rpm pixman-0.40.0-6.el9_3.x86_64.rpm fuse-common-3.10.2-9.el9.x86_64.rpm libtracker-sparql-3.1.2-3.el9_1.x86_64.rpm polkit-0.117-13.el9.x86_64.rpm fuse-libs-2.9.9-17.el9.x86_64.rpm libusbx-1.0.26-1.el9.x86_64.rpm polkit-libs-0.117-13.el9.x86_64.rpm gdk-pixbuf2-2.42.6-4.el9_4.x86_64.rpm libvorbis-1.3.7-5.el9.x86_64.rpm polkit-pkla-compat-0.1-21.el9.x86_64.rpm gdk-pixbuf2-modules-2.42.6-4.el9_4.x86_64.rpm libwayland-client-1.21.0-1.el9.x86_64.rpm pulseaudio-libs-15.0-3.el9.x86_64.rpm geoclue2-2.6.0-8.el9_6.1.x86_64.rpm libwayland-cursor-1.21.0-1.el9.x86_64.rpm rtkit-0.11-29.el9.x86_64.rpm glib-networking-2.68.3-3.el9.x86_64.rpm libwayland-egl-1.21.0-1.el9.x86_64.rpm shared-mime-info-2.1-5.el9.x86_64.rpm graphite2-1.3.14-9.el9.x86_64.rpm libwebp-1.2.0-8.el9_3.x86_64.rpm sound-theme-freedesktop-0.8-17.el9.noarch.rpm gsettings-desktop-schemas-40.0-6.el9.x86_64.rpm libX11-1.7.0-11.el9.x86_64.rpm tracker-3.1.2-3.el9_1.x86_64.rpm gsm-1.0.19-6.el9.x86_64.rpm libX11-common-1.7.0-11.el9.noarch.rpm ttmkfdir-3.0.9-65.el9.x86_64.rpm gstreamer1-1.22.12-3.el9.x86_64.rpm libXau-1.0.9-8.el9.x86_64.rpm tzdata-java-2025b-1.el9.noarch.rpm gtk3-3.24.31-5.el9.x86_64.rpm libxcb-1.13.1-9.el9.x86_64.rpm webkit2gtk3-jsc-2.48.3-1.el9_6.x86_64.rpm gtk-update-icon-cache-3.24.31-5.el9.x86_64.rpm libXcomposite-0.4.5-7.el9.x86_64.rpm webrtc-audio-processing-0.3.1-8.el9.x86_64.rpm harfbuzz-2.7.4-10.el9.x86_64.rpm libXcursor-1.2.0-7.el9.x86_64.rpm wireplumber-0.4.14-1.el9.x86_64.rpm hicolor-icon-theme-0.17-13.el9.noarch.rpm libXdamage-1.1.5-7.el9.x86_64.rpm wireplumber-libs-0.4.14-1.el9.x86_64.rpm java-21-openjdk-21.0.8.0.9-1.el9.alma.1.x86_64.rpm libXext-1.3.4-8.el9.x86_64.rpm xdg-desktop-portal-1.12.6-1.el9.x86_64.rpm java-21-openjdk-headless-21.0.8.0.9-1.el9.alma.1.x86_64.rpm libXfixes-5.0.3-16.el9.x86_64.rpm xdg-desktop-portal-gtk-1.12.0-3.el9.x86_64.rpm javapackages-filesystem-6.4.0-1.el9.noarch.rpm libXft-2.3.3-8.el9.x86_64.rpm xkeyboard-config-2.33-2.el9.noarch.rpm jbigkit-libs-2.1-23.el9.x86_64.rpm libXi-1.7.10-8.el9.x86_64.rpm xml-common-0.6.3-58.el9.noarch.rpm json-glib-1.6.6-1.el9.x86_64.rpm libXinerama-1.1.4-10.el9.x86_64.rpm xorg-x11-fonts-Type1-7.5-33.el9.noarch.rpm lcms2-2.12-3.el9.x86_64.rpm libxkbcommon-1.0.3-4.el9.x86_64.rpm libasyncns-0.8-22.el9.x86_64.rpm libXrandr-1.5.2-8.el9.x86_64.rpm [root@LinuxMalaysia-MIFOMBP openjdk-rpm-download]#
#############
Transfer all this files to airgap host.
#########
Installation need to run one by one, start with the main RPM that we realy want to install. Such as java-21-openjdk. Tried to minimum what we want to install.
[root@LinuxMalaysia-MIFOMBP openjdk-rpm-download]# rpm -Uvh java-21-openjdk-21.0.8.0.9-1.el9.alma.1.x86_64.rpm error: Failed dependencies: fontconfig(x86-64) is needed by java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64 java-21-openjdk-headless(x86-64) = 1:21.0.8.0.9-1.el9.alma.1 is needed by java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64 libX11.so.6()(64bit) is needed by java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64 libXcomposite(x86-64) is needed by java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64 libXext.so.6()(64bit) is needed by java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64 libXi.so.6()(64bit) is needed by java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64 libXrender.so.1()(64bit) is needed by java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64 libXtst.so.6()(64bit) is needed by java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64 xorg-x11-fonts-Type1 is needed by java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64
|