目录

一 Linux应用程序基础

1.Linux应用程序的系统文件构成

2.Linux软件包的四大封装类型及核心特性

二 RPM软件包管理工具

1.RPM概述

1)RPM 的核心优势

2)RPM 包的标准化命名规范

2.RPM命令的全流程(核心重点)

1)rpm 命令的基本格式

2)查询 RPM 软件包信息(最常用功能,重点掌握)

3)安装、升级、卸载 RPM 软件包(实操重点)

三 DNF 软件包管理器(RPM 系新一代工具,核心重点)

1.DNF 概述与工作机制

1)DNF 的核心优势

2)DNF 的核心工作机制

2.DNF 命令全流程实操(与 YUM 兼容,重点掌握)

1)软件包查询(核心:list/info/search)

2)软件包安装(核心:dnf install)

3)软件包升级(核心:dnfupdate)

4)软件包卸载(核心:dnf remove)

5)DNF 其他常用命令

四 从源代码编译安装程序


一 Linux应用程序基础

1.Linux应用程序的系统文件构成

Linux 遵循 FHS(文件系统层次结构标准),openEuler 24,03 也严格遵循该标准,将应用程序的不同类型文件分散存储在指定目录,实现文件分类管理,便于系统识别和用户维护。所有应用程序的文件存储均遵循统一规范,典型组成部分及存储目录如下,是Linux 系统的核心设计原则,必须牢记:
1.普通可执行程序文件:存放于/usr/bin,所有普通用户均可执行,如 python3、nginx、tree 等
日常使用的程序。
2.服务器/管理程序文件:存放于/usr/sbin,仅 root 管理员可执行,多为系统服务、管理工具,
如firewalld、networkctl.
3.配置文件:核心目录/etc,若配置文件较多,会在/etc下创建专属子目录(如/etc/nginx、
/etc/my.cnf.d),配置文件是应用程序的“参数表”,修改后需重启程序生效。
4.日志文件:存放于/var/log,记录程序运行状态、错误信息、访问记录等,如
/var/log/nginx/access.log、/var/log/messages,是问题排査的核心依据。
5.参考文档/数据文件:存放于/usr/share/doc/,包含程序的安装说明、使用手册、更新日志等,
如/usr/share/doc/nginx/.
6.man 手册页:存放于/usr/share/man/,是程序的在线帮助文档,通过 man 命令/程序名可快速
查询使用方法,如man nginx、man rpm。

2.Linux软件包的四大封装类型及核心特性

Linux 的开源生态决定了软件包的多样化封装形式,不同封装类型适配不同的发行版和使用场景,核心分为二进制包(免编译)和源代码包(需编译)两大类,其中二进制包是日常使用的主流,源代码包适用于定制化需求。四大封装类型的详细特性、适用系统、管理工具如下表,是选择软件安装方式的核心依据:

封装类型 文件后缀 核心特性 适用 Linux 发行 核心管理工具 优势 劣势
RPM 包 *.rpm 预编译二进包,RPM,系标准格式 RHEL、Centos
openEuler
openSusE
rpm、yum、DNF 免编译,安装速度快;版本标准化;包管理器自动解决依赖 版本可能滞后;功能定制性差;仅适用于 RPM 系发行版
DEB 包 *.deb 预编译二进包Debian系标准格式 Ubuntu、 Debian、Linux Mint dpkg、 apt 免编译,安装速度快;依赖管理严格;Ubuntu 生态软件丰富 仅适用于 Debian系发行版:跨发行版兼容性差
源代码包(TarBal1) .tar.gz/.tar.bz2 软件原始代码,未编译 所有 Linux 发行版(通用) gcc,make、./conf
igure
版本最新;可按需定制功能;跨发行版兼容 需安装编译环境;安装步骤繁琐;需手动解决依赖
自包含安装程序 .bin/.sh
/install
.sh
预编译+依赖封装,独立安装包 所有 Linux 发行版(通用) chmod +x执行安装脚本 免编译,自带依赖;安装向导化;跨发行版兼容 安装目录不规范;难以通过系统包管理器管理;卸载繁锁

二 RPM软件包管理工具

1.RPM概述

RPM(Red Hat Package Manager,后更名为RPM Package Manager)是 Linux 二进制包管理的开山鼻祖,由 Red Hat 于 1997 年首创,是 openEuler、RHEL 等RPM 系发行版的核心包管理机制,其数据库驱动的事务性管理和依赖解析引擎奠定了 Linux 二进制包管理的行业标准。openEuler 24.83 深度兼容 RPM包管理体系,同时对其依赖解析和事务管理做了优化,提升了在鹏等架构上的兼容性。


1)RPM 的核心优势

  1. 全生命周期管理:通过系统级数据库(/var/lib/rpm/)跟踪软件包的安装、升级、卸载,记录每个软件包的文件列表、依赖关系、版本信息,确保系统软件状态可追溯;
  2. 自动依赖解析:能自动计算软件包间的依赖链,提示缺失的依赖包,避免因依赖缺失导致程序无法运行,openEuler 24.83 对鲲鹏架构的依赖解析做了专项优化;
  3. 标准化命名:所有 RPM 包遵循统一的命名规范,通过文件名即可获取软件的完整信息,便于识别和管理;
  4. 事务性操作:安装/升级/卸载操作作为一个“事务”执行,若过程中出现错误(如磁盘空间不足、依赖缺失),会自动回滚,保证系统状态一致性。


2)RPM 包的标准化命名规范


RPM 包的文件名是结构化的信息载体,严格遵循以下格式,无任何例外,掌握该规范能快速识别软件的核心信息:
软件名-版本号-发布次数.操作系统版本.硬件架构.rpm

2.RPM命令的全流程(核心重点)

1)rpm 命令的基本格式

rpm 命令的核心是选项驱动,不同功能对应不同的核心选项,基本格式为:
rpm[核心选项][子选项][参数]
核心功能与对应核心选项:

  • 查询/验证:-q(查询)、-V(验证)
  • 安装/升级:-i(安装)、-U(升级,未安装则直接安装)、-F(更新,未安装则放弃)
  • 卸载:-e(卸载)

执行 man rpm 可查看完整的选项说明,建议日常使用中逐步记忆核心选项。


2)查询 RPM 软件包信息(最常用功能,重点掌握)


查询是 rpm 命令最常用的功能,分为査询已安装的软件包和査询未安装的 RPM 包文件两类,核心选项分别为-g(已安装)和-gp(未安装),搭配子选项实现精准査询,所有查询操作均无需依赖网络。openEuler24.03 对 rpm 查询命令做了性能优化,大幅提升了海量包的査询速度。

(1)查询已安装的RPM 软件包(核心:rpm -q +子选项)

命令组合 功能说明 实战案例 输出效果
rpm -q 软件名 查询指定软件是否己安装 rpm -q wget 已安装:输出包名;未安装: 提示“未安装软件包 wget”
rpm -qa 列出系统中所有己安装的 RPM 软件 rpm -qa 逐行输出所有包名,数量可达数千
rpm -qa | grep -i 关键词 模糊查询含指定关键词的软件包(-i忽略大小写) rpm -qa | grep -i python3 列出所有名称含 python3 的已安装包
rpm -qi 软件名 查看指定软件的详细信息(版本、发布时间、用途、许可证等) rpm -qi firewalld 输出软件的完整元信息,包括安装时间、开发者、功能描述
rpm -ql 软件名 列出指定软件安装的所有文件和目录 rpm -ql nginx 逐行输出该软件的所有文件路径,对应 3.1.2 的文件构成
rpm -qf 文件/目录路径 查看指定文件/日录由哪个软件包安装(反向查询) rpm -qf /usr/bin/nginx 输出该文件所属的软件包名

(2)查询未安装的 RPM 包文件(核心:rpm -qp + 子选项)
适用于在安装前査看 RPM 包文件的信息,避免安装错误,参数为RPM 包的完整文件路径(非软件名),常用子选项与已安装査询一致,核心为-gpi(查详细信息)、-gpl(查包内文件)。

3)安装、升级、卸载 RPM 软件包(实操重点)


该操作是 RPM 包管理的核心应用,openEuler 24.03 完整支持rpm 的安装、升级、卸载功能,需注意依赖关系和参数格式:安装/升级的参数为 RPM 包完整路径,卸载的参数为软件名;若存在依赖缺失,系统会直接报错,需先安装依赖包。
(1)核心选项说明

核心选项 功能 常用组合选项 适用场景
-i 安装新的 RPM 包 -ivh 全新安装,查看安装进度和详细信息
-U 升级指定软件包,未安装则直接安装 -Uvh 软件版本更新,兼容全新安装
-F 更新指定软件包,未安装则放弃 -Fvh 仅对己安装软件进行版本更新
-e 卸载指定软件包 -e 移除已安装的软件,仅需软件名
子选项-h 以“#”显示安装/升级进度 搭配-i/-U/-F 直观查看安装过程
子选项-v 显示安装/升级的详细信息 搭配-i/-U/-F 排查安装错误
--force 强制安装 -ivh --force 替换已安装的同版本包/安装旧版本包
--nodeps 忽略依赖关系 -ivh --nodeps / -e --nodeps 强制安装/卸载,忽略依赖检查

(2)安装RPM 包(安装openEuler 24.03 光盘中的 wget 包)

挂载光盘

三 DNF 软件包管理器(RPM 系新一代工具,核心重点)

1.DNF 概述与工作机制

DNF(Dandified YM)是 YUM 的下一代升级版本,是 openEuler 24.83 的默认包管理器,基于 RPM 包管理机制,openEuler 24.83 对 DNF 做了深度优化,包括鲲鹏架构适配、镜像源智能选择、依赖解析效率提升等,解决了传统 YUM 的速度慢、依赖解析差、内存占用高等问题,是 openEuler 24.83 软件管理的首选工具。

1)DNF 的核心优势


1.自动化依赖解决:采用新一代依赖解析引擎,openEuler 24.83 针对鲲鹏和 x86 架构做了双架构
依赖优化,能快速构建复杂的依赖图,自动下载并安装所有缺失的依赖包,无需手动干预;
2.多仓库支持:可配置多个软件仓库(官方仓库、第三方仓库如 EPEL、openEuler 专属仓库),自
动从仓库中获取最新的软件包;
3.智能镜像源:openEuler 24.03 内置了专属的镜像源调度机制,可根据用户的地理位置和网络环
境自动选择最优的 openEuler 镜像服务器,大幅提升软件下载速度;
4.模块化管理:支持软件模块(Module),可快速切换软件的不同版本(如Python 3.9/3.11).openEuler 24.83 强化了模块的版本隔离能力,避免版本冲突;
5.命令简洁:保持与 YUM 完全兼容的命令格式,学习成本低,YUM 用户可无缝切换;
6.高效稳定:相比 YUM,占用内存更少、执行速度更快,支持并行下载,openEuler 24.03 优化了
DNF 的内存管理,适合大规模软件管理和云原生环境;
7.多架构兼容:完美支持 x86 64、aarch64等 openEuler 24.03 主流架构,自动匹配对应架构的
软件包。

2)DNF 的核心工作机制


DNE 的工作基于软件仓库和元数据,核心流程为“读取仓库配置 - 下载元数据 - 解析依赖 - 下载并安装软件包”,openEuler 24.83 对该流程做了轻量化优化,减少了磁盘和内存占用,具体机制如下:
(1)软件仓库(Repository)
软件仓库是 DNF 的软件来源,分为官方仓库(openEuler 24.03 自带,如 base、appstream、extras)和第三方仓库(如 EPEL、Nginx 官方仓库、openEuler 社区仓库),仓库的配置文件存放于
/etc/yum.repos.d/,文件后缀为.repo,该目录是 DNF 的核心配置目录,所有.repo 文件都会被 DNF自动识别。
(2)元数据(Metadata)
每个软件仓库都会提供元数据,包含仓库中所有软件包的名称、版本、依赖关系、文件列表、下载地址等信息,DNF 会定期下载并缓存元数据到本地(/var/cache/dnf/),openEuler 24.83 优化了元数据的压缩和缓存策略,避免每次操作都实时扫描仓库,大幅提升査询和安装速度,元数据默认有过期时间(如6 小时),过期后会自动更新。
(3)仓库配置文件解析(以openEuler-extras.repo 为例)
仓库配置文件采用段式配置,每个仓库对应一个[仓库名]段,包含多个配置项,核心配置项及说明如下,掌握后可自行配置第三方仓库,openEuler 24.83 的仓库配置支持更多架构相关变量:

2.DNF 命令全流程实操(与 YUM 兼容,重点掌握)

DNF 命令的格式简洁直观,完全兼容 YUM 命令,openEuler 24.03 完整支持所有 DNF 核心命令,核心格式为:
dnf「选项/子命令][软件包名]【参数]
DNF 的操作均依赖网络(从仓库下载软件包/元数据),若服务器无网络,可配置 openEuler 24.03 本地光盘仓库。以下为DNF 的最常用操作,是 openEuler 24.03 日常系统管理的高频命令,建议逐一实操并牢记。

1)软件包查询(核心:list/info/search)

命令 功能说明
dnf list all 列出所有已安装和仓库中可用的软件包
dnf list 软件名 查看指定软件的安装状态和可用版本
dnf list available 仅列出仓库中可安装的未安装软件包
dnf list updates 列出系统中可升级的软件包
dnf info 软件名 查看指定软件包的详细信息(版本、大小、用途、依赖等)
dnf search 关键词 搜索仓库中名称/描述含指定关键词的软件包

2)软件包安装(核心:dnf install)

DNF 安装软件的核心优势是自动解决依赖,只需指定软件名,DNF 会自动从 openEuler 仓库下载软件包及所有依赖包,无需手动处理,是最常用的操作之一。
核心命令:dnf insta1l「选项】软件名

  • 选项-y:自动确认所有操作,无需手动输入y(适用于脚本/批量操作);
  • 可同时安装多个软件,用空格分隔软件名。

3)软件包升级(核心:dnfupdate)

DNF 可快速升级单个软件、多个软件或整个系统的所有软件,自动解决升级过程中的依赖问题,openEuler24.03的 dnf update 命令支持跨架构的包升级校验,是系统维护的重要操作。
核心命令:
1.dnf update[选项]软件名:升级指定软件包;
2.dnf update[选项]:升级系统中所有可升级的软件包(系统更新);
3.选项-y:自动确认升级。

4)软件包卸载(核心:dnf remove)

DNF 卸载软件时,会自动检査并提示依赖的软件包,避免误卸载导致系统功能异常,openEuler 24.83强化了 dnf remove 的依赖校验,防止误删系统核心包,卸载后会自动释放磁盘空间。
核心命令:dnf remove[选项]软件名

  • 选项-y:自动确认卸载;
  • 可同时卸载多个软件,用空格分隔。

5)DNF 其他常用命令

命令 功能说明
dnf clean all 清理 DNF 的缓存(元数据+下载的软件包),解决缓存损坏问题,openEuler 优化了缓存清理的速度
dnf makecache 手动生成元数据缓存,提升后续操作速度,支持多架构元数据缓存
dnf repolist 列出当前启用的所有软件仓库
dnf repolist all 列出当前启用的所有软件仓库
dnf module list 软件名 查看软件的模块版本(如 Python、Node.js),openEuler 强化了模块的版本管理
dnf check 检查系统中存在的依赖问题,openEuler 新增了架构依赖校验

四 从源代码编译安装程序

编译安装的前提:安装开发环境
源代码编译需要编译器和构建工具,核心依赖为gcc(C/C++编译器)和 make(构建工具),此外,不同软件还需要对应的开发库(如 Nginx 需要 pcre-deve1、zlib-deve1),开发库的后缀通常为-devel,
表示开发用的头文件和库文件。

步骤 1:下载并解包源代码包(Tar 解包)

步骤 2:配置编译参数(./configure,核心定制步骤)

步骤 3:编译源代码(make,无定制,纯执行)

步骤 4:安装编译后的程序(make instal)

步骤5:验证安装并启动服务(实战验证)

验证 Nginx 是否启动:使用 ps -efgrep nginx 査看 Nginx 进程,若存在master process(主进程)和 worker process(工作进程),表示启动成功,openEuler 24.03 的ps 命令会显示进程的架构信息:

浏览器验证在客户端浏览器中输入 openEuler 24.03 服务器的 IP 地址(如 http://192.168.10.100),若看到Nginx 的欢迎页面,表示 Nginx 在 openEuler 24.03 上编译安装成功,可正常提供 Web 服务.

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐