• 一、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软件包管理工具
  1. RPM核心优势:

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

 (2.)自动依赖解析:能自动计算软件包间的依赖链,提示缺失的依赖包,避免因依赖缺失导致程序无法运行,openEuler 24.03对鲲鹏架构的依赖解析做了专项优化;

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

  (4.)事务性操作:安装/升级/卸载操作作为一个“事务”执行,若过程中出现错误(如磁盘空间不足、依赖缺失),会自动回滚,保证系统状态一致性。

  1. 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 + 子选项

示例(查详细信息,确认软件功能):

示例(查包内文件,了解安装后会生成的文件路径):

  1. 安装、升级、卸载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,直接删除安装目录:

Logo

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

更多推荐