写点什么

企业级易用标杆实锤!openEuler DNF 包管理 + Oepkgs 仓库 部署效率全流程实测

作者:鸽芷咕
  • 2025-12-04
    湖北
  • 本文字数:4251 字

    阅读完需:约 14 分钟

企业级易用标杆实锤!openEuler DNF 包管理 + Oepkgs 仓库 部署效率全流程实测

前言

在企业级服务器部署时,运维团队常遇到 “找软件包费劲、软件之间互相冲突难解决、操作步骤还麻烦” 的问题。openEuler 专门针对这些痛点,选了 DNF(Dandified YUM)作为默认的软件管理工具,再加上 Oepkgs 社区仓库,组成 “工具 + 资源” 的一站式解决方案。它靠智能依赖处理技术(libsolv 引擎)自动解决冲突、Oepkgs 仓库里 2 万多个适配 的软件包补全资源,,真正做到 “拿来就能用”,大幅降低企业部署难度,还能保证批量部署和日常维护时的稳定与好用。下面我们就一起来体验一下 openEuler DNF 包管理 + Oepkgs 仓库 。


@TOC

一、openEuler 的介绍

openEuler 是面向数字基础设施的开源操作系统,由开放原子开源基金会孵化及运营,旨在通过开源开放的形式汇聚全球技术力量,构建稳定、安全、高性能的基础软件生态。该系统不仅 100% 覆盖 ARM、x86、RISC-V、SW-64、LoongArch 等主流计算架构,还兼容 NPU、GPU、DPU 等异构算力设备,适配 100+ 整机与 300+ 板卡,广泛应用于金融、运营商、能源、云计算等关键行业。目前已拥有 552 万 + 社区用户、25 家商用 OSV 合作伙伴,形成了从技术研发到商业落地的完整生态闭环。


二、DNF 包管理工具——企业级易用的“核心引擎”

2.1 DNF 包管理工具的背景

在众多操作系统发行版中,包管理工具种类繁多,各有千秋。Debian 系有 APT,RedHat 系有 YUM,而 openEuler 基于 RPM 包管理,但它在此基础上进行了深入优化,并创新性地加入了<font style="color:rgb(222,120,2);">DNF</font>(Dandified Yum)作为新一代工具。DNF 致力于改善 YUM 的瓶颈,即性能、内存占用、依赖解决、速度和许多其他方面。DNF 使用 RPM、libsolv 和 hawkey 库进行包管理。


2. 3 DNF 入选 openEuler 的核心优势

  • 依赖处理更高效:基于 libsolv 解决器,冲突检测速度提升 30%,自动规避依赖循环问题。

  • 资源占用优化:对比 YUM,内存消耗降低 40%,批量操作时卡顿现象显著减少。

  • 扩展能力灵活:支持插件机制,可通过自定义插件适配企业内网部署、权限管控等场景。

2.4 DNF 与 YUM 的比较


DNF 和 YUM 两种 Linux 包管理工具的核心差异主要在于,DNF 作为 YUM 的改进版,采用高性能 libsolv 库解决依赖,内存消耗更低,接口文档完备且支持多种扩展,开发新功能更便捷,适用于 Fedora、RHEL 8 及以上等较新系统,在软件包更新依赖检查、软件库无响应处理、命令功能一致性、内核删除权限及 AppStream module 支持等方面更具优势;而 YUM 基于公共 API,内存消耗大,仅支持 Python 扩展,开发难度较高,主要应用于 RHEL 6/7 等旧版本系统,在依赖检查、功能灵活性等方面相对不足。


三、DNF 的基础使用

DNF 绝非仅能完成软件包安装的基础工具,更是 openEuler 生态中功能全面、灵活高效且兼具深度与实用性的 “瑞士军刀”。它深度适配 openEuler 系统架构,在继承 RPM 包管理核心优势的同时,通过 libsolv 等高性能库的加持,攻克了传统包管理工具在依赖解析、内存占用、运行速度上的诸多瓶颈。无论是日常的软件安装、更新与卸载,还是系统依赖修复、软件源配置、包组管理,亦或是离线包处理、版本回滚等复杂场景,DNF 都能提供简洁直观且稳定可靠的解决方案。下面我们就来实操一下

3.1 DNF 版本信息查询

暂时无法在飞书文档外展示此内容


3.2 查看 DNF 命令的帮助信息

查看 DNF 在 openEuler 中的 help 帮助信息


暂时无法在飞书文档外展示此内容


3.3 DNF 核心命令选项的技术解析

  1. **install <软件包名>**:安装一个或多个指定软件包,自动解析并安装依赖项(例:DNF install nginx)。

  2. **remove <软件包名>**:卸载一个或多个指定软件包,可选择保留配置文件(例:DNF remove nginx)。

  3. **update <软件包名>**:更新指定的已安装软件包,若不指定包名则更新所有可更新软件包(与 upgrade 在 DNF 中功能趋同,兼容 YUM 习惯)。

  4. **upgrade**:更新系统中所有已安装软件包及关联依赖项,优先保持系统版本一致性(DNF 中推荐用于全系统更新)。

  5. **info <软件包名>**:查询软件包的详细信息,包括版本、发布日期、大小、依赖关系、功能描述等(例:DNF info firefox)。

  6. **search <关键词>**:根据关键词搜索软件包名称或描述,支持模糊匹配(例:DNF search web server)。

  7. **list**:列出系统中所有已安装的软件包;搭配参数可扩展功能(如 DNF list available 列出可安装包、DNF list updates 列出可更新包)。

  8. **clean <缓存类型>**:清除系统中的软件包缓存,可选参数包括 all(全部缓存)、packages(包文件)、metadata(元数据)等(例:DNF clean all)。

  9. **check-update**:检查系统中所有已安装软件包的可用更新,仅返回结果不执行实际更新操作。

  10. **repository <操作>**:管理 YUM/DNF 软件仓库,支持 enable(启用)、disable(禁用)、list(列出)等操作(例:DNF repository enable epel)。

  11. **module <操作>**:管理 AppStream 模块(如版本切换、启用/禁用、安装),适用于支持模块的发行版(例:DNF module install nodejs:18)。

  12. **group <操作>**:管理预定义的软件包组(如“开发工具”“图形桌面”),支持 install(安装)、list(列出)、remove(卸载)等(例:DNF group install "Development Tools")。

  13. **config-manager <操作>**:管理 DNF 配置文件和软件库,可添加第三方仓库、修改配置参数(例:DNF config-manager --add-repo ``https://example.com/repo.repo)。

  14. **version**:查看 DNF 工具的当前版本信息,包括依赖库版本(例:DNF version)。

四、DNF 命令的使用实操

4.1 查询系统的 rpm 包

查询已经安装的 rpm 包


暂时无法在飞书文档外展示此内容


4.2 更换软件源配置

这里我们以 openEuler 24.03-LTS 为例来给大家演示一下如何切换官方源配置


  • 1.先对原有源配置进行备份


暂时无法在飞书文档外展示此内容



  1. 查看当前系统架构,避免多架构环境可能出现的包安装错误,为后续操作可安全执行


暂时无法在飞书文档外展示此内容


  1. 之后我们即可着手修改并配置适配 openEuler-24.09(x86_64 架构)的 repo 配置文件


暂时无法在飞书文档外展示此内容



在这里我们可以看到,提示信息 “0 files removed” 表明此前的无效缓存已被彻底清理;而 “Metadata cache created” 则说明软件源连接正常,且元数据缓存已成功生成。同时,openEuler-24.09 Official OS Repository 也正常拉取了元数据(速度达 11 MB/s,下载量为 2.9 MB)。

4.3 openEuler 中的创新扩展

首先,针对软件源管理,openEuler 社区整合了多样化的官方及第三方镜像资源,发者可通过 DNF 轻松切换至最优镜像源。其次,面对多架构兼容的需求,DNF 在 openEuler 中天然支持 x86、ARM、RISC-V 等主流架构,开发者无需切换工具链,简化了跨平台开发与部署流程。此外,openEuler 还为 DNF 拓展了丰富的插件生态,通过插件机制可灵活扩展功能边界,覆盖从特定场景的依赖管理到系统优化等多样化需求,让这一工具既能满足基础操作,又能适配复杂的定制化场景,充分体现了 openEuler 在包管理领域的创新实践。


  1. 软件源优化


暂时无法在飞书文档外展示此内容



  1. DNF 组包管理:高效搭建开发环境


DNF 的组包管理功能可将场景所需的工具链打包为整体,实现 “一键部署”。例如,通过 “Development Tools” 组快速搭建编译环境:


  • 查看开发工具组包含的核心软件(如编译器、调试器等)


暂时无法在飞书文档外展示此内容



  • 安装整个开发工具组(约包含 20+常用工具)


暂时无法在飞书文档外展示此内容



  • 安装完成后,可直接使用 gcc、make 等工具


暂时无法在飞书文档外展示此内容


五、Oepkgs 仓库 —— 企业级部署的 “资源宝库”

如果说 DNF 是“智能管家”,Oepkgs 仓库就是“管家背后的超大仓库”——专门存放适配 openEuler x86_64 架构的补充软件包,解决“官方源没有、自己找又麻烦”的痛点。目前 oepkgs 镜像源中已有 2w+款软件包,用户可以在 https://search.oepkgs.net/search/ 上进行查询并下载使用。


5.1 Oepkgs 仓库核心优势

5.2 Oepkgs 仓库结构与管理逻辑

  • 双仓库协同

  • src-oepkgs:存放 x86_64 软件包源码(“原材料仓库”);

  • oepkgs-management:负责仓库配置与管理(“管理后台”);

  • 流程:开发者提交 x86_64 源码 → 系统自动构建 → 发布到 Oepkgs 仓库供下载。

  • 与官方源分工

  • 官方源(src-openEuler):核心系统组件(如内核、基础工具);

  • Oepkgs 源:补充包+社区贡献包,两者互补,覆盖全场景需求。

  • 分组维护:按 sig 组(专业小组)分类,如 sig-cloud 维护云相关 x86_64 包,更新及时、问题修复快。

5.3 Oepkgs 仓库快速上手

  1. 添加 Oepkgs 仓库源


DNF config-manager --add-repo https://repo.oepkgs.net/openEuler/rpm/
复制代码



  1. 刷新缓存并安装软件


DNF clean all && DNF makecache
复制代码



  1. 查看所有仓库名称,看看 Oepkgs 对应的仓库是否添加成功


DNF repolist all
复制代码


六、DNF+Oepkgs 生态价值

6.1 生态协同核心价值

DNF 与 Oepkgs 仓库的协同,不仅是“工具+资源”的简单组合,更是 openEuler 面向企业场景的生态闭环:


  • 降低部署门槛:无需手动编译源码、解决依赖冲突,一键完成软件安装,新手运维也能快速上手;

  • 提升运维效率:批量操作不卡顿、缓存优化提速、自动更新插件适配,减少重复劳动;

  • 保障资源覆盖:官方源+Oepkgs 源互补,核心包、补充包、小众包全满足,无需跨平台找资源;

  • 强化稳定性:所有 x86_64 包均经过兼容性测试,与 openEuler 系统深度适配,降低生产环境故障风险。

6.2 企业场景应用建议

生产环境

  • 配置策略:“官方源为主,Oepkgs 源为辅”;

  • 核心逻辑:系统内核、数据库、核心中间件等关键组件使用官方包(保障稳定性);小众工具、定制化组件使用 Oepkgs 包(满足特殊需求);

  • 额外优化:启用 DNF-automatic 插件,仅更新安全补丁,避免功能更新引发故障。

测试环境

  • 配置策略:优先启用 Oepkgs 源;

  • 核心逻辑:提前体验最新版本的软件包,测试兼容性与新功能,为生产环境升级做铺垫;

  • 额外优化:开启缓存保留(keepcache=1),重复测试时无需重复下载,提升效率。

七、总结

DNF 与 Oepkgs 的组合,为 openEuler 生态打造了“易用、高效、全量、稳定”的企业级部署解决方案。从基础包安装、源配置到复杂的离线部署、批量运维,二者协同突破传统 Linux 系统部署痛点,让企业用户无需在“找包、解依赖、调配置”上耗费精力,可专注核心业务创新。无论新手运维快速上手,还是资深团队提升效率,这套方案都能适配企业不同阶段需求,成为 openEuler 生态中企业级部署的“标杆组合”。随着生态持续完善,其不仅在 x86_64 架构场景竞争力强化,更在 ARM、RISC-V 等多架构中稳步拓展,全方位凸显 openEuler 生态“多元架构融合、全场景适配”的多样性优势,为企业数字化转型提供坚实且多元的支撑。

发布于: 2 小时前阅读数: 2
用户头像

鸽芷咕

关注

还未添加个人签名 2023-11-08 加入

还未添加个人简介

评论

发布
暂无评论
企业级易用标杆实锤!openEuler DNF 包管理 + Oepkgs 仓库 部署效率全流程实测_openEuler_鸽芷咕_InfoQ写作社区