内网机器、离线环境装 nmap,你是不是也经历过这些:
dnf install nmap 卡在刷新源半小时不动;精简系统连 tar 命令都没有;好不容易把包拷过去,rpm 又报一堆 Failed dependencies……
这篇文章分享一个 openEuler 24.03 及以后全系列通用 的 nmap 离线整包:只有 3 个 RPM + 一键安装脚本,实测 1 分钟装完,直接看文末实测截图。


一、适用环境(先确认你的机器)

  • 操作系统:openEuler 24.03 及以后(含 24.03 GA / SP1 / SP2 / SP3、24.09、25.03 等所有 openssl 3.0 时代版本)
  • 架构:x86_64
  • 场景:内网 / 离线 / 无外网环境

确认命令:

cat /etc/openEuler-release
uname -m

如果是 openEuler 20.03 / 22.03(openssl 1.1.1 时代老系统),需要另用对应的老版本整包(文末有说明)。


二、为什么这个包能"通吃"这么多版本?

关键在 nmap 依赖什么库。nmap 运行需要这些:

依赖库谁提供需要打包吗
glibc 2.38系统预装❌
openssl 3.0(libcrypto.so.3)系统预装❌
pcre2(正则)系统预装❌
zlib系统预装❌
GCC 运行时(libstdc++/libgcc)系统预装❌
libpcap(抓包库)系统不预装✅
libssh2(SSH 支持)系统不预装✅

所以整包只需要 3 个 RPM:nmap + libpcap + libssh2。安装时全部是"新增安装",不升级、不覆盖系统已有库,因此不会触发版本冲突——这就是能通吃 24.03 全系、24.09、25.x 的根本原因。

包内结构:

nmap-offline-universal/
├── install.sh              一键安装(自动校验 + 安装 + 验证)
├── README-安装说明.txt
└── rpms/
    ├── SHA256SUMS          官方校验清单
    ├── nmap-7.94-5.oe2403.x86_64.rpm
    ├── libpcap-1.10.4-1.oe2403.x86_64.rpm
    └── libssh2-1.11.0-2.oe2403.x86_64.rpm

三、下载

夸克网盘(推荐,直接转存下载):

https://pan.quark.cn/s/d390772ed8fb

文件名:nmap离线包及一键安装脚本-欧拉openEuler-24.03及以后通用-x86_64.tar.gz(约 6.6MB)


四、安装步骤(三步搞定)

第 1 步:把整包拷到目标机器

U 盘、scp、内网 FTP 都行。

第 2 步:解压

tar -xzf nmap离线包及一键安装脚本-欧拉openEuler-24.03及以后通用-x86_64.tar.gz

精简系统没有 tar 命令?用 python3 一样解压(有 dnf/rpm 就一定有 python3):

python3 -c "import tarfile; tarfile.open('nmap离线包及一键安装脚本-欧拉openEuler-24.03及以后通用-x86_64.tar.gz').extractall()"

第 3 步:一键安装(root 执行)

cd nmap-offline-universal
./install.sh

脚本自动完成:环境检查 → 包完整性校验(SHA-256)→ rpm 安装 → 验证 nmap。

第 4 步:验证

nmap --version
nmap -sV 127.0.0.1

五、实测截图(openEuler 24.03 GA 真机验证)

以下是在 openEuler 24.03 (LTS) 机器上的完整安装过程:解压 → 校验 3 个包全部 OK → 安装 → 验证 Nmap 7.94 → 安装成功!

离线安装nmap成功

六、避坑记录(都是真实踩过的)

坑 1:dnf install 离线卡死,Waiting for process with pid xxx to finish

离线机器上 dnf 会一直卡在刷新软件源(makecache)。结论:离线装包用 rpm,不要用 dnf。 卡死后清理后台进程:

pkill -f makecache
systemctl disable --now dnf-makecache.timer   # 可选,禁止自动刷新源

坑 2:tar: 未找到命令

精简系统没装 tar,用上面的 python3 一行命令解压即可。

坑 3:装过的包再跑脚本报"失败"?其实是误报

rpm 有个特性:命令行里出现已安装的包时,rpm -Uvh 会返回退出码 6(RPMRC_ALREADYINSTALLED)并中断事务。如果脚本直接拿 rpm 退出码判断成败,就会在"包早就装好"的情况下误报失败。

本包的 install.sh 已修复这个问题:以 nmap 命令是否可用为最终标准,包已装就跳过、缺哪个补哪个,任何状态下重跑都不会误报。

坑 4:NOKEY 警告

安装时看到 warning: ... NOKEY 是未导入 openEuler 官方 GPG 公钥的提示,不影响安装。想消除可执行:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-openEuler

坑 5:20.03 / 22.03 老系统怎么办?

openEuler 底层库分两个时代:20.03/22.03 用 openssl 1.1.1,24.03 以后用 openssl 3.0,两者 ABI 不兼容,无法用同一个包。老系统需要对应的老版本整包(nmap 7.80 + 配套依赖),同样是一键安装。


七、总结

离线装 nmap 的正确姿势:

  1. 确认系统版本(cat /etc/openEuler-release)和架构(uname -m)
  2. 24.03 及以后 → 用本文整包;20.03/22.03 → 用老版本整包
  3. 解压 → ./install.sh → nmap --version
  4. 记住:离线用 rpm,不碰 dnf

整包只有 6.6MB,3 个 RPM 一个不少,实测 1 分钟装完。觉得有用点个收藏,下次内网装机直接翻这篇。


本包内 RPM 均来自 openEuler 官方仓库,安装前脚本会自动做 SHA-256 完整性校验。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐