Saturday, July 26, 2025

How-To: Deploy Java 21 OpenJDK in an Air-Gapped Environment using yumdownloader

 

How-To: Deploy Java 21 OpenJDK in an Air-Gapped Environment using yumdownloader

Owner avatar 

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:

  • Internet-Connected Host:

    • A Linux machine with active internet access.

    • Crucially, this host should be running the same major and minor version of AlmaLinux, Red Hat Enterprise Linux (RHEL), or a compatible distribution as your air-gapped target. This ensures package compatibility and avoids unforeseen dependency issues.

    • An active RHEL subscription (if using RHEL) to access official repositories.

    • Alternative: RHEL 9 on Windows 11 WSL2
      For users who prefer a Windows environment, you can set up a Red Hat Enterprise Linux 9 instance within Windows Subsystem for Linux 2 (WSL2) to serve as your internet-connected host. This provides a convenient way to access RHEL repositories and download packages. Remember to obtain the RHEL 9 image from the official Red Hat Developer program.

  • Air-Gapped Host:

    • The target Linux machine where Java 21 OpenJDK will be installed. This host must have absolutely no direct internet access.

  • Secure Transfer Mechanism:

    • A reliable and secure method to transfer files from the internet-connected host to the air-gapped host. Common methods include:

      • USB drive (ensure it's clean and secure)

      • Portable hard drive

      • Intermediate jump host with strict access controls

      • Secure local network share (if applicable and isolated)

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.

dnf search openjdk


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

  1. Safely Unmount USB Drive (on Internet Host).

  2. 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)


  1. 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



  • Note: You'll need to identify the exact RPM filenames from your ls ~/openjdk-rpm-download output. Using wildcards (*.rpm) can simplify this if only one version of each dependency is present.

  1. 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



No comments:

Today Notes Blog About Linux Open Source Computer Internet

comments powered by Disqus

Popular Posts