前言
在企业级服务器部署时,运维团队常遇到 “找软件包费劲、软件之间互相冲突难解决、操作步骤还麻烦” 的问题。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 (Dandified YUM) | YUM (Yellowdog Updater, Modified) |
|---|---|
| DNF依赖解决方案采用由 SUSE 开发的高性能 libsolv 库 | YUM依赖解决方案为公共 API |
| API 接口文档完备 | API 接口文档较完备 |
| 由 C/C++ 和 Python 编写 | 由 Python 编写 |
| DNF 目前应用在 Fedora、RHEL 8、CentOS 8、OEL 8和 Mageia 6/7 | YUM 目前应用在 RHEL 6/7、CentOS 6/7 和 OEL 6/7 |
| DNF 支持各类扩展 | YUM 支持 Python 扩展 |
| 接口文档完备,开发新功能容易 | 接口文档不完备,开发新功能困难 |
| 同步软件库元数据时内存消耗低 | 同步软件库元数据消耗大量内存 |
| 如果软件包更新过程中存在不相关的依赖包,则软件包不更新 | 软件包更新时不进行依赖包相关性检查 |
| 如果允许的软件库没响应,则 DNF 会忽略并继续使用可用软件库 | 如果允许软件库没响应,则 YUM 程序会立即中止 |
| DNF 中 update 和 upgrade 相同 | YUM 中 update 和 upgrade 不同 |
| 程序包的依赖包是不会更新的 | YUM 提供选项来设置这种行为 |
| DNF 允许删除所有内核文件,包括正在使用的内核 | YUM 禁止删除正在使用的内核 |
| 如果软件包更新过程中存在不相关的依赖包,则软件包不更新 | 软件包更新时不进行依赖包相关性检查 |
| 支持 AppStream module | 不支持 AppStream module |
三、DNF 的基础使用
DNF 绝非仅能完成软件包安装的基础工具,更是 openEuler 生态中功能全面、灵活高效且兼具深度与实用性的 “瑞士军刀”。它深度适配 openEuler 系统架构,在继承 RPM 包管理核心优势的同时,通过 libsolv 等高性能库的加持,攻克了传统包管理工具在依赖解析、内存占用、运行速度上的诸多瓶颈。无论是日常的软件安装、更新与卸载,还是系统依赖修复、软件源配置、包组管理,亦或是离线包处理、版本回滚等复杂场景,DNF 都能提供简洁直观且稳定可靠的解决方案。下面我们就来实操一下
3.1 DNF 版本信息查询
DNF --version
3.2 查看DNF命令的帮助信息
查看DNF在openEuler中的help帮助信息
DNF --help
3.3 DNF 核心命令选项的技术解析
**install <软件包名>**:安装一个或多个指定软件包,自动解析并安装依赖项(例:DNF install nginx)。**remove <软件包名>**:卸载一个或多个指定软件包,可选择保留配置文件(例:DNF remove nginx)。**update <软件包名>**:更新指定的已安装软件包,若不指定包名则更新所有可更新软件包(与upgrade在 DNF 中功能趋同,兼容 YUM 习惯)。**upgrade**:更新系统中所有已安装软件包及关联依赖项,优先保持系统版本一致性(DNF 中推荐用于全系统更新)。**info <软件包名>**:查询软件包的详细信息,包括版本、发布日期、大小、依赖关系、功能描述等(例:DNF info firefox)。**search <关键词>**:根据关键词搜索软件包名称或描述,支持模糊匹配(例:DNF search web server)。**list**:列出系统中所有已安装的软件包;搭配参数可扩展功能(如DNF list available列出可安装包、DNF list updates列出可更新包)。**clean <缓存类型>**:清除系统中的软件包缓存,可选参数包括all(全部缓存)、packages(包文件)、metadata(元数据)等(例:DNF clean all)。**check-update**:检查系统中所有已安装软件包的可用更新,仅返回结果不执行实际更新操作。**repository <操作>**:管理 YUM/DNF 软件仓库,支持enable(启用)、disable(禁用)、list(列出)等操作(例:DNF repository enable epel)。**module <操作>**:管理 AppStream 模块(如版本切换、启用/禁用、安装),适用于支持模块的发行版(例:DNF module install nodejs:18)。**group <操作>**:管理预定义的软件包组(如“开发工具”“图形桌面”),支持install(安装)、list(列出)、remove(卸载)等(例:DNF group install "Development Tools")。**config-manager <操作>**:管理 DNF 配置文件和软件库,可添加第三方仓库、修改配置参数(例:DNF config-manager --add-repo ``https://example.com/repo.repo)。**version**:查看 DNF 工具的当前版本信息,包括依赖库版本(例:DNF version)。
四、DNF命令的使用实操
4.1 查询系统的rpm包
查询已经安装的rpm包
DNF list installed
4.2 更换软件源配置
这里我们以openEuler 24.03-LTS 为例来给大家演示一下如何切换官方源配置
- 1.先对原有源配置进行备份
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
- 查看当前系统架构,避免多架构环境可能出现的包安装错误,为后续操作可安全执行
arch
- 之后我们即可着手修改并配置适配 openEuler-24.09(x86_64 架构)的 repo 配置文件
cat > /etc/yum.repos.d/openEuler-24.09.repo << 'EOF'
[openEuler-24.09-OS]
name=openEuler-24.09 Official OS Repository
baseurl=https://dl-cdn.openeuler.openatom.cn/openEuler-24.09/OS/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://dl-cdn.openeuler.openatom.cn/openEuler-24.09/OS/$basearch/RPM-GPG-KEY-openEuler
repo_gpgcheck=0
metadata_expire=86400
enabled_metadata=1
EOF
在这里我们可以看到,提示信息 “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 在包管理领域的创新实践。
- 软件源优化
sudo DNF config-manager --add-repo=https://repo.openeuler.org/20.03-LTS-SP3/everything/x86_64/
sudo DNF makecache
- DNF 组包管理:高效搭建开发环境
DNF 的组包管理功能可将场景所需的工具链打包为整体,实现 “一键部署”。例如,通过 “Development Tools” 组快速搭建编译环境:
- 查看开发工具组包含的核心软件(如编译器、调试器等)
DNF group info "Development Tools"
- 安装整个开发工具组(约包含20+常用工具)
sudo DNF group install "Development Tools" -y
- 安装完成后,可直接使用gcc、make等工具
gcc --version
make --version
五、Oepkgs 仓库 —— 企业级部署的 “资源宝库”
如果说 DNF 是“智能管家”,Oepkgs 仓库就是“管家背后的超大仓库”——专门存放适配 openEuler x86_64 架构的补充软件包,解决“官方源没有、自己找又麻烦”的痛点。目前oepkgs 镜像源中已有2w+款软件包,用户可以在 search.oepkgs.net/search/ 上进行查询并下载使用。
5.1 Oepkgs 仓库核心优势
| 优势维度 | 具体说明 |
|---|---|
| 资源规模 | 收录 2w+ 架构软件包,涵盖开发工具、中间件、小众工具等 |
| 补充价值 | 填补官方源空白,提供长尾软件、定制化组件,满足企业特殊需求 |
| 兼容性保障 | 所有 包均经社区测试,确保适配 openEuler 系统,无“装得上用不了”问题 |
| 查询便捷性 | 官网支持“x86_64 架构+系统版本”多维度筛选,快速定位目标包 |
5.2 Oepkgs 仓库结构与管理逻辑
- 双仓库协同:
src-oepkgs:存放 x86_64 软件包源码(“原材料仓库”);oepkgs-management:负责仓库配置与管理(“管理后台”);- 流程:开发者提交 x86_64 源码 → 系统自动构建 → 发布到 Oepkgs 仓库供下载。
- 与官方源分工:
- 官方源(src-openEuler):核心系统组件(如内核、基础工具);
- Oepkgs 源:补充包+社区贡献包,两者互补,覆盖全场景需求。
- 分组维护:按
sig 组(专业小组)分类,如sig-cloud维护云相关 x86_64 包,更新及时、问题修复快。
5.3 Oepkgs 仓库快速上手
- 添加 Oepkgs 仓库源
DNF config-manager --add-repo https://repo.oepkgs.net/openEuler/rpm/
- 刷新缓存并安装软件
DNF clean all && DNF makecache
- 查看所有仓库名称,看看 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生态“多元架构融合、全场景适配”的多样性优势,为企业数字化转型提供坚实且多元的支撑。
如果您正在寻找面向未来的开源操作系统,不妨看看DistroWatch 榜单中快速上升的 openEuler:distrowatch.com/table-mobil…,一个由开放原子开源基金会孵化、支持“超节点”场景的Linux 发行版。
openEuler官网:www.openeuler.openatom.cn/zh/