# 离线安装 下载rpm包 > 以nslookup: command not found举例 好的,我们来详细说明如何通过离线 RPM 包的方式解决 `nslookup: command not found`的问题。`nslookup`命令通常包含在 `bind-utils`软件包中(在较新的 Fedora/CentOS/RHEL 版本中,`bind-utils`包含了 DNS 查询工具如 `nslookup`, `dig`, `host`)。 ## 核心思路: 1. 在一台**可以上网**的同版本 Linux 系统(与目标离线系统相同或兼容)上,下载 `bind-utils`RPM 包及其所有依赖包。 2. 将这些 RPM 包复制到目标离线系统上。 3. 在目标离线系统上使用 `rpm`命令安装这些 RPM 包。 ------ ## 📥 详细步骤 ### 🖥 第一步:在有网络的机器上下载 RPM 包(生成离线安装包) 你需要一台与目标离线系统**操作系统版本和主要架构相同**(例如都是 CentOS 7 x86_64)并且**可以访问互联网**的机器。 1. **安装下载工具 (如果尚未安装):** - 对于基于 RHEL/CentOS/Fedora 的系统: ``` sudo yum install -y yum-utils # CentOS/RHEL 7 或更早 / Fedora 早期版本 # 或者 sudo dnf install -y dnf-plugins-core # CentOS/RHEL 8+/Fedora 现代版本 ``` `yum-utils`或 `dnf-plugins-core`提供了 `repotrack`或 `yumdownloader`工具。 2. **创建下载目录:** ``` mkdir ~/bind-utils-offline cd ~/bind-utils-offline ``` 3. **下载 `bind-utils`及其所有依赖包:** - **使用 `repotrack`(推荐,能下载所有依赖):** ``` repotrack bind-utils ``` 这会在当前目录 (`~/bind-utils-offline`) 下载 `bind-utils`以及它运行所需的所有依赖包。 - **使用 `yumdownloader`(需要手动处理依赖,较麻烦):** ``` yumdownloader --resolve bind-utils ``` 或者 ``` dnf download --resolve bind-utils ``` 这也会尝试下载 `bind-utils`及其直接依赖,但不如 `repotrack`彻底(可能漏掉间接依赖)。如果依赖关系简单,通常够用。 4. **检查下载的文件:** 进入 `~/bind-utils-offline`目录,你会看到很多 `.rpm`文件。确保文件列表看起来完整(包含 `bind-utils-*.rpm`和其他一些包如 `libidn2`, `krb5-libs`, `keyutils-libs`, `libtirpc`, `libverto-libevent`, `bind-libs-lite`, `bind-export-libs`等,具体依赖项因系统版本而异)。 ### 💾 第二步:将 RPM 包传输到离线系统 将整个 `~/bind-utils-offline`目录(或者至少里面所有的 `.rpm`文件)通过 U 盘、移动硬盘、内网共享等方式复制到目标离线系统的某个目录中,例如 `/tmp/bind-utils-rpms`。 ``` # 在目标离线系统上,假设复制到了 /tmp/bind-utils-rpms ls /tmp/bind-utils-rpms/*.rpm ``` 你应该能看到之前下载的所有 RPM 文件。 ### ⚙ 第三步:在离线系统上安装 RPM 包 1. **切换到存放 RPM 包的目录:** ``` cd /tmp/bind-utils-rpms ``` 2. **使用 `rpm`命令安装所有 RPM 包:** ``` sudo rpm -ivh *.rpm ``` - `-i`: 安装软件包。 - `-v`: 显示详细信息。 - `-h`: 显示安装进度条(哈希标记 `#`)。 - `*.rpm`: 匹配当前目录下所有 RPM 文件。 **注意:** 如果遇到依赖顺序问题导致安装失败(`error: Failed dependencies`),可以尝试强制安装并忽略依赖(**不推荐**,可能导致运行时问题): ``` sudo rpm -ivh *.rpm --nodeps --force ``` **更好的做法:** 手动解决依赖顺序。通常 `rpm`会告诉你缺少哪个包,你可以先安装那个包(如果它在下载的目录里)。或者使用以下命令让 `rpm`尝试自动排序(效果有限): ``` sudo rpm -Uvh *.rpm --nodeps # 升级模式,有时对安装新包也有效,忽略依赖 ``` **最可靠的方法:** 使用 `yum localinstall`(即使离线也能解析本地包的依赖关系): ``` sudo yum localinstall *.rpm ``` 或者 (CentOS/RHEL 8+/Fedora) ``` sudo dnf localinstall *.rpm ``` `yum/dnf localinstall`会读取本地 RPM 包的元数据并尝试自动解决它们之间的依赖关系进行安装。这是**首选的安装方法**。 3. **验证安装:** 安装完成后,检查 `nslookup`命令是否可用: ``` which nslookup type nslookup nslookup localhost # 尝试一个简单的查询 ``` 或者直接输入: ``` nslookup ``` 如果安装成功,你应该能看到 `nslookup>`提示符(输入 `exit`退出)。 ------ ## 📌 关键点总结 1. **确定包名:** `nslookup`在 `bind-utils`包中。 2. **下载环境:** 必须在**同版本可联网**的系统上下载 RPM 及依赖。 3. **下载工具:** 使用 `repotrack`(最佳) 或 `yumdownloader/dnf download --resolve`。 4. **传输:** 将所有下载的 `.rpm`文件复制到离线系统。 5. **安装:** - 推荐使用 `sudo yum localinstall *.rpm`或 `sudo dnf localinstall *.rpm`(自动处理本地依赖)。 - 次选 `sudo rpm -ivh *.rpm`(需确保所有依赖已下载且顺序正确)。 - 避免 `--nodeps --force`,除非你很清楚后果。 6. **验证:** 安装后运行 `nslookup`命令确认成功。 通过以上步骤,你应该能在离线环境中成功安装 `bind-utils`包,从而解决 `nslookup: command not found`的错误。💪🏻 ## 快照 - https://i.788910.xyz/t/26/03/s4x0c8xZMC.jpg - https://i3.wp.com/i.788910.xyz/t/26/03/s4x0c8xZMC.jpg - https://788910.xyz/api/snapshot?p=431bfab73916ac55ec6840b78b5f7b3e&u=https://i.788910.xyz/t/26/03/s4x0c8xZMC.jpg