在 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
假设我们想下载 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
假设我们想在 packages 目录中下载 Ansible RPM 及其依赖项。
$ mkdir packages
$ sudo dnf install ansible --downloadonly --downloaddir ~/packages/
成功执行上述命令后,验证是否下载了 Ansible RPM 包
$ ls -l packages/
现在,我们可以为这些包制作一个 tar 文件,并将其传输到我们想要安装 ansible 的远程系统(该系统没有互联网和软件源连接)
下载分组包
假设我们想下载 Development Tools 分组下的所有包
$ sudo dnf group install "Development Tools" --downloadonly --downloaddir ~/dev-tools/ -y
检查软件包是否已下载
$ ls -l ~/dev-tools/
注意 :当我们使用 dnf 或 yum 命令下载软件包时,如果不使用 -downloaddir
标志,软件包将会下载到如下目录:
- '/var/cache/dnf/dnf/baseos-xxxxx/packages/',
- '/var/cache/'dnf/appstream-xxxx/packages/',
- '/var/cache/dnf/epel-xxxx/packages/'