管理应用程序
- 一、Linux应用程序基础
1.Linux命令与应用程序的区别:在Linux系统里,命令与应用程序都可以执行功能单元,但二者在设计初衷、存储位置、运行方式上存在很大差异。
|
对比 |
Linux命令 |
Linux应用程序 |
|
执行文件 |
体积小巧,多为轻量级可执行文件 |
体积更大,包含更完整1的功能模块 |
|
存储目录 |
核心命令:/bin、/sbin;内部命令集成于Bash |
普通程序:/usr/bin、/usr/local/bin;服务程序:/usr/sbin、/usr/local/sbin |
|
安装时机 |
随操作系统默认安装,为系统基础组件 |
操作系统安装后,根据需求另行安装 |
|
功能定位 |
辅助系统管理,实现基础操作(ls、cd、rm) |
提供独立业务功能,等同于“软件” |
|
执行格式 |
固定“命令字+选项+参数”格式 |
没有固定的格式,由开发者定义 |
|
运行界面 |
仅支持字符操作界面 |
支持CLI、图形界面等 |
关键说明:部分应用程序会提供符合命令格式的可执行文件(如nginx、docker),这类文件也被称为“程序命令”,是二者的交叉类型,也是日常系统管理中最常用的形式。
2.Linux应用程序的系统文件构成:Linux遵循FHS(文件系统层次结构标准),openEuler 24.03也严格遵循该标准,将应用程序的不同类型文件分散存储在指定目录,实现文件分类管理,便于系统识别和用户维护。所有应用程序的文件存储均遵循统一规范:
(1.)普通可执行程序文件:存放于/usr/bin,所有普通用户均可执行,如python3、nginx、tree等日常使用的程序。
(2.)服务器/管理程序文件:存放于/usr/sbin,仅root管理员可执行,多为系统服务、管理工具,firewalld、 networkctl。
(3.)配置文件:核心目录/etc,若配置文件较多,会在/etc 下创建专属子目录(如/etc/nginx、/etc/my.cnf.d),配置文件是应用程序的“参数表”,修改后需重启程序生效。
(4.)日志文件:存放于/var/1og,记录程序运行状态、错误信息、访问记录等,如/var/log/nginx/access.1og、/var/log/messages,是问题排查的核心依据。
(5.)参考文档/数据文件:存放于/usr/share/doc/,包含程序的安装说明、使用手册、更新日志等,如/usr/share/doc/nginx/。
(6.)man手册页:存放于/usr/share/man/,是程序的在线帮助文档,通过man命令/程序名可快速查询使用方法,如mannginx、manrpm。
查看系统中已安装的yum软件包的文件构成,执行此命令:![]()
3.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 系发行版;跨发行版兼容性差 |
|
源代码包 (TarBall) |
.tar.gz/.tar.bz2 |
软件原始代码,未编译 |
所有 Linux 发行版(通用) |
gcc、make、./configure |
版本最新;可按需定制功能;跨发行版兼容 |
需要安装编译环境;安装步骤繁琐;需要手动解决依赖 |
|
自包含安装程序 |
.bin/.sh、/install.sh |
预编译 + 依赖封装,独立安装包 |
所有 Linux 发行版(通用) |
chmod +x执行安装脚本 |
免编译,自带依赖;安装向导化;跨发行版兼容 |
安装目录不规范;难以通过系统包管理器管理;卸载繁琐 |
补充:开源软件通常采用混合发布策略,如Nginx、MySQL同时提供RPM/DEB二进制包和源代码包,满足不同的用户需求。
- 二、RPM软件包管理工具
- RPM核心优势:
(1.)全生命周期管理:通过系统级数据库(/var/1ib/rpm/)跟踪软件包的安装、升级、卸载,记录每个软件包的文件列表、依赖关系、版本信息,确保系统软件状态可追溯;
(2.)自动依赖解析:能自动计算软件包间的依赖链,提示缺失的依赖包,避免因依赖缺失导致程序无法运行,openEuler 24.03对鲲鹏架构的依赖解析做了专项优化;
(3.)标准化命名:所有RPM包遵循统一的命名规范,通过文件名即可获取软件的完整信息,便于识别和管理;
(4.)事务性操作:安装/升级/卸载操作作为一个“事务”执行,若过程中出现错误(如磁盘空间不足、依赖缺失),会自动回滚,保证系统状态一致性。
- RPM包的标准化命名:
(1.)rpm命令的基本格式:rpm 【核心选项】 【子选项】 【参数】
核心功能与对应核心选项:查询/验证:-q(查询)、-V(验证);
安装/升级:-i(安装)、-U(升级,未安装则直接安装)、-F(更新,未安装则放弃);
卸载:-e(卸载);
执行man rpm可查看完整的选项说明。
(2.)查询RPM软件包信息:查询是rpm命令最常用的功能,分为查询己安装的软件包和查询未安装的RPM包文件两类,核心选项分别为-q(已安装)和-qp(未安装),搭配子选项实现精准查询,所有查询操作均无需依赖网络。
|
命令组合 |
功能说明 |
实战案例 |
输出效果 |
|
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 |
逐行输出该软件全部文件路径 |
|
rpm -qf 文件/目录路径 |
查看指定文件 / 目录由哪个软件包安装(反向查询) |
rpm -qf /usr/bin/nginx |
输出该文件所属的软件包名 |
核心注意:rpm命令仅能查询通过RPM方式安装的软件,对于源码编译、手动复制得到软件,无法获取任何信息。示例(精准查询两个软件的安装状态):
示例(模糊查询python3相关软件):
查询未安装的RPM包文件,核心:rpm -qp + 子选项
示例(查详细信息,确认软件功能):![]()
示例(查包内文件,了解安装后会生成的文件路径):![]()
- 安装、升级、卸载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 |
强制安装 / 卸载,忽略依赖检查 |
注意:--force和—ndeps为强制操作选项,仅适用于学习/调试场景!生产环境中严禁使用。
示例:安装RPM包(安装 openEuler 24.03光盘中的wget包)![]()
示例:验证安装成功:查看可执行文件路径![]()
示例:卸载RPM包(卸载命令:rpm -e 软件名)![]()
示例:验证卸载成功:![]()
三、DNF软件包管理器
1.DNF核心优势:
(1.)自动化依赖解决:采用新一代依赖解析引擎,openEuler 24.03针对鲲鹏和x86架构做了双架构依赖优化,能快速构建复杂的依赖图,自动下载并安装所有缺失的依赖包,无需手动干预:;
(2.)多仓库支持:可配置多个软件仓库(官方仓库、第三方仓库如EPEL、openEuler专属仓库),自动从仓库中获取最新的软件包;境自动选择最优的openEuler镜像服务器,大幅提升软件下载速度;
(3.)智能镜像源:openEuler24.03内置了专属的镜像源调度机制,可根据用户的地理位置和网络环境自动选择最优的镜像服务器。
(4.)模块化管理:支持软件模块(Module),可快速切换软件的不同版本(如Python 3.9/3.11);
(5.)命令简洁:保持与YUM完全兼容的命令格式,学习成本低,YUM用户可无缝切换;
(6.)高效稳定:相比YUM,占用内存更少、执行速度更快,支持并行下载;
(7.)多架构兼容:完美支持x86_64、aarch64等openEuler 24.03主流架构,自动匹配对应架构的软件包。
2.DNF命令流程:
DNF的操作全部依赖网络,若服务器无网络,可配置本地光盘仓库。
dnf 【选项/子命令】 【软件包名】 【参数】
3.软件包查询:
|
命令 |
功能说明 |
实战案例 |
|
dnf list all |
列出所有已安装和仓库中可用的软件包 |
dnf list all |
|
dnf list 软件名 |
查看指定软件的安装状态和可用版本 |
dnf list nginx |
|
dnf list available |
仅列出仓库中可安装的未安装软件包 |
dnf list available |
|
dnf list updates |
列出系统中可升级的软件包 |
dnf list updates |
|
dnf info 软件名 |
查看指定软件包的详细信息(版本、大小、用途、依赖等) |
dnf info tree |
|
dnf search 关键词 |
搜索仓库中名称 / 描述含指定关键词的软件包 |
dnf search web server |
示例:查看nginx的状态:![]()
示例:查看nginx详细信息:![]()
4.软件包安装:
DNF 安装软件的核心优势是自动解决依赖,只需指定软件名,DNF 会自动从openEuler仓库下载软件包及所有依赖包,无需手动处理,是最常用的操作之一。
核心命令:dnf install 【选项】 软件名:
选项-y:自动确认所有操作,无需手动输入y(适用于脚本/批量操作);
可同时安装多个软件,用空格分隔软件名。
示例:安装tree工具,自动确认安装(-y)![]()
5.软件包升级:
DNF 可快速升级单个软件、多个软件或整个系统的所有软件,自动解决升级过程中的依赖问题。
核心命令:1. dnf update [选项] 软件名:升级指定软件包;
2.dnf update [选项]: 升级系统中所有可升级的软件包(系统更新);
3.选项 -y:自动确认升级。
示例:升级NetworkManager软件包,自动确认![]()
6.软件包卸载:
DNF卸载软件时,会自动检查并提示依赖的软件包,避免误卸载导致系统功能异常。
核心命令:核心命令:dnf remove [选项] 软件名
选项-y:自动确认卸载;
可同时卸载多个软件,用空格分隔。
示例:卸载已安装的tree工具,自动确认![]()
7.其他常用命令:
|
命令 |
功能说明 |
|
dnf clean all |
清理 DNF 缓存(元数据 + 下载的软件包),解决缓存损坏问题 |
|
dnf makecache |
手动生成元数据缓存,提升后续操作速度 |
|
dnf repolist |
列出当前启用的所有软件仓库 |
|
dnf repolist all |
列出全部仓库(启用 + 禁用) |
|
dnf module list 软件名 |
查看软件的模块版本(Python、Node.js 等) |
|
dnf check |
检查系统中存在的依赖问题 |
四、源代码编译安装:
1.安装概述:源代码包(TarBal1)是开源软件的原始发布形式,以.tar.gz/.tar.bz2为后缀的压缩包,包含软件的所有原始代码,需通过编译转换为系统可识别的二进制可执行文件后才能运行。适用于:
(1.)需要软件的最新版本:开源软件通常先发布源代码包,二进制包(RPM/DEB)会滞后数周/数月,功能(如Nginx开启SSL、HTTP/2模块),满足企业个性化需求;
(2.)需要定制软件功能:二进制包仅包含软件的基础功能,编译安装时可通过配置选项开启 / 关闭特定功能(如 Nginx 开启 SSL、HTTP/2 模块),满足企业个性化需求;
(3.)需要适配特殊系统环境:openEuler 24.03 广泛应用于鲲鹏服务器、云原生环境等特殊场景,部分二进制包无法适配,编译安装可根据硬件架构优化编译参数,提升程序性能;
(4.)需要修改软件源代码:企业可根据自身需求修改开源软件的源代码,添加自定义功能,修改后需重新编译安装才能生效;
(5.)适配 openEuler 专属架构:针对 openEuler 24.03 支持的鲲鹏(aarch64)等架构,部分软件无官方二进制包,编译安装是最优选择。
2.安装前提:
源代码编译需要编译器和构建工具,核心依赖为gcc(C/C++编译器)和make(构建工具),此外,不同软件还需要对应的开发库(如 Nginx需要 pcre-devel、zlib-devel),开发库的后缀通常为-devel,表示开发用的头文件和库文件。openEuler24.03的官方仓库提供了完整的开发工具链,同时对鲲鹏架构的编译工具做了专项优化,核心命令:在openEuler24.03中通过DNF安装基础编译环境;示例:基础编译工具:![]()
3.源代码编译安装流程:
(1.)下载源代码包:优先从软件官方网站下载源代码包,保证包的完整性和安全性,Nginx官方下载地址:http://nginx.org/download/。
示例:下载Nginx1.26.2源代码包:![]()
解压源代码包:源代码包为tan压缩包,使用tar命令解包,核心选项:-z(解.gz包)、-x(解包)、-v(显示详细信息)、-f(指定包文件)。
示例:解包Nginx源代码包:![]()
(2.)配置编译参数:
解包后进入源代码目录,执行./configure脚本进行编译配置,这是定制化的核心步骤,通过配置选项指定软件的安装目录、启用/禁用功能模块、依赖库路径等。openEuler 24.03的./configure脚本支持自动识别系统架构,若配置失败,会直接提示缺失的依赖,需安装后重新配置。
示例:进入源代码目录![]()
示例:执行./configure配置,指定核心参数![]()
(3.)编译源代码:
配置成功后,执行make命令进行编译,make会根据生成的Makefile脚本,调用gcc 编译器将源代码转换为二进制可执行文件。
核心命令:make
示例:![]()
(4.)安装编译后的程序:
编译成功后,执行makeinstall命令,将编译好的二进制文件、配置文件、帮助文档等复制到./configure指定的安装目录(/usr/1ocal/nginx),完成最终的安装。openEuler 24.03会自动为安装的程序添加执行权限,无需手动配置。
核心命令:直接执行make install:![]()
(5.) 验证安装并启动服务:
安装完成后,所有 Nginx的文件都在/usr/1ocal/nginx 目录中,核心目录遵循 openEuler 的文件规范:
sbin/:可执行文件目录,nginx为核心启动程序;
conf/:配置文件目录,nginx.conf为核心配置文件;
logs/:日志文件目录,error.log和access.1og为核心日志。
示例:启动Nginx服务(进入 Nginx的sbin目录,执行nginx启动程序):![]()
![]()
验证Nginx是否启动:![]()
五、源代码编译安装的核心优势与卸载:
1.核心优势:
定制化:可根据需求开启 / 关闭功能模块,优化软件性能,适配 openEuler 24.03 的系统特性;
最新版本:快速获取软件的最新功能和安全补丁,弥补 openEuler 官方仓库包版本滞后的问题;
独立目录:所有文件都在指定的安装目录,便于管理和迁移,符合 openEuler 的文件管理规范;
跨架构兼容:可在 openEuler 24.03 的 x86_64、aarch64 等架构上编译,适配不同硬件环境;
深度优化:可针对 openEuler 的系统内核和硬件架构做编译优化,提升程序运行效率。
2.卸载方法:源代码编译安装的软件无官方卸载命令,由于所有文件都在 --prefix 指定的安装目录,直接删除该目录即可完成卸载,无残留,这是 --prefix 参数的核心价值。示例:卸载Nginx,直接删除安装目录:![]()
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)