一、Linux应用程序基础

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

对比维度

Linux命令

Linux应用程序

执行文件大小

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

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

存储目录

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

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

安装时机

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

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

功能定位

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

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

执行格式

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

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

运行界面

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

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

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

Linux遵循FHS,将应用程序的不同类型文件分散存储在指定目录,实现文件分类管理,便于系统识别和用户维护。

1.普通可执行程序文件:存放于/uer/bin,所有普通用户均可执行

2.服务器/管理程序文件:存放于/usr/sbin,仅root管理员可执行,多为系统服务、管理工具

3.配置文件:核心目录/etc,若配置文件较多,会在/etc下创建专属子目录,配置文件是应用程序的“参数表”,修改后重启程序生效

4.日志文件:存放于/var/log,记录程序运行状态、错误信息、访问记录等,是问题排查的核心依据

5.参考文档/数据文件:存放于/usr/share/doc/,包含程序的安装说明、使用手册、更新日志等

6man手册:存放于/usr/share/man/,是程序的在线帮助文档,通过man命令/程序名可快速查询使用方法

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

封装类型

文件后缀

核心特性

适用Linux发行版

核心优势工具

优势

劣势

RPM包

*.rpm

预编译二进制包,RPM系统标准格式

RHEL、CentOS、openEuler、openSUSE

rpm、yum、DNF

免编译,安装速度快;版本标准化;包管理器自动解决依赖

版本可能滞后;功能定制性差;仅适用于RPM系发行版

DEB包

*.deb

预编译二进制包,Debain系统标准格式

Ubuntu、Debian、Linux Mint

dpkg、apt

免编译,安装速度快;依赖管理严格;Ubuntu生态软件丰富

仅适用于Debian系发行版;跨发行版兼容性差

源代码包(TarBall)

.tar.gz/.tar.bz2

软件原始代码,未编译

所有Linux发行版(通用)

gcc、make、./configure

版本最新;可按需定制功能;跨发行版兼容

需安装编译环境;安装步骤繁琐;需手动解决依赖

自包含安装程序

.bin/.sh/install.sh

预编译+依赖封装,独立安装包

所有Linux发行版(通用)

chmod+x执行安装脚本

免编译,自带依赖;安装向导化;跨发行版兼容

安装目录不规范;难以通过系统包管理器管理;卸载繁琐

二、RPM软件包管理工具

1.RPM概述

RPM使Linux二进制包管理的开山鼻祖,是openEuler、RHEL等RPM系发行版的核心包管理机制,其数据库驱动的事务性管理和依赖解析引擎奠定了Linux二进制包管理的行业标准。

1.1 RPM核心优势

1.全生命周期:通过系统数据库跟踪软件包的安装、升级、卸载,记录每个软件包的文件列表、依赖关系、版本信息,确保系统软件状态可追溯

2.自动依赖解析:能自动计算软件包间的依赖链,提示缺失的依赖包,避免因依赖缺失导致程序无法运行

3.标准化命名:所有RPM包遵循统一的命名规范,通过文件名即可获取软件的完整信息,便于识别和管理

4.事务性操作:安装/升级/卸载操作作为一个“事务”执行,若过程中出现错误,会自动回滚,保证系统状态一致性

1.2 RPM包的标准化命名规范

RPM包的文件名是结构化的信息载体,严格遵循以下格式:

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

1.软件名(lynx):软件项目的核心名称,对应程序功能,是查询/卸载软件是的核心标识

2.版本号(2.8.9):遵循主版本号.次版本号.修订号.三级规范,主版本号大升级表示功能重大变更,次版本号表示功能新增,修订号表示Bug修复

3.发布次数(20):该版本在对应版本中的官方构建次数,数字越大表示打包维护越新

4.操作系统版本(oe2403):os代表openEuler,2403表示适用于openEuler 24.03及兼容版本

5.硬件架构(x86_64):表示软件适配的CPU架构,openEuler 24.03重点支持x86_64、arrch64(鲲鹏)等架构,noarch为跨架构(纯脚本/配置文件)

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

2.1 RPM命令的基本格式

基本格式:

rpm [核心选项] [子选项] [参数]

核心功能与对应核心选项:

查询/验证:-q(查询)、-v(验证)

安装/升级:-i(安装)、-U(升级,未安装则直接安装)、-F(更新,未安装则放弃)

卸载:-e(卸载)

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

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

命令组合

功能说明

实战案例

输出效果

rpm -q 软件名

查询指定软件是否已安装

rpm -q wegt

已安装:输出包名;未安装:提示“未安装软件包wget”

rpm -qa

列出系统中所有已安装的RPM软件包

rpm -qa

逐行输出所有包名,数量可达数千个

rpm -qa | grep -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/ngix

输出该文件所属的软件包名

实验案例:

查看系统中已安装的软件

查看openEuler光盘中的内容

查看未安装的软件

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

核心选项说明

核心选项

功能

常用组合选项

适用场景

-i

安装新的RPM包

-ivh

全新安装,查看安装进度和详细信息

-U

升级指定软件包,未安装则直接安装

-Uvh

软件版本更新,兼容全新安装

-F

更新指定软件包,未安装则放弃

-Fvh

仅对已安装软件进行版本更新

-e

卸载指定软件包

-e

移除已安装的软件,仅需软件名

子选项 -h

以“#”显示安装/升级进度

搭配-i/-U/-F

直观查看安装过程

子选项 -v

显示安装/升级的详细消息

搭配-i/-U/-F

排查安装错误

--force

强制安装

-ivh --force

替换已安装的同版本包/安装旧版本包

--noodeps

忽略依赖关系

-ivh --nodeps / -e --nodeps

强制安装/卸载,忽略依赖检查

安装RPM包

0

卸载RPM包

处理以来错误

解决方法

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

1 .DNF概述与工作机制

1.1 DNF的核心优势

自动化依赖解决:采用新一代依赖解析引擎,openEuler 24.03针对鲲鹏和x86架构做了双架构以来优化,能快速构建复杂的依赖图,自动下载并安装所有缺失的依赖包,无需手动干预

多仓库支持:可配置多个软件仓库,自动从仓库中获取最新的软件包

智能镜像源:openEuler24.03内置了专属的镜像源调度机制,可根据用户的地理位置和网络环境自动选择最优的openEuler镜像服务器,大幅提升下载速度

模块化管理:支持软件模块,可快速切换软件的不同版本,openEuler 24.03强化了模块的版本隔离能力,避免版本冲突

命令简洁:保持与YUM完全兼容的命令格式,学习成本低,YUM用户可无缝切换

高效稳定:相比YUM,占用内存更少、执行速度更快,支持并行下载,openEuler 24.03优化了DNF的内存管理,适合大规模软件管理和云原生环境

多架构兼容:完美支持x86_64、aarch64等openEuler 24.03主流架构,自动匹配对应架构的软件包

1.2 DNF的核心工作机制

DNF的工作基于软件仓库和元数据,核心流程为“读取仓库配置——下载元数据——解析依赖——下载并安装软件包”。

(1)软件仓库

软件仓库是DNF的软件来源,分为官方仓库和第三方仓库,仓库的配置文件存放于/etc/yum.repos.d/,文件后缀为.repo,该目录是DNF的核心配置目录,所有.repo文件都会被DNF自动识别

(2)元数据

每个软件仓库都会提供元数据,包含仓库中所有软件包的名称、版本、依赖关系、文件列表、下载地址等信息。DNF会定期下载并缓存策略,避免每次操作都实时扫描仓库,大幅提升查询和安装速度,元数据有默认有过期时间,过期后会自动更新

(3)仓库配置文件解析

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

DNF命令的核心格式为:

DNF [选项/子命令] [软件包名] [参数]

2.1 软件包查询

命令

功能说明

实战案例

dnf list all

列出所有已安装和仓库中可用的软件包

dnf list all

dnf list 软件名

查看指定软件的安装状态和可用版本

dnf list nginx

dnf list available

仅列出仓库中可安装的未安装软件包

dnf list available

dnf list updates

列出系统中可升级的软件包

dnf list updates

dnf into 软件名

查看指定软件包的详细信息(版本、大小、用途、依赖等)

dnf into tree

dnf search 关键词

搜索仓库中名称/描述含指定关键词的软件包

dnf search web server

查看nginx的状态

查看nginx的详细信息

模糊查询tree软件

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

核心命令:dnf install [选项] 软件名

选项-y:自动确认所有操作,无需手动输入y(适用于脚本/批量操作)

可同时安装多个软件,用空格分隔分隔软件名

2.3 软件包升级(核心:dnf update)

核心命令:

dnf update [选项] 软件名:升级指定软件名

dnf update [选项]:升级系统中所有可升级的软件包(系统更新)

选项-y:自动确认升级

0

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

核心命令:dnf remove [选项] 软件名

选项-y:自动确认卸载

可同时卸载多个软件,用空格分隔

2.5 DNF其他常用命令

命令

功能说明

dnf clean all

清理DNF的缓存(元数据+下载的软件包),解决缓存损坏问题,openEuler优化了缓存清理的速度

dnf makecache

手动生成元数据缓存,提升后续操作速度,支持多架构元数据缓存

dnf repolist

列出当前启用的所有软件仓库

dnf repolist all

列出所有仓库(启用+禁用)

dnf module list 软件名

查看软件的模块版本,openEuler强化了模块的版本管理

dnf check

检查系统中存在依赖问题,openEuler新增了架构依赖校验

四、源代码编译安装程序

1.源代码编译安装概述

源代码是开源软件的原始发布形式,以.tar.gz/.tar.bz2为后缀的压缩包,包含软件的所有原始代码,需要通过编译转换为系统可识别的二进制可执行文件后才能运行。

与RPM/DNF的二进制相比,源代码编译安装的核心价值在于定制化,是搭建企业级服务的常用方式,适用于:

1.需要软件的最新版本:开源软件通常会先发布源代码包,二进制包(RPM/DEB)会滞后数周/数月,编译安装可快速获取最新功能和补丁

2.需要定制软件功能:二进制包不仅包含软件的基础功能,编译安装是可通过配置选项开启/关闭特定功能

3.需要适配特殊系统环境:openeuler 24.03广泛应用于鲲鹏服务器、云原生环境等特殊场景,部分二进制包无法适配,编译安装可根据硬件架构优化编译参数,提升程序性能

4.需要修改软件源代码:企业可根据自身需求修改开源软件的源代码,添加自定义功能,修改后需要重新编译安装才能生效

5.适配openeuler专属架构:针对openeuler 24.03支持的鲲鹏等架构,部分软件无官方二进制包,编译安装是最优选择

编译安装的前提:安装开发环境

源代码编译需要编译器和构建工具,核心依赖为gcc(C/C++编译器)和make(构建工具),此外,软件还需要对应的开发库,开发库的后缀通常为-devel,表示开头用的头文件和库文件。

核心命令:

[root@localhost ~]# dnf install -y gcc make

[root@localhost ~]# dnf install -y pcre-devel zlib-devel openssl-devel

[root@localhost ~]# dnf install -y gcc-aarch64-linux-gnu make-aarch64-linux-gnu

2.源代码编译安装的标准流程

所有开源软件的源代码编译都遵循统一标准,核心为解包——配置——编译——安装,简称.configure——make——make install

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

下载并解包源代码包

优先从软件官方网站下载资源代码包,保证安全性和完整性,Nginx官方下载网址:http://nginx.org/download/

解包源代码包

步骤2:配置编译参数

进入源代码目录,执行.configure配置,指定核心参数

配置成功标志

步骤3:编译源代码

配置成功后,执行make命令进行编译,make会根据生成的Makefile脚本,调用gcc编译器将源代码转换为二进制可执行文件。

核心命令:

[root@localhost nginx-1.26.2]# make

[root@localhost nginx-1.26.2]# make -j 4

步骤4:安装编译后的程序

编译成功后,执行make install命令,将编译好的二进制文件、配置文件、帮助文档等复制到.configure的指定目录(/user/local/nginx),完成最终安装。

核心命令:

[root@localhost nginx-1.26.2]# make install

步骤5:验证安装并启动服务

安装完成后,所有Nginx的文件都在/user/local/nginx目录中

sbin/:可执行文件目录,nginx为核心启动程序

conf/:配置文件目录,nginx.conf为核心配置文件

logs/:日志文件目录,error.log和access.log为核心日志

方法如下:

卸载方法:

Logo

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

更多推荐