普通网友 2025-08-13 16:55 采纳率: 98.6%
浏览 49
已采纳

问题:如何使用DNF在Linux中下载指定版本的软件包?

**问题:** 如何使用DNF在Linux中下载指定版本的软件包? **常见技术问题描述:** 在使用DNF包管理器时,用户常需要安装特定版本的软件包以满足兼容性或测试需求。然而,默认的`dnf install`命令仅安装最新版本。如何通过DNF精确下载并安装指定版本的RPM包?是否可以通过DNF直接下载RPM文件而不进行安装?是否存在推荐的选项或插件(如`dnf download`)来实现该目标?此外,如何列出可用的历史版本以便选择?这些问题在系统维护和自动化部署中尤为常见。
  • 写回答

1条回答 默认 最新

  • Jiangzhoujiao 2025-08-13 16:55
    关注

    如何使用DNF在Linux中下载指定版本的软件包?

    1. DNF简介与版本控制背景

    DNF(Dandified YUM)是新一代的RPM包管理器,广泛用于Fedora、RHEL 8+、CentOS Stream等Linux发行版。默认情况下,dnf install package-name命令会安装软件仓库中最新版本的软件包。

    但在某些场景中,如系统兼容性测试、自动化部署、安全审计等,我们可能需要安装特定版本的软件包。这就需要我们掌握如何使用DNF下载并安装指定版本的RPM包。

    2. 查看可用版本

    在安装之前,我们需要知道某个软件包有哪些可用版本:

    dnf --showduplicates list package-name

    例如,查看httpd的可用版本:

    dnf --showduplicates list httpd

    输出示例:

    PackageVersionRepository
    httpd.x86_642.4.37-43.module_el8.5.0+962+55b137daAppStream
    httpd.x86_642.4.37-42.module_el8.5.0+915+e75c8c83AppStream

    3. 安装指定版本

    一旦确定了版本号,可以使用以下命令安装指定版本:

    dnf install package-name-version.release.architecture

    例如:

    dnf install httpd-2.4.37-42.module_el8.5.0+915+e75c8c83.x86_64

    4. 仅下载不安装:使用dnf download插件

    若仅需下载RPM文件而不安装,可使用dnf download插件:

    dnf download package-name --version=version

    例如:

    dnf download httpd --version=2.4.37-42.module_el8.5.0+915+e75c8c83

    该命令将下载指定版本的RPM包到当前目录。

    5. 安装dnf download插件

    若系统未安装该插件,可使用以下命令安装:

    dnf install dnf-plugins-core

    该插件提供多个实用功能,包括下载、构建缓存、查看历史记录等。

    6. 使用--setopt参数控制下载行为

    可以通过设置DNF配置参数来控制是否下载依赖包:

    dnf download package-name --version=version --setopt=keepcache=1

    或者下载所有依赖:

    dnf download package-name --version=version --resolve

    7. 自动化部署中的使用示例

    在自动化脚本中,通常需要先获取可用版本,然后选择特定版本进行下载或安装:

    
    #!/bin/bash
    PACKAGE="httpd"
    VERSION="2.4.37-42.module_el8.5.0+915+e75c8c83"
    dnf --showduplicates list $PACKAGE | grep $VERSION
    if [ $? -eq 0 ]; then
        dnf download $PACKAGE --version=$VERSION
    fi
      

    8. 其他相关插件与工具

    除了dnf download,还有以下常用插件:

    • dnf history:查看事务历史,便于回滚或审计
    • dnf builddep:安装构建该软件包所需的所有依赖
    • dnf module:管理模块化软件流(适用于RHEL 8+)

    9. 流程图:DNF指定版本操作流程

    graph TD A[开始] --> B[列出可用版本] B --> C{是否找到指定版本?} C -->|是| D[选择版本号] C -->|否| E[结束] D --> F[下载或安装] F --> G{是否仅下载?} G -->|是| H[使用dnf download] G -->|否| I[使用dnf install] H --> J[结束] I --> J
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 8月13日