一、Linux应用程序基础

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

在Linux系统中,命令与应用程序虽然都用于完成特定任务,但在设计理念和使用方式上存在明显差异。命令通常小巧轻量,随系统默认安装,主要用于辅助系统管理;而应用程序体积较大,包含完整功能模块,需要根据实际需求另行安装。两者的核心区别如下表所示:

对比维度 Linux命令 应用程序
文件大小 小巧轻量 较大,含完整功能模块
存储目录 /bin、/sbin(核心命令);/usr/bin、/usr/sbin(普通程序) 分散存储于多个目录
安装时机 随系统默认安装 根据需求另行安装
功能定位 辅助系统管理(ls、cd、rm) 独立业务功能(Nginx、MySQL)
执行格式 固定“命令+选项+参数” 无固定格式,由开发者定义
运行界面 仅CLI 支持CLI和GUI

1.2 应用程序的系统文件构成(FHS标准)

openEuler 24.03严格遵循FHS(文件系统层次结构标准),应用程序的文件按照功能类型分散存储于系统各个目录中。各目录的职责划分如下:

  • 可执行文件:/usr/bin(普通用户可执行)、/usr/sbin(root管理员可执行)
  • 配置文件:/etc,配置文件较多时创建子目录(如/etc/nginx)
  • 日志文件:/var/log,记录运行状态和错误信息
  • 参考文档:/usr/share/doc/
  • man手册页:/usr/share/man/

实战案例:查询yum包的文件构成

  • rpm -ql yum

1.3 软件包四大封装类型

Linux生态中软件包的封装格式多种多样,不同发行版和不同场景下适用的封装类型各不相同。常见的四大封装类型对比如下:

封装类型 后缀 适用系统 管理工具 优缺点
RPM包 .rpm RHEL、CentOS、openEuler rpm、yum、DNF 安装快,免编译;版本可能滞后
DEB包 .deb Ubuntu、Debian dpkg、apt 安装快,依赖严格;仅限Debian系
源代码包 .tar.gz/.tar.bz2 所有Linux gcc、make、./configure 最新版,可定制;编译繁琐
自包含安装包 .bin/.sh 所有Linux chmod +x 免编译,带依赖;卸载繁琐

二、RPM软件包管理

2.1 RPM概述

RPM(Red Hat Package Manager)是RPM系发行版的核心包管理机制,openEuler 24.03对其深度兼容。RPM不仅负责软件的安装与卸载,还通过数据库对软件包进行全生命周期的统一管理。

核心优势

  • 全生命周期管理(/var/lib/rpm/数据库记录)
  • 自动依赖解析
  • 标准化命名
  • 事务性操作(失败自动回滚)

命名规范软件名-版本号-发布次数.oe2403.硬件架构.rpm

bind9.18-9.18.29-1.oe2403.x86_64.rpm 为例:

  • 软件名:bind9.18
  • 版本号:9.18.29
  • 发布次数:1
  • 操作系统:oe2403(openEuler 24.03)
  • 架构:x86_64(noarch为跨架构)

2.2 RPM命令实操

基本格式rpm [核心选项] [子选项] [参数]

查询功能(重点掌握)

查询已安装软件(参数为软件名):

  • rpm -q wget # 查询指定软件是否安装
  • rpm -qa # 列出所有已安装软件
  • rpm -qa | grep -i python3 # 模糊查询(-i忽略大小写)
  • rpm -qi firewalld # 查看软件详细信息
  • rpm -ql nginx # 列出软件安装的所有文件
  • rpm -qf /usr/bin/nginx # 反向查询文件所属软件包

查询未安装包文件(参数为包文件路径):

  • rpm -qpi /media/cdrom/Packages/e/esc-1.1.2-16.oe2403.x86_64.rpm # 查详细信息
  • rpm -qpl /media/cdrom/Packages/e/esc-1.1.2-16.oe2403.x86_64.rpm # 查包内文件

注意:rpm仅能查询通过RPM方式安装的软件,源码编译安装的无法查询。

安装/升级/卸载

核心选项 功能 常用组合 适用场景
-i 安装 -ivh 全新安装,显示进度
-U 升级 -Uvh 版本更新,未安装则安装
-F 更新 -Fvh 仅更新已安装软件
-e 卸载 -e 移除软件,仅需软件名

警告--force--nodeps仅限学习调试场景,生产环境严禁使用!

三、DNF软件包管理器(重点)

3.1 DNF概述

DNF(Dandified YUM)是openEuler 24.03的默认包管理器,完全兼容YUM命令。相比传统RPM手动管理依赖,DNF能够自动解析并安装依赖包,大幅简化了软件安装流程。

核心优势

  • 自动化依赖解决
  • 多仓库支持
  • 智能镜像源调度
  • 模块化管理(可切换软件版本)
  • 内存占用更低、速度更快
  • 支持x86_64和aarch64(鲲鹏)双架构

工作机制

  1. 读取仓库配置(/etc/yum.repos.d/*.repo)
  2. 下载元数据到本地缓存(/var/cache/dnf/)
  3. 解析依赖关系
  4. 下载并安装软件包

仓库配置文件示例

[extras]
name=openEuler $releasever - Extras
mirrorlist=https://mirrors.openeuler.org/mirrorlist?arch=$basearch&repo=extras-$releasever
#baseurl=http://dl.openeuler.org/$releasever/extras/$basearch/os/
gpgcheck=1
enabled=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-openEuler-24.03

核心变量:$releasever(系统版本)、$basearch(CPU架构)、$arch(更精准的架构信息)

3.2 DNF命令实操

基本格式dnf [选项/子命令] [软件包名] [参数]

查询操作

  • dnf list all # 列出所有可用和已安装包
  • dnf list nginx # 查看指定软件状态
  • dnf list available # 仅列出可安装的包
  • dnf list updates # 列出可升级的包
  • dnf info nginx # 查看软件详细信息
  • dnf search web server # 搜索关键词相关软件

安装操作

  • # 安装tree工具,自动确认
  • dnf install -y tree
  • # 同时安装多个软件
  • dnf install -y httpd mariadb-server # -y选项:自动确认,适用于脚本/批量操作

安装输出解析

  • Transaction Summary
  • Install 1 Package          # 待安装数量
  • Total download size: 55 k  # 下载大小
  • Installed size: 113 k      # 安装后占用空间
  • Running transaction check  # 事务检查
  • Complete!                  # 安装完成

升级操作

  • # 升级指定软件
  • dnf update -y NetworkManager
  • # 升级所有可升级软件(系统更新)
  • dnf update -y
  • # 自动识别并升级依赖的子包

卸载操作

  • # 卸载tree工具
  • dnf remove -y tree
  • # 卸载后自动释放磁盘空间
  • Freed space: 113 k

其他常用命令

  • dnf clean all              # 清理缓存
  • dnf makecache              # 手动生成元数据缓存
  • dnf repolist               # 列出启用仓库
  • dnf repolist all           # 列出所有仓库(含禁用)
  • dnf module list 软件名      # 查看模块版本
  • dnf check                  # 检查依赖完整性

四、源代码编译安装(定制化安装)

4.1 概述与适用场景

源代码编译安装是指从官方或第三方获取源码包,在本地完成配置、编译和安装的过程。相比RPM和DNF的二进制包安装,这种方式虽然步骤更多、耗时更长,但在功能定制和性能优化方面具有不可替代的优势。

适用场景

  • 需要软件最新版本(二进制包有滞后)
  • 需要定制软件功能(开启/关闭模块)
  • 适配特殊硬件架构(鲲鹏aarch64)
  • 需要修改源代码添加自定义功能

前提准备(安装开发环境)

  • # 基础编译工具
  • dnf install -y gcc make
  • # 常用开发库(Nginx需要)
  • dnf install -y pcre-devel zlib-devel openssl-devel
  • # 鲲鹏架构适配工具
  • dnf install -y gcc-aarch64-linux-gnu make-aarch64-linux-gnu

4.2 标准流程四步(以Nginx 1.26.2为例)

步骤1:下载并解包

  • # 下载源代码包
  • wget http://nginx.org/download/nginx-1.26.2.tar.gz
  • # 解包(-z解.gz包、-x解包、-v详细信息、-f指定文件)
  • tar -zxvf nginx-1.26.2.tar.gz
  • # 进入源代码目录
  • cd nginx-1.26.2

步骤2:配置编译参数(./configure)

  • # 核心配置:指定安装目录、开启SSL和HTTP/2模块
  • ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module
  • # 鲲鹏架构额外配置
  • ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --build=aarch64-unknown-linux-gnu

参数解析

  • --prefix=/usr/local/nginx:指定安装目录,便于管理和卸载
  • --with-http_ssl_module:启用SSL模块(需openssl-devel)
  • --with-http_v2_module:启用HTTP/2模块(需pcre-devel和zlib-devel)

配置成功标志

  • Configuration summary
  • + nginx path prefix: "/usr/local/nginx"
  • + nginx binary file: "/usr/local/nginx/sbin/nginx"
  • + build platform: x86_64-unknown-linux-gnu

配置失败解决

  • # 错误提示:error: SSL modules require the OpenSSL library
  • # 解决:安装依赖后重新配置
  • dnf install -y openssl-devel
  • ./configure --prefix=/usr/local/nginx --with-http_ssl_module

步骤3:编译(make)

  • # 基础编译
  • make
  • # 多核并行编译(推荐,指定4核心)
  • make -j4

编译成功标志:无error,返回命令行提示符。

步骤4:安装(make install)

  • make install

4.3 验证安装并启动服务

  • # 启动Nginx
  • cd /usr/local/nginx/sbin
  • ./nginx
  • # 验证进程
  • ps -ef | grep nginx
  • # 输出master process和worker process表示启动成功
  • # 浏览器访问 http://服务器IP 看到Nginx欢迎页

核心目录结构

  • sbin/:可执行文件
  • conf/:配置文件(nginx.conf)
  • logs/:日志文件(error.log、access.log)

4.4 源代码安装的优缺点

优势

  • 定制化功能,优化性能
  • 最新版本,快速获取安全补丁
  • 独立安装目录,便于管理
  • 跨架构兼容(x86_64、aarch64)
  • 深度优化系统内核和硬件适配

卸载方法(无官方卸载命令)

  • rm -rf /usr/local/nginx

五、三种管理方式对比

管理方式 核心工具 安装速度 依赖处理 功能定制 版本 管理难度 适用场景
RPM原生命令 rpm 快(免编译) 手动处理 稳定 中等 无网络离线环境、单软件快速安装
DNF dnf 快(免编译) 自动解决 稳定 日常运维、标准化部署、有网络环境
源代码编译 ./configure 慢(需编译) 手动处理 最新 定制化需求、鲲鹏架构适配
Logo

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

更多推荐