本次课程主要学习了在openeuler24.03系统中管理Linux应用程序的三大核心方式:RPM命令、DNF包管理器以及源代码编译安装的内容。这些内容涵盖了从基础概念、文件构成、包封装类型到具体命令实操的知识体系。可以根据实际场景选择最优的软件管理方案。

一、Linux应用程序基础

1.1 Linux命令与应用程序的核心区别

首先,Linux中有命令与应用程序两种功能单元,但需要了解他们的不同,如储存位置、运行方式等,比如执行文件等。

对比维度

Linux 命令

Linux 应用程序

执行文件大小

体积小巧,多为轻量级可执行文件

体积通常更大,包含完整功能模块

存储目录

核心命令:/bin、/sbin;内部命令集成于 Bash

普通程序:/usr/bin、/usr/local/bin;服务程序:/usr/sbin、/usr/local/sbin

安装时机

随操作系统默认安装,为系统基础组件

操作系统安装后,根据需求另行安装

功能定位

辅助系统管理,实现基础操作(如 ls、cd、rm)

提供独立业务功能,等同于“软件”(如 Nginx、MySQL、Python)

执行格式

固定遵循“命令字 + 选项 + 参数”标准格式

无固定格式,由开发者定义(可带图形界面/命令行/脚本启动)

运行界面

仅支持字符操作界面(CLI)

支持 CLI、图形界面(GUI)等多种形式

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

Linux遵循FHS(文件系统层次结构标准),将应用程序的不同类型文件分散存储在指定目录:

1. ​普通可执行程序文件:存放于​ /usr/bin ​,所有用户可执行。
 
2.​服务器/管理程序文件:存放于​ /usr/sbin ​,仅root可执行。
 
3.配置文件:存放于​ /etc ​,修改后需重启程序生效。
 
​4.日志文件:存放于​ /var/log ​,记录运行状态、错误信息等。
 
5.参考文档/数据文件:存放于​ /usr/share/doc/ ​。
 
6.​man手册页:存放于​ /usr/share/man/ ​,通过man命令查询帮助。

1.3 软件包的四大封装类型

Linux软件包分为二进制包(免编译)和源代码包(需编译)两大类。以下是四种主要类型:

封装类型

文件后缀

核心特性

适用发行版

管理工具

优势

劣势

RPM包

*.rpm

二进制,免编译

RHEL/CentOS/openEuler

rpm/yum/DNF

安装快,版本标准化

版本可能滞后,仅RPM系

DEB包

*.deb

二进制,免编译

Ubuntu/Debian

dpkg/apt

依赖管理严格

仅Debian系

源代码包

.tar.gz/.tar.bz2

原始代码,需编译

所有Linux

gcc/make

版本最新,可定制

需编译环境,步骤繁琐

自包含安装程序

无固定

自带依赖

所有Linux

chmod +x

免编译,跨发行版

目录不规范,卸载麻烦

二、RPM软件包管理工具

2.1 RPM是什么

RPM(Red Hat Package Manager)是Linux二进制包管理的开山鼻祖,由Red Hat于1997年首创,是openEuler、RHEL等RPM系发行版的核心包管理机制。

RPM的四大核心优势:

全生命周期管理:通过数据库(/var/lib/rpm/)跟踪软件包状态

自动依赖解析:自动计算依赖链,提示缺失的依赖包

标准化命名:通过文件名即可获取软件的完整信息

事务性操作:安装/升级/卸载出错时自动回滚

2.2RPM包命令规范

格式:软件名-版本号-发布次数.操作系统版本.硬件架构.rpm

示例:lynx-2.8.9-20.oe2403.x86_64.rpm

  - 软件名:lynx

  - 版本号:2.8.9(主版本.次版本.修订号)

  - 发布次数:20

  - 操作系统版本:oe2403(openEuler 24.03)

  - 硬件架构:x86_64(noarch表示跨架构)

2.3 RPM命令实操

rpm命令是RPM包管理的原生工具,支持查询、安装、升级、卸载等操作。

2.3.1 查询软件包信息(最常用部分功能)

rpm -q 软件名  -  查询指定软件是否已安装

rpm -qa  -  列出所有已安装的RPM包

rpm -qa | grep -i 关键词  -  模糊查询含关键词的软件包

rpm -qi 软件名  -  查看软件的详细信息

rpm -ql 软件名  -  列出软件安装的所有文件

rpm -qf 文件路径  -  查看文件由哪个软件包安装(反向查询)

rpm -qpi 包文件路径  -  查看未安装的RPM包信息

rpm -qpl 包文件路径  -  查看未安装的RPM包内文件列表

2.3.2 安装、升级、卸载

rpm -ivh 包文件.rpm  -  安装新的RPM包(显示进度)

rpm -Uvh 包文件.rpm  -  升级软件包,未安装则直接安装

rpm -Fvh 包文件.rpm  -  更新软件包,未安装则放弃

rpm -e 软件名  -  卸载软件包

注意:安装/升级的参数是RPM包完整路径,卸载的参数是软件名。如果存在依赖缺失,系统会报错,需先安装依赖包。

三、DNF软件包管理器

3.1 DNF概述

DNF(Dandified YUM)是YUM的升级版,是RPM系发行版的新一代包管理器,基于管理机制做了深度优化,包括鲲鹏架构适配,镜像源只能选择,依赖解析效率提升等。它能够自动解决软件包依赖关系,从多仓库下载并安装软件。

3.2 DNF的核心优势

自动解决依赖:自动下载并安装所有依赖包

多仓库支持:从配置的软件源自动获取软件包

与YUM兼容:命令格式和配置文件与YUM一致

性能优化:比YUM更快,内存占用更少

3.3 DNF命令实操

dnf install 软件名  -  安装软件包(自动解决依赖)

dnf remove 软件名  -  卸载软件包

dnf update 软件名  -  更新指定软件包

dnf update  -  更新系统中所有软件包

dnf list installed  -  列出已安装的软件包

dnf search 关键词  -  搜索软件包

dnf info 软件名  -  查看软件包详细信息

dnf groupinstall "组名"  -  安装软件包组

dnf clean all  -  清理缓存

注意:DNF的配置文件位于/etc/dnf/dnf.conf,软件源配置位于/etc/yum.repos.d/目录。

四、 从源代码编译安装程序

4.1 源代码编译安装概述:

源代码编译安装是从软件的原始代码开始,通过编译工具将其转换为可执行程序的二进制过程。这种方式可以获得最新版本,并可以按需定制功能。

4.1.1 适用场景:

需要最新版本的功能(官方二进制包尚未更新)

需要定制编译选项(如优化特定硬件)

需要适配特殊系统环境

需要修改软件源代码

软件未提供对应发行版的二进制包

4.2 编译流程

第一步:./configure

配置编译选项,检查编译环境,生成Makefile文件。可以通过--prefix指定安装路径,--enable/--disable开启/关闭功能。

第二步:make

根据Makefile编译源代码,生成可执行文件。可以加-j参数指定并行编译线程数(如make -j4)。

第三步:make install

将编译好的文件安装到系统指定目录(默认/usr/local/)。需要root权限。

第四步:验证安装

运行程序或查看版本号确认安装成功。

编译安装Nginx

# 下载源码包

wget http://nginx.org/download/nginx-1.26.2.tar.gz

# 解压

tar -zxvf nginx-1.26.2.tar.gz

cd nginx-1.26.2

# 配置

./configure --prefix=/usr/local/nginx

# 编译

make -j4

# 安装

make install

4.3 三种应用程序管理方式的对比与场景选择

对比维度

RPM包管理

DNF包管理

源代码编译

安装速度

快(直接安装二进制)

快(自动下载+安装)

慢(需编译)

依赖管理

手动解决依赖

自动解决依赖

手动解决依赖

定制性

差(固定编译选项)

差(固定编译选项)

强(可自定义配置)

三种对比的简单策略:标准化部署用DNF,快速安装用RPM,定制化开发用源代码编译。

五、总结

Linux应用程序管理有三种方式:RPM、DNF、源代码编译安装

RPM是基础包管理工具,适合查询和本地包操作

DNF是新一代包管理器,自动解决依赖,推荐日常使用

源代码编译安装适合需要定制或获取最新版本的场景

掌握这三种方式,可以根据实际需求选择最优方案

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐