在 RHEL 和 CentOS 服务器上工作时,在某些情况下,我们希望从命令行下载特定的或一组 RPM 包,而不安装它。虽然我们可以使用 wget 命令来下载包,但是 wget 不会下载包及其依赖项。

在 RHEL 8 或 CentOS 8 上,DNF 或 yum 是一个命令行包管理工具。使用 DNF 或 yum,我们可以安装、更新和删除 RPM 包。除此之外,它还可以用来下载包和依赖项,而不需要安装它们。

在本指南中,我们将介绍RHEL 8 或 CentOS 8 系统中,如何下载 RPM 包而不需要安装它们。

下载特定的 RPM 包

RHEL 8 或 CentOS 8 的 dnf 或 yum 命令有下载标志,允许下载 RPM 包。

语法如下:

$ sudo dnf download <package-name>

假设我们想下载 nfs-utils 包

$ sudo dnf download nfs-utils

上面的命令将在本工作目录中下载 nfs-utils 包,它不会下载依赖项。查看下载的包

$ ls
nfs-utils-2.3.3-26.el8.x86_64.rpm
$

下载 RPM 包和依赖项

使用 dnf 或 yum 命令中的 -downloadonly 标记,可以下载 RPM 包及其依赖项。我们也可以使用 dnf 命令中的 -downaddir 标记把 RPM 包下载到特定的文件夹。

语法如下:

$ sudo dnf install <package-name> –downloadonly –downloaddir <directory-path>

假设我们想在 packages 目录中下载 Ansible RPM 及其依赖项。

$ mkdir packages
$ sudo dnf install ansible --downloadonly --downloaddir ~/packages/

Download-RPM-Package-DNF-Command-RHEL

成功执行上述命令后,验证是否下载了 Ansible RPM 包

$ ls -l packages/

Verify-Downloaded-RPM-Packages-ls-Command

现在,我们可以为这些包制作一个 tar 文件,并将其传输到我们想要安装 ansible 的远程系统(该系统没有互联网和软件源连接)

下载分组包

假设我们想下载 Development Tools 分组下的所有包

$ sudo dnf group install "Development Tools" --downloadonly --downloaddir ~/dev-tools/ -y

Download-Development-tools-rhel-centos

检查软件包是否已下载

$ ls -l ~/dev-tools/

Verify-Group-Downloaded-Packages-ls-command

注意 :当我们使用 dnf 或 yum 命令下载软件包时,如果不使用 -downloaddir 标志,软件包将会下载到如下目录:

  • '/var/cache/dnf/dnf/baseos-xxxxx/packages/',
  • '/var/cache/'dnf/appstream-xxxx/packages/',
  • '/var/cache/dnf/epel-xxxx/packages/'

我的开源项目


鸠摩智首席音效师
472 声望9 粉丝

身强体健,龙精虎猛的活着。