离线安装 下载rpm包

离线安装 下载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-utilsRPM 包及其所有依赖包。
  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-utilsdnf-plugins-core提供了 repotrackyumdownloader工具。

  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. 确定包名: nslookupbind-utils包中。
  2. 下载环境: 必须在同版本可联网的系统上下载 RPM 及依赖。
  3. 下载工具: 使用 repotrack(最佳) 或 yumdownloader/dnf download --resolve
  4. 传输: 将所有下载的 .rpm文件复制到离线系统。
  5. 安装:
    • 推荐使用 sudo yum localinstall *.rpmsudo dnf localinstall *.rpm(自动处理本地依赖)。
    • 次选 sudo rpm -ivh *.rpm(需确保所有依赖已下载且顺序正确)。
    • 避免 --nodeps --force,除非你很清楚后果。
  6. 验证: 安装后运行 nslookup命令确认成功。

通过以上步骤,你应该能在离线环境中成功安装 bind-utils包,从而解决 nslookup: command not found的错误。💪🏻