CentOS 8 安装 Apache Chainsaw 指南
在 CentOS 8(EOL 后切 vault 归档源)上安装 Apache Chainsaw 2.1.0 的完整实测指南,含 java-17 安装、alternatives 优先级陷阱、CJK 字体与无 ImageMagick 环境的图形验证方案。
CentOS 8 安装 Apache Chainsaw 指南
目标:在 CentOS 8 服务器(已停止维护,使用 vault 归档源)上完成 Apache Chainsaw 2.1.0 的安装与启动验证,实测通过官方 bin 包与 standalone 独立包两种方案,并在虚拟显示环境下完成图形界面截图验证。
一、环境信息
| 项目 | 值 |
|---|---|
| 操作系统 | CentOS 8(x86_64,已 EOL,使用 8.5.2111 vault 归档源) |
| 实测服务器 | chainsaw-centos-01(实验专用环境) |
| Java 运行时 | java-17-openjdk 17.0.1.0.12-2.el8_5(vault AppStream 提供) |
| 虚拟显示 | Xvfb(xorg-x11-server-Xvfb) |
| Chainsaw 版本 | Apache Chainsaw 2.1.0(官方当前唯一版本) |
| 网络 | 通过 HTTP 代理访问归档镜像 |
CentOS 8 于 2021-12-31 停止维护,官方源已下线,yum install 会报 Failed to download metadata for repo 'appstream' 之类的错误,因此本文第一章先处理归档源,这是 CentOS 8 安装任何软件的第一步。
二、前置条件
2.1 修复 yum 源(切换到 vault 归档仓库)
CentOS 8 的 repo 文件默认走 mirrorlist.centos.org(已失效)。实测可行的修法是把 baseurl 指向阿里云 vault 归档的 8.5.2111(CentOS 8 最后一个版本,java-17 就在这个版本库里):
sed -i -e 's|mirrorlist=|#mirrorlist=|g' \
-e 's|^#\s*baseurl=http://mirror.centos.org/\$contentdir/\$releasever|baseurl=https://mirrors.aliyun.com/centos-vault/8.5.2111|g' \
/etc/yum.repos.d/CentOS-*.repo
grep -E '^(baseurl|name)' /etc/yum.repos.d/CentOS-Linux-AppStream.repo
实测回显:
name=CentOS Linux 8 - AppStream
baseurl=https://mirrors.aliyun.com/centos-vault/8.5.2111/AppStream/$basearch/os/
刷新缓存确认仓库可用:
dnf makecache
实测回显(节选):
CentOS Linux 8 - AppStream 2.4 MB/s | 9.6 MB 00:04
CentOS Linux 8 - BaseOS 2.9 MB/s | 6.6 MB 00:02
CentOS Linux 8 - Extras 9.6 kB/s | 10 kB 00:01
Metadata cache created.
💡 技术拓展:vault 路径里
8.5.2111不能写成变量$releasever(它解析为8,vault 下没有centos/8/这个物理目录,只有8.5.2111/)。sed 直接把版本写死是官方归档迁移文档推荐的做法。
2.2 安装 Java 17
Chainsaw 2.1.0 主类字节码为 major version 53(Java 9 编译),Java 8 无法运行(实测报错见 2.4 节),最低要求 Java 9。8.5.2111 vault 中提供的最高版本是 java-17:
dnf list available 'java-17-openjdk*'
实测回显:
Last metadata expiration check: 0:02:11 ago on Wed Oct 15 06:41:05 2026.
Available Packages
java-17-openjdk.x86_64 1:17.0.1.0.12-2.el8_5 appstream
java-17-openjdk-demo.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
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-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
安装(devel 包提供 javap/javac,便于后续校验与调试):
dnf install -y java-17-openjdk java-17-openjdk-devel
java -version
实测回显:
openjdk version "17.0.1" 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 17.0.1+12-LTS-392)
OpenJDK 64-Bit Server VM 18.9 (build 17.0.1+12-LTS-392, mixed mode, sharing)
2.3 安装 Xvfb 与截图验证工具
无桌面服务器验证 Swing 界面需要虚拟显示与截图能力。实测确认 8.5.2111 vault 中 没有 ImageMagick(RHEL 8 系不内置),dnf list available ImageMagick 返回 Error: Unable to find a match: ImageMagick。可行的组合是 Xvfb + JDK 自带的 java.awt.Robot 截图(见 4.4 节):
dnf install -y xorg-x11-server-Xvfb
rpm -q xorg-x11-server-Xvfb
实测回显:
xorg-x11-server-Xvfb-1.20.11-2.el8.x86_64
另有一个极易踩坑的依赖:which 命令。CentOS 8 精简安装默认不带它,而 Chainsaw 的 bin/chainsaw 启动脚本在未设置 JAVA_HOME 时靠 which java 定位 Java,缺失时启动脚本直接报 which: command not found。安装:
dnf install -y which
which which
实测回显:
/usr/bin/which
2.4 Java 8 不兼容说明(实测)
用系统里因依赖关系被带入的 java-1.8.0-openjdk 直接启动 Chainsaw,实测报错:
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/log4j/chainsaw/LogUI has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
结论:CentOS 8 上必须用 java-17(或其它 ≥ Java 9 的运行时),Java 8 直接不可用。
三、版本选型
与 Ubuntu 篇一致的结论(此处为实测复核):
- 官方下载目录
https://downloads.apache.org/logging/chainsaw/下当前只有2.1.0/一个版本目录,Chainsaw 2.1.0 是官方在维护的唯一版本(发布于 2021-06-12,项目处于低维护状态); - Maven Central 检索 chainsaw 无结果(
search.maven.org/solrsearch/select?q=chainsaw返回空),没有 Maven 坐标,只能下载发行包; - 可选包两枚:
apache-chainsaw-2.1.0-bin.tar.gz(6267376 字节,含源码与离线站点文档)与apache-chainsaw-2.1.0-standalone.tar.gz(2946786 字节,自带启动脚本,推荐日常使用); - 每个包都有
.sha512与.asc校验文件,生产环境建议同时做哈希与 GPG 签名验证。
四、方案A:安装官方 bin 包(完整发行版)
4.1 下载与校验
mkdir -p /root/chainsaw-dl && cd /root/chainsaw-dl
curl -O https://downloads.apache.org/logging/chainsaw/2.1.0/apache-chainsaw-2.1.0-bin.tar.gz
curl -O https://downloads.apache.org/logging/chainsaw/2.1.0/apache-chainsaw-2.1.0-bin.tar.gz.sha512
cat apache-chainsaw-2.1.0-bin.tar.gz.sha512
sha512sum apache-chainsaw-2.1.0-bin.tar.gz
实测回显:
1f8b466fb9014bcb049c71d964457ecbfc2221bda1aed42058c8dfe94fb8b9dc4591fefe24440e46183629660d87b461a59b7412a9855ea82907c44dd188ae91 apache-chainsaw-2.1.0-bin.tar.gz
1f8b466fb9014bcb049c71d964457ecbfc2221bda1aed42058c8dfe94fb8b9dc4591fefe24440e46183629660d87b461a59b7412a9855ea82907c44dd188ae91 apache-chainsaw-2.1.0-bin.tar.gz
哈希一致,校验通过。
4.2 解压安装
cd /root/chainsaw-dl
tar xzf apache-chainsaw-2.1.0-bin.tar.gz -C /opt/
ls /opt/apache-chainsaw-2.1.0/
实测回显:
apache-chainsaw-2.1.0.jar build.xml jmdns-3.4.1.jar log4j-1.2.16.jar site
apache-log4j-extras-1.1.jar commons-vfs-1.0.jar jsch-0.1.55.jar pom.xml src
commons-logging-1.1.1.jar LICENSE xmlpull-1.1.3.1.jar xpp3_min-1.1.4c.jar
NOTICE xstream-1.4.11.1.jar
bin 包无启动脚本,10 个 jar 平铺在根目录,site/ 为离线站点文档(含 quicktour.html),src/ 为完整源码。
4.3 启动脚本封装(含 Java 17 add-opens)
bin 包主类为 org.apache.log4j.chainsaw.LogUI。Java 17 下必须追加 --add-opens(XStream 1.4.11.1 反射需要,缺一项就可能在启动期抛 InaccessibleObjectException 退出),封装为 /usr/local/bin/chainsaw-bin:
cat > /usr/local/bin/chainsaw-bin <<'EOF'
#!/bin/bash
# Apache Chainsaw 2.1.0 bin 包启动脚本(Java 17 需 add-opens)
BASE=/opt/apache-chainsaw-2.1.0
CP=$(ls $BASE/*.jar | tr '\n' ':' | sed 's/:$//')
exec java \
--add-opens java.base/java.util=ALL-UNNAMED \
--add-opens java.base/java.lang=ALL-UNNAMED \
--add-opens java.base/java.io=ALL-UNNAMED \
--add-opens java.base/java.text=ALL-UNNAMED \
--add-opens java.base/java.time=ALL-UNNAMED \
--add-opens java.base/java.math=ALL-UNNAMED \
--add-opens java.base/java.net=ALL-UNNAMED \
--add-opens java.base/java.lang.reflect=ALL-UNNAMED \
--add-opens java.base/java.util.concurrent=ALL-UNNAMED \
--add-opens java.desktop/java.awt=ALL-UNNAMED \
--add-opens java.desktop/java.awt.font=ALL-UNNAMED \
-cp "$CP" org.apache.log4j.chainsaw.LogUI "$@"
EOF
chmod +x /usr/local/bin/chainsaw-bin
4.4 无显示环境启动验证(Xvfb + java.awt.Robot 截图)
准备演示日志与接收器配置(与 Ubuntu 篇相同的文件,fileURL 指向本机路径):
mkdir -p /root/chainsaw-demo
cat > /root/chainsaw-demo/app.log <<'EOF'
2026-10-15 10:00:00,001 INFO [com.example.service.UserService] 用户登录成功 userId=1001 ip=192.168.10.25
2026-10-15 10:00:02,417 WARN [com.example.service.UserService] 登录重试次数达到阈值 userId=1002 retries=5
2026-10-15 10:00:05,090 ERROR [com.example.dao.UserDao] 查询用户失败: connection timeout after 3000ms
2026-10-15 10:00:07,552 DEBUG [com.example.dao.UserDao] SELECT * FROM t_user WHERE id=1001
2026-10-15 10:00:09,878 INFO [com.example.web.OrderController] 订单提交成功 orderId=202610159876
2026-10-15 10:00:11,204 ERROR [com.example.web.OrderController] 提交订单异常
java.sql.SQLException: Connection refused
at com.example.dao.UserDao.query(UserDao.java:88)
at com.example.web.OrderController.submit(OrderController.java:41)
EOF
cat > /root/chainsaw-demo/chainsaw-gui-config.xml <<'EOF'
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<plugin name="demoApp" class="org.apache.log4j.varia.LogFilePatternReceiver">
<param name="logFormat" value="TIMESTAMP LEVEL [LOGGER] MESSAGE"/>
<param name="timestampFormat" value="yyyy-MM-dd HH:mm:ss,SSS"/>
<param name="fileURL" value="file:///root/chainsaw-demo/app.log"/>
<param name="tailing" value="true"/>
</plugin>
</log4j:configuration>
EOF
由于 vault 中没有 ImageMagick,截屏用一段 15 行的 Java 小程序(调用 java.awt.Robot 抓取整屏,JDK 自带能力):
cat > /root/chainsaw-demo/Screenshot.java <<'EOF'
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class Screenshot {
public static void main(String[] args) throws Exception {
Rectangle screen = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
BufferedImage img = new Robot().createScreenCapture(screen);
ImageIO.write(img, "png", new File(args[0]));
System.out.println("saved " + args[0] + " " + img.getWidth() + "x" + img.getHeight());
}
}
EOF
cd /root/chainsaw-demo && javac Screenshot.java
启动并截图:
Xvfb :99 -screen 0 1280x1024x24 >/tmp/xvfb.log 2>&1 &
sleep 2
export DISPLAY=:99
chainsaw-bin file:///root/chainsaw-demo/chainsaw-gui-config.xml >/tmp/chainsaw-run.log 2>&1 &
sleep 40
ps aux | grep 'chainsaw[.]LogUI' | grep -v grep | wc -l
cd /root/chainsaw-demo && java -cp . Screenshot /root/chainsaw-demo/centos-shot1.png
实测回显:
1
saved /root/chainsaw-demo/centos-shot1.png 1280x1024
进程存活、截图 1280x1024。首屏截图中事件表 6 行数据、颜色规则(WARN 黄底/ERROR 红底)均已生效,但中文显示为方块——这是缺少 CJK 字体所致(截图证据 /tmp/commons-batch1-b2/chainsaw/centos-shot1-main.png),处理方法见第五章 5.4 节。
💡 技术拓展:
Robot.createScreenCapture抓的是当前 DISPLAY 的整屏位图,等价于 ImageMagick 的import -window root。在只有 JDK 没有 X11 截图工具的服务器上,这是最省依赖的 GUI 验证手段;配合 Xvfb 的-screen 0 1280x1024x24,24 位色深可保证 Swing 渲染颜色正确。
五、方案B:安装 standalone 独立包(推荐)
5.1 下载与校验
cd /root/chainsaw-dl
curl -O https://downloads.apache.org/logging/chainsaw/2.1.0/apache-chainsaw-2.1.0-standalone.tar.gz
curl -O https://downloads.apache.org/logging/chainsaw/2.1.0/apache-chainsaw-2.1.0-standalone.tar.gz.sha512
cat apache-chainsaw-2.1.0-standalone.tar.gz.sha512
sha512sum apache-chainsaw-2.1.0-standalone.tar.gz
实测回显:
1e2131c9e490551b5ec2ed4a9f9885bb28791b8f28585b6d70285e68985238da1c166cb84aac4a9b9d9acfa72e184b268bd1540875aad3de525a65acaf4ef926 apache-chainsaw-2.1.0-standalone.tar.gz
1e2131c9e490551b5ec2ed4a9f9885bb28791b8f28585b6d70285e68985238da1c166cb84aac4a9b9d9acfa72e184b268bd1540875aad3de525a65acaf4ef926 apache-chainsaw-2.1.0-standalone.tar.gz
校验一致。
5.2 解压与目录结构
tar xzf apache-chainsaw-2.1.0-standalone.tar.gz -C /opt/
find /opt/apache-chainsaw-2.1.0 -maxdepth 2 | sort
实测回显(standalone 包共 12 个文件):
/opt/apache-chainsaw-2.1.0
/opt/apache-chainsaw-2.1.0/bin
/opt/apache-chainsaw-2.1.0/bin/chainsaw
/opt/apache-chainsaw-2.1.0/bin/chainsaw.bat
/opt/apache-chainsaw-2.1.0/repo
/opt/apache-chainsaw-2.1.0/repo/com
/opt/apache-chainsaw-2.1.0/repo/commons-logging
/opt/apache-chainsaw-2.1.0/repo/commons-vfs
/opt/apache-chainsaw-2.1.0/repo/javax
/opt/apache-chainsaw-2.1.0/repo/log4j
/opt/apache-chainsaw-2.1.0/repo/xmlpull
/opt/apache-chainsaw-2.1.0/repo/xpp3
依赖 jar 按 Maven 坐标放在 repo/(repo/log4j/ 内为 apache-chainsaw、apache-log4j-extras、log4j),bin/chainsaw 为官方启动脚本。脚本优先使用 $JAVA_HOME/bin/java,否则回退 which java;JAVA_OPTS 环境变量原样透传给 JVM——Java 17 的 --add-opens 无需改脚本即可注入。
5.3 启动验证(Java 17 + JAVA_OPTS)
export DISPLAY=:99
export JAVA_OPTS='--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED --add-opens java.base/java.time=ALL-UNNAMED --add-opens java.base/java.math=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED --add-opens java.desktop/java.awt=ALL-UNNAMED --add-opens java.desktop/java.awt.font=ALL-UNNAMED'
/opt/apache-chainsaw-2.1.0/bin/chainsaw file:///root/chainsaw-demo/chainsaw-gui-config.xml >/tmp/chainsaw-run.log 2>&1 &
sleep 40
ps aux | grep 'chainsaw[.]LogUI' | grep -v grep | wc -l
cd /root/chainsaw-demo && java -cp . Screenshot /root/chainsaw-demo/centos-shot2.png
实测回显:
1
saved /root/chainsaw-demo/centos-shot2.png 1280x1024
截图证据 /tmp/commons-batch1-b2/chainsaw/centos-shot2-cjk.png(装 CJK 字体后,中文正常)。随后向 app.log 追加 3 行日志,约 8 秒后再次截图:
cat >> /root/chainsaw-demo/app.log <<'EOF'
2026-10-15 10:05:21,330 WARN [com.example.service.AuthService] 密码连续错误锁定账号 userId=1007
2026-10-15 10:05:24,871 ERROR [com.example.service.AuthService] 鉴权服务调用 LDAP 超时 elapsed=5000ms
2026-10-15 10:05:27,118 INFO [com.example.service.AuthService] 账号解锁成功 userId=1007
EOF
sleep 8
cd /root/chainsaw-demo && java -cp . Screenshot /root/chainsaw-demo/centos-shot3.png
截图证据 /tmp/commons-batch1-b2/chainsaw/centos-shot3-tailing.png:事件表实时从 6 行增长到 9 行,状态栏显示 Filtered/Total: 9:9,tailing 接收器实时追尾验证通过。
5.4 中文字体补装(避免界面方块)
CentOS 8 精简环境没有 CJK 字体,Swing 回退到不含汉字的字形导致方块。实测安装 Noto CJK 字体并刷新字体缓存:
dnf install -y google-noto-sans-cjk-ttc-fonts
rpm -q google-noto-sans-cjk-ttc-fonts
fc-cache -f
实测回显:
google-noto-sans-cjk-ttc-fonts-20190416-1.el8.noarch
重启 Chainsaw 后中文正常渲染(对比截图:centos-shot1-main.png 为装字体前方块状态,centos-shot2-cjk.png 为装字体后正常状态)。
六、方案对比
| 维度 | 方案A:bin 包 | 方案B:standalone 包 |
|---|---|---|
| 包大小 | 6267376 字节(约 6.0 MB) | 2946786 字节(约 2.8 MB) |
| 启动脚本 | 无,自建 /usr/local/bin/chainsaw-bin | 有(bin/chainsaw) |
| jar 组织方式 | 10 个 jar 平铺在根目录 | 按 Maven 坐标存放在 repo/ |
| 附带源码与站点文档 | 有(src/、site/、pom.xml、build.xml) | 无 |
| Java 17 add-opens 注入方式 | 写在自建脚本里 | 写在 JAVA_OPTS 环境变量里 |
| 实测启动结果 | 通过(Xvfb 截图验证) | 通过(Xvfb 截图验证) |
| 适用场景 | 二次开发、离线查文档 | 日常安装使用(推荐) |
两包内 Chainsaw 与依赖 jar 版本完全一致,仅打包布局不同。
七、配置说明
7.1 alternatives 优先级陷阱(CentOS 8 特有,实测踩坑)
安装过程中系统因依赖关系同时存在 java-1.8.0-openjdk 与 java-17-openjdk 时,/usr/bin/java 由 alternatives auto 模式决定指向,而两个包的 alternatives 优先级相差悬殊:
alternatives --display java | head -3
实测回显:
java - status is auto.
link currently points to /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/jre/bin/java
/usr/lib/jvm/java-17-openjdk-17.0.1.0.12-2.el8_5.x86_64/bin/java - family java-17-openjdk.x86_64 priority 1
java-8 的优先级(18000312 量级)远高于 java-17 的 priority 1,auto 模式选中 java-8。此时启动 Chainsaw 会看到两个连锁报错:
Unrecognized option: --add-opens
Error: Could not create the Java Virtual Machine.
(Java 8 不认识 --add-opens,且后续必然还有 UnsupportedClassVersionError。)显式固定系统 Java:
alternatives --set java /usr/lib/jvm/java-17-openjdk-17.0.1.0.12-2.el8_5.x86_64/bin/java
java -version
实测回显:
openjdk version "17.0.1" 2021-10-19 LTS
javac 链接同理:alternatives --set javac /usr/lib/jvm/java-17-openjdk-17.0.1.0.12-2.el8_5.x86_64/bin/javac。更稳妥的做法是不依赖系统默认 java,直接为 Chainsaw 指定 JAVA_HOME:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-17.0.1.0.12-2.el8_5.x86_64
/opt/apache-chainsaw-2.1.0/bin/chainsaw file:///root/chainsaw-demo/chainsaw-gui-config.xml
7.2 命令行配置 URL 与 ~/.chainsaw/
与 Ubuntu 篇一致:LogUI.main 将第一个命令行参数解析为 log4j 配置 URL 并执行 DOMConfigurator.configure(),其中 <plugin> 元素注册为接收器,实现"启动即加载日志"。7.3 节配置文件模板直接可用。菜单正常退出(File → Exit)后配置写入 $HOME/.chainsaw/(receiver-config.xml、chainsaw.settings.properties、Default.colors 等),直接 kill 进程不落盘。
7.3 JAVA_HOME 探查
readlink -f /usr/bin/java
实测回显(alternatives 固定后):
/usr/lib/jvm/java-17-openjdk-17.0.1.0.12-2.el8_5.x86_64/bin/java
八、常见问题(FAQ)
Q1:dnf makecache 报 Failed to download metadata for repo 'appstream'?
源未切 vault。按 2.1 节 sed 命令处理,注意 baseurl 必须写死 8.5.2111 而不是 $releasever。
Q2:启动脚本报 which: command not found?
CentOS 8 精简环境缺 which。dnf install -y which,或 export JAVA_HOME=... 绕过脚本内 which java 的回退逻辑(推荐)。
Q3:报 Unrecognized option: --add-opens?
实际执行的 java 是 Java 8(见 7.1 alternatives 陷阱)。alternatives --set java ... 固定到 17,或在启动前 export JAVA_HOME。
Q4:报 InaccessibleObjectException: ... does not "opens java.util"?
Java 17 强封装与 XStream 反射冲突,按 4.3/5.3 的 11 项 --add-opens 配齐。
Q5:界面中文是方块?
缺 CJK 字体,dnf install -y google-noto-sans-cjk-ttc-fonts && fc-cache -f 后重启(实测前后截图见 5.4)。
Q6:想用 ImageMagick 截屏验证界面,装不上?
8.5.2111 vault 确认无 ImageMagick(dnf list available ImageMagick 报 Unable to find a match),xorg-x11-apps(xwd)同样不在。用 4.4 节的 java.awt.Robot 方案替代,零额外依赖。
Q7:Java 8 能跑吗? 不能,major version 53 vs 52(实测报错见 2.4)。
九、卸载与清理
# 1. 结束进程
pkill -f 'org.apache.log4j.chainsaw.LogUI'
# 2. 删除安装目录与自建脚本
rm -rf /opt/apache-chainsaw-2.1.0
rm -f /usr/local/bin/chainsaw-bin
# 3. 删除用户级配置与演示文件(按需)
rm -rf ~/.chainsaw
rm -rf /root/chainsaw-dl /root/chainsaw-demo
# 4. 移除软件包(仅当服务器上无其他 Java 应用依赖时执行)
dnf remove -y java-17-openjdk java-17-openjdk-devel xorg-x11-server-Xvfb google-noto-sans-cjk-ttc-fonts
清理后确认:ls /opt/apache-chainsaw-2.1.0 提示目录不存在、rpm -q java-17-openjdk 无输出即可。
十、参考链接
- CentOS Vault 官方归档说明:https://www.centos.org/centos-linux-eol/
- 阿里云 CentOS vault 归档镜像:https://mirrors.aliyun.com/centos-vault/
- Apache Chainsaw 官方下载目录:https://downloads.apache.org/logging/chainsaw/
- Apache Logging Services 项目主页:https://logging.apache.org/
- Chainsaw 2.1.0 包内离线文档:
/opt/apache-chainsaw-2.1.0/site/quicktour.html(bin 包附带) - java.awt.Robot API 文档:https://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/java/awt/Robot.html