CentOS 8 安装 Apache Commons RNG 指南

在 CentOS 8 上从零安装 Apache Commons RNG 1.7,重点解决 EOL 后 yum 源迁移到 vault 归档镜像、切换 8.5.2111 获取 java-17-openjdk、修复 Maven 绑定 JDK8 的 JAVA_HOME 问题,并提供 Maven 依赖与官方 bin 包两种方案,命令回显均实测通过。

Apache Commons RNGApache Commons RNG2026/10/15

CentOS 8 安装 Apache Commons RNG 指南

目标:在 CentOS 8 上从零搭建 Apache Commons RNG 1.7 的开发与运行环境(JDK 17 + Maven 3.5.4 + 官方依赖),重点处理 CentOS 8 EOL 后的软件源迁移与 JDK 17 获取,并跑通最小验证程序;本文全部命令与回显均已在 CentOS 8 实测通过。

CentOS 8 已于 2021 年底停止维护(EOL),官方源 mirror.centos.org 已下线,因此本指南的第一道关卡是把 yum/dnf 源迁移到 vault 归档镜像;第二道关卡是默认 8.4 版本源的 AppStream 中没有 java-17-openjdk,需要把仓库版本指到 8.5.2111。解决这两步后,Commons RNG 的安装与 Ubuntu 无本质差异:它是纯 Java 库,装好 JDK 与构建工具、引入依赖、编译运行即可。Commons RNG 提供数十种随机数生成算法(MersenneTwister、Xoshiro、PCG、LXM、Philox 等)与分布采样器,是多模块项目,本文先讲清模块划分再给出 Maven 依赖与官方 bin 包两种方案。

一、环境信息

本节固定可复现的基线环境,后续所有命令均在此环境执行。

  • 操作系统:CentOS Linux release 8.4.2105(Core)
  • 架构:x86_64
  • JDK:OpenJDK 17.0.1(dnf 包 java-17-openjdk-devel,版本 1:17.0.1.0.12-2.el8_5)
  • 构建工具:Apache Maven 3.5.4(CentOS 8 AppStream 模块自带)
  • 组件版本:Apache Commons RNG 1.7(官网 downloads.apache.org 当前最新稳定版)
  • Maven 坐标:org.apache.commons:commons-rng-simple:1.7、org.apache.commons:commons-rng-sampling:1.7(传递引入 client-api 与 core)
  • 官方下载目录:https://downloads.apache.org/commons/rng/
  • vault 归档镜像:https://mirrors.aliyun.com/centos-vault/centos/(本文实测可用)
  • 验证用工作目录:/root/rng-demo(Maven 工程)、/root/rng-jar-run(jar 直跑)

系统与架构确认(实时回显):

cat /etc/centos-release && uname -m
CentOS Linux release 8.4.2105 (Core)
x86_64

二、前置条件

本节说明安装前必须满足的条件,其中 EOL 源迁移是 CentOS 8 区别于其他系统的关键前提。

  1. 具有 root 权限的 CentOS 8 系统(8.0 至 8.5 均可,本文为 8.4.2105)。
  2. 能访问 CentOS vault 归档镜像(mirror.centos.org 已下线,直接 dnf 安装会报 Failed to download metadata for repo 'appstream')。
  3. 能访问 Maven 中央仓库 repo1.maven.org 与 Apache 官方下载站 downloads.apache.org。
  4. 至少 2 GB 可用磁盘空间。

归档镜像连通性确认(实时回显):

curl -sI --max-time 20 https://mirrors.aliyun.com/centos-vault/8.5.2111/AppStream/x86_64/os/repodata/repomd.xml | head -2
HTTP/2 200
server: Tengine

⚠️ 注意:官方归档站 vault.centos.org 在部分网络环境下返回 403(经 CDN 分发存在地域限制),本文实测该地址即返回 403,因此后续统一使用阿里云 centos-vault 镜像,清华 TUNA(https://mirrors.tuna.tsinghua.edu.cn/centos-vault/)实测同样可用,二者任选。

三、版本选型说明

本节给出 Commons RNG 的版本与模块选型,以及 CentOS 8 特有的 JDK 选型结论。

Commons RNG 方面,官网 binaries 目录当前仅保留最新稳定版 1.7,1.x 是唯一在维护的版本线,发布说明明确「requires Java 8」(字节码基线 Java 8)。1.7 官方发布说明列出的库模块如下(均已实测存在于 Maven 中央仓库):

模块Maven 坐标职责是否需要直接依赖
client-apiorg.apache.commons:commons-rng-client-api:1.7面向应用的接口:UniformRandomProvider 及可跳/可分裂等扩展接口传递引入即可
coreorg.apache.commons:commons-rng-core:1.7各算法的内部实现否,官方明确不建议应用直接访问
simpleorg.apache.commons:commons-rng-simple:1.7RandomSource 枚举工厂,创建生成器的唯一推荐入口是(基础取数)
samplingorg.apache.commons:commons-rng-sampling:1.7分布采样器(高斯/指数/伽马/泊松/二项/Dirichlet 等)需要采样时加
bomorg.apache.commons:commons-rng-bom:1.7各模块版本对齐的 BOM 清单用 BOM 管版本时加

选装建议:基础随机数只依赖 commons-rng-simple(自动传递 client-api 与 core);按概率分布采样再加 commons-rng-sampling;本文实际采用 1.7,Maven 坐标为 org.apache.commons:commons-rng-simple:1.7 与 org.apache.commons:commons-rng-sampling:1.7。

JDK 选型是 CentOS 8 的特殊点:默认 8.4.2105 源的 AppStream 只有 java-8/java-11,没有 java-17-openjdk;把仓库版本指到 8.5.2111 vault 后即可安装 java-17。实测确认(仓库修复到 8.5.2111、安装完成后 dnf list 复核,基础包已装入系统故出现在 Installed 区):

dnf list "java-17-openjdk*" 2>/dev/null
Last metadata expiration check: 0:48:22 ago on Thu Oct 15 02:16:50 2026.
Installed Packages
java-17-openjdk.x86_64                   1:17.0.1.0.12-2.el8_5        @appstream
java-17-openjdk-devel.x86_64             1:17.0.1.0.12-2.el8_5        @appstream
java-17-openjdk-headless.x86_64          1:17.0.1.0.12-2.el8_5        @appstream
Available Packages
java-17-openjdk-demo.x86_64              1:17.0.1.0.12-2.el8_5        appstream
java-17-openjdk-javadoc.x86_64           1:17.0.1.0.12-2.el8_5        appstream
java-17-openjdk-javadoc-zip.x86_64       1:17.0.1.0.12-2.el8_5        appstream
java-17-openjdk-jmods.x86_64             1:17.0.1.0.12-2.el8_5        appstream
java-17-openjdk-src.x86_64               1:17.0.1.0.12-2.el8_5        appstream
java-17-openjdk-static-libs.x86_64       1:17.0.1.0.12-2.el8_5        appstream

Maven 方面,CentOS 8 AppStream 的 maven 模块提供 3.5.4。它满足本文所用插件的要求(maven-compiler-plugin 3.11.0 与 maven-shade-plugin 3.5.1 均只要求 Maven 3.2.5+),实测可正常构建,无须额外升级 Maven。

四、仓库修复(EOL 必做)

本节把 yum/dnf 源从已下线的 mirror.centos.org 迁移到 vault 归档镜像,并把仓库版本指到 8.5.2111(java-17 所在的最后一个 8.x 版本)。不做这一步,后续所有 dnf 安装都会失败。

4.1 修改仓库文件

CentOS 8 的仓库定义在 /etc/yum.repos.d/CentOS-Linux-*.repo,每条仓库用 mirrorlist 指向已下线的镜像列表。处理方式:注释掉 mirrorlist,把 baseurl 指向阿里云 centos-vault 归档镜像,保留 $contentdir/$releasever 变量结构:

sed -i -e 's|mirrorlist=|#mirrorlist=|g' \
       -e 's|#baseurl=http://mirror.centos.org|baseurl=https://mirrors.aliyun.com/centos-vault|g' \
       /etc/yum.repos.d/CentOS-Linux-*.repo

确认修改结果:

grep -E '^(mirrorlist|#mirrorlist|baseurl)' /etc/yum.repos.d/CentOS-Linux-AppStream.repo
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
baseurl=https://mirrors.aliyun.com/centos-vault/$contentdir/$releasever/AppStream/$basearch/os/

4.2 指定仓库版本为 8.5.2111

默认 $releasever 解析为 8,而 centos-vault 归档下没有 centos/8 目录(8.x 按小版本归档),需把版本变量固定为 8.5.2111:

echo 8.5.2111 > /etc/dnf/vars/releasever && cat /etc/dnf/vars/releasever
8.5.2111

4.3 刷新缓存

dnf clean all && dnf makecache
# 输出节选(实测首尾)
CentOS-8 - AppStream                            3.2 MB/s | 8.9 MB     00:02
CentOS-8 - Base                                 3.5 MB/s | 5.0 MB     00:01
CentOS-8 - Extras                               37 kB/s | 9.9 kB     00:00
Metadata cache created.

验证点:Metadata cache created. 表示源迁移成功;若报 403,说明所配镜像不可达,换清华 TUNA 的 centos-vault 路径重试(见第二章说明)。

五、方案 A:Maven 依赖安装(在线,推荐)

本节通过 dnf 安装 JDK 17 与 Maven,再引入 Commons RNG 1.7 依赖并跑通最小验证程序。

5.1 安装 JDK 17 与 Maven

dnf install -y java-17-openjdk-devel maven
# 输出节选(实测首尾)
Dependencies resolved.
==================================================================================================================
 Package                             Architecture        Version                        Repository           Size
==================================================================================================================
Installing:
 java-17-openjdk-devel               x86_64              1:17.0.1.0.12-2.el8_5          appstream           4.1 M
 maven                               noarch              1:3.5.4-5.module_el8.0.0+39+6a9b6e22
                                                                                        appstream            27 k
Installing dependencies:
 java-17-openjdk                     x86_64              1:17.0.1.0.12-2.el8_5          appstream           247 k
 java-17-openjdk-headless            x86_64              1:17.0.1.0.12-2.el8_5          appstream            41 M
Complete!

安装完成后,系统默认 java 可能仍指向预装的 JDK 8(CentOS 8 镜像通常自带 java-1.8.0),用 alternatives 把 java 与 javac 都切到 17:

alternatives --set java java-17-openjdk.x86_64 && alternatives --set javac java-17-openjdk.x86_64
java -version | head -1 && javac -version
openjdk version "17.0.1" 2021-10-19
javac 17.0.1

验证点:java -version 与 javac -version 均显示 17.0.1。

5.2 关键排障:Maven 绑定到 JDK 8 导致 invalid flag: --release

alternatives 只切换 java/javac 命令,不会改 JAVA_HOME 环境变量;而 CentOS 的 Maven 启动脚本优先读 JAVA_HOME,变量为空时回落到通用符号链接 /usr/lib/jvm/java(默认指向 JDK 8),于是 Maven 内嵌编译器仍是 JDK 8,遇到 pom 中的 maven.compiler.release=17 直接报错。本文实测完整复现:

echo "JAVA_HOME=[$JAVA_HOME]" && mvn -version | grep "Java version"
JAVA_HOME=[]
Java version: 1.8.0_312, vendor: Red Hat, Inc.

带着这个错误绑定执行 mvn package 的实测报错(输出节选):

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.11.0:compile (default-compile) on project rng-demo: Fatal error compiling: error: invalid flag: --release

修复:会话中显式导出 JDK 17 的 JAVA_HOME 后重新构建(持久化方法见第八章):

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
mvn -version | grep "Java version"
Java version: 17.0.1, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-17-openjdk

5.3 创建工程并引入依赖

建立 Maven 工程并声明 Commons RNG 依赖(pom 与 Ubuntu 指南保持一致,便于跨平台迁移):

mkdir -p /root/rng-demo/src/main/java

pom.xml(完整内容,文件路径 /root/rng-demo/pom.xml):

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example.rng</groupId>
  <artifactId>rng-demo</artifactId>
  <version>1.0.0</version>
  <packaging>jar</packaging>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.release>17</maven.compiler.release>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-rng-simple</artifactId>
      <version>1.7</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-rng-sampling</artifactId>
      <version>1.7</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>rng-demo</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.11.0</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.5.1</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>RngCheck</mainClass>
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

配置说明:commons-rng-simple:1.7 是创建生成器的入口模块(传递引入 client-api 与 core),commons-rng-sampling:1.7 是分布采样模块;maven.compiler.release=17 配合显式固定的 maven-compiler-plugin 3.11.0;maven-shade-plugin 打出可 java -jar 直跑的胖 jar。CentOS 8 自带 Maven 3.5.4 满足两个插件版本要求(均只要求 Maven 3.2.5+),实测构建通过。

5.4 最小验证代码

验证程序 RngCheck.java(文件路径 /root/rng-demo/src/main/java/RngCheck.java):

import org.apache.commons.rng.UniformRandomProvider;
import org.apache.commons.rng.simple.RandomSource;

public class RngCheck {
    public static void main(String[] args) {
        UniformRandomProvider rng = RandomSource.create(RandomSource.MT, 20261015L);
        System.out.println("provider     = " + rng.getClass().getName());
        System.out.println("nextInt()    = " + rng.nextInt());
        System.out.println("nextInt(100) = " + rng.nextInt(100));
        System.out.println("nextLong()   = " + rng.nextLong());
        System.out.println("nextDouble() = " + rng.nextDouble());
        System.out.println("nextBoolean()= " + rng.nextBoolean());
        System.out.println("Commons RNG OK");
    }
}

⚠️ 注意:静态工厂 RandomSource.create(RandomSource, seed) 在 1.7 已标记为过时,推荐写法是实例方法 RandomSource.MT.create(20261015L),行为完全一致。本文保留静态写法以在编译期触发 deprecated API 提示,便于第九章 FAQ Q5 实测讲解。

5.5 编译与运行验证

cd /root/rng-demo && mvn -q -B package
ls -l target/*.jar && java -Dfile.encoding=UTF-8 -jar target/rng-demo.jar
-rw-r--r-- 1 root root    2919 Oct 15 02:22 target/original-rng-demo.jar
-rw-r--r-- 1 root root  420019 Oct 15 02:23 target/rng-demo.jar
provider     = org.apache.commons.rng.core.source32.MersenneTwister
nextInt()    = 243253777
nextInt(100) = 79
nextLong()   = -7428464460000287899
nextDouble() = 0.86954735697081
nextBoolean()= true
Commons RNG OK

验证点:固定种子 20261015L 下的输出与 Ubuntu 22.04 环境逐字节一致(provider、五个取数值全部相同),说明 Commons RNG 的随机序列跨操作系统、跨 JVM 厂商可复现,rng-demo.jar 约 420 KB 为内嵌四个模块的胖 jar。

六、方案 B:官方 bin 包 + jar 直跑(离线友好)

本节不依赖 Maven,直接使用官方 bin 包完成编译与运行,适合离线服务器与脚本化场景。

6.1 下载与完整性校验

cd /root && curl -sO --max-time 180 https://downloads.apache.org/commons/rng/binaries/commons-rng-1.7-bin.tar.gz
curl -sO --max-time 30 https://downloads.apache.org/commons/rng/binaries/commons-rng-1.7-bin.tar.gz.sha512
ls -l commons-rng-1.7-bin.tar.gz
-rw-r--r-- 1 root root 3709031 Oct 15 02:23 commons-rng-1.7-bin.tar.gz
echo "期望: $(cat commons-rng-1.7-bin.tar.gz.sha512)"
echo "实测: $(sha512sum commons-rng-1.7-bin.tar.gz | awk '{print $1}')"
期望: 9dec28282c9baf8b02f8a47fab2e74f5c2ec123dd7f62b25c1946cc2f25b3193d11b72ec40300a663f429c000840045bbeb0324556d4aadbb42e4387558e15e4
实测: 9dec28282c9baf8b02f8a47fab2e74f5c2ec123dd7f62b25c1946cc2f25b3193d11b72ec40300a663f429c000840045bbeb0324556d4aadbb42e4387558e15e4

验证点:期望与实测 sha512 逐字一致,包完整可信。

6.2 解压并确认四个模块 jar

tar xzf commons-rng-1.7-bin.tar.gz && ls commons-rng-1.7/ | grep jar$
commons-rng-client-api-1.7-javadoc.jar
commons-rng-client-api-1.7-sources.jar
commons-rng-client-api-1.7.jar
commons-rng-core-1.7-javadoc.jar
commons-rng-core-1.7-sources.jar
commons-rng-core-1.7.jar
commons-rng-sampling-1.7-javadoc.jar
commons-rng-sampling-1.7-sources.jar
commons-rng-sampling-1.7.jar
commons-rng-simple-1.7-javadoc.jar
commons-rng-simple-1.7-sources.jar
commons-rng-simple-1.7.jar

bin 包内每个模块都带主 jar/javadoc/sources 三件套(共 12 个 jar),编译与运行只需其中四个主 jar:commons-rng-client-api-1.7.jar、commons-rng-core-1.7.jar、commons-rng-simple-1.7.jar、commons-rng-sampling-1.7.jar。

6.3 javac 编译与 java 运行

mkdir -p /root/rng-jar-run && cd /root/rng-jar-run
B=/root/commons-rng-1.7
javac -encoding UTF-8 -cp $B/commons-rng-client-api-1.7.jar:$B/commons-rng-core-1.7.jar:$B/commons-rng-simple-1.7.jar:$B/commons-rng-sampling-1.7.jar -d out /root/rng-demo/src/main/java/RngCheck.java
java -Dfile.encoding=UTF-8 -cp out:$B/commons-rng-client-api-1.7.jar:$B/commons-rng-core-1.7.jar:$B/commons-rng-simple-1.7.jar:$B/commons-rng-sampling-1.7.jar RngCheck
Note: /root/rng-demo/src/main/java/RngCheck.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
provider     = org.apache.commons.rng.core.source32.MersenneTwister
nextInt()    = 243253777
nextInt(100) = 79
nextLong()   = -7428464460000287899
nextDouble() = 0.86954735697081
nextBoolean()= true
Commons RNG OK

验证点:无 NoClassDefFoundError 且七行结果与 Maven 方案一致;deprecated API 提示见 FAQ Q5。

七、方案对比与选择建议

维度方案 A:Maven 依赖方案 B:官方 bin 包 + jar 直跑
环境准备dnf 装 JDK17 + Maven,须先修 EOL 源只需 JDK(javac/java)
依赖获取中央仓库自动下载四模块手工下载 bin 包并拼 classpath
版本管控pom 声明,可锁版本靠文件命名区分
构建产物胖 jar,java -jar 直跑class 目录 + 引用 jar
离线可用性首次需联网一次下载后完全离线
适用场景CentOS 8 上的常规工程老旧内网服务器、临时验证

选型建议:有构建体系选方案 A(本文完整走通);内网无法访问中央仓库或不想引入 Maven 时选方案 B。注意 CentOS 8 无论哪种方案,方案 A 都必须先完成第四章的源迁移,且方案 A 必须处理 5.2 节的 JAVA_HOME 问题。

八、配置说明

Commons RNG 是库,无独立配置文件;CentOS 8 上真正必须配置的是 JAVA_HOME 持久化与字符集。

JAVA_HOME 持久化:5.2 节的 export 只对当前会话生效,写入 profile 让所有会话生效:

echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk' > /etc/profile.d/java17.sh
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile.d/java17.sh
cat /etc/profile.d/java17.sh
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH

生效方式:新登录会话自动加载;当前会话执行 source /etc/profile.d/java17.sh。

字符集:CentOS 8 默认 locale 常为 ANSI_X3.4-1968(ASCII),含中文的程序输出会乱码。处理:运行时加 -Dfile.encoding=UTF-8(本文 5.5/6.3 节实测均带此参数),或把系统 locale 调整为 UTF-8。Maven 编译含中文源码由 pom 的 project.build.sourceEncoding=UTF-8 兜底。

代码级参数(随机源算法、种子、多线程策略)均通过 API 控制,说明与实测见本专栏《Apache Commons RNG 1.7 常用 API 与随机源详解》。

九、常见问题(FAQ)

Q1:dnf makecache 报 Failed to download metadata for repo 'appstream'? mirror.centos.org 已随 CentOS 8 EOL 下线,默认 mirrorlist 全部失效。按第四章把仓库指到 vault 归档镜像即可。

Q2:仓库已指向 vault.centos.org 但仍报 403? 官方归档站经 CDN 分发,部分网络被拒(本文实测 https://vault.centos.org/ 根路径即返回 403)。改用阿里云 https://mirrors.aliyun.com/centos-vault/ 或清华 TUNA https://mirrors.tuna.tsinghua.edu.cn/centos-vault/,本文实测二者均可。

Q3:dnf install java-17-openjdk-devel 报 No match for argument: java-17-openjdk-devel? 仓库版本还停留在 8.4.2105 或更低——8.4 的 AppStream 没有 java-17。执行 echo 8.5.2111 > /etc/dnf/vars/releasever 后重新 dnf makecache,再安装(8.5.2111 是 java-17 可用的最后一个 8.x 归档版本,第三章有实测清单)。

Q4:mvn package 报 invalid flag: --release? Maven 绑定到了 JDK 8:alternatives 只切了 java/javac 命令,JAVA_HOME 仍为空并回落到 /usr/lib/jvm/java(指向 JDK 8),而 JDK 8 的 javac 不认识 --release。完整复现与修复见 5.2 节实测;持久化用 /etc/profile.d/java17.sh(第八章)。

Q5:编译提示 uses or overrides a deprecated API,是哪里过时了? 静态工厂 RandomSource.create(RandomSource, Object, Object...) 在 1.7 已弃用,官方推荐枚举实例方法 RandomSource.MT.create(seed),两者同种子输出完全一致。实测定位与修法同本专栏《Ubuntu 22.04 安装 Apache Commons RNG 指南》第九章 Q4。

Q6:中文输出乱码? 默认 locale 为 ASCII 所致,运行时加 -Dfile.encoding=UTF-8 或调整系统 locale,见第八章。

十、卸载与清理

Commons RNG 无系统级安装,清理即删除工程、jar 与本地仓库缓存。

rm -rf /root/rng-demo /root/rng-jar-run /root/commons-rng-1.7 /root/commons-rng-1.7-bin.tar.gz /root/commons-rng-1.7-bin.tar.gz.sha512
rm -rf /root/.m2/repository/org/apache/commons/commons-rng-client-api /root/.m2/repository/org/apache/commons/commons-rng-core /root/.m2/repository/org/apache/commons/commons-rng-simple /root/.m2/repository/org/apache/commons/commons-rng-sampling /root/.m2/repository/org/apache/commons/commons-rng-bom
rm -f /etc/profile.d/java17.sh
ls /root/rng-demo 2>&1
ls: cannot access '/root/rng-demo': No such file or directory

卸载 JDK 17 与 Maven(先预演确认删除清单,再真正执行):

dnf remove java-17-openjdk-devel maven
# 输出节选(实测首尾)
Dependencies resolved.
==================================================================================================================
 Package                                   Arch    Version                                       Repository   Size
==================================================================================================================
Removing:
 java-17-openjdk-devel                     x86_64  1:17.0.1.0.12-2.el8_5                         @appstream  8.9 M
 maven                                     noarch  1:3.5.4-5.module_el8.0.0+39+6a9b6e22          @appstream  3.1 k
Removing unused dependencies:
 abattis-cantarell-fonts                   noarch  0.0.25-6.el8                                  @appstream  295 k
 adwaita-cursor-theme                      noarch  3.28.0-2.el8                                  @appstream   11 M
Is this ok [y/N]:

确认清单无误后输入 y 回车执行,或直接 dnf remove -y java-17-openjdk-devel maven 一键完成。

十一、参考链接

  1. Apache Commons RNG 官方主页:https://commons.apache.org/proper/commons-rng/
  2. Apache Commons RNG 官方下载目录:https://downloads.apache.org/commons/rng/
  3. Commons RNG 1.7 发布说明:https://downloads.apache.org/commons/rng/RELEASE-NOTES.txt
  4. Maven 中央仓库 commons-rng 坐标:https://repo1.maven.org/maven2/org/apache/commons/commons-rng-simple/
  5. CentOS Vault 归档说明与镜像:https://mirrors.aliyun.com/centos-vault/ 、https://mirrors.tuna.tsinghua.edu.cn/centos-vault/
  6. OpenJDK 17 包(CentOS 8.5.2111 vault AppStream):dnf list available java-17-openjdk-devel