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

表格

对比维度 Linux 命令 Linux 应用程序
安装时机 系统默认安装,属于系统基础组件 后期安装,独立业务软件(Nginx、MySQL、Python)
功能定位 系统基础操作 完整业务功能,体积更大
运行界面 仅字符界面 CLI 支持 CLI、GUI 图形界面
调用格式 固定:命令字 + 选项 + 参数 开发者自定义,支持脚本、图形界面启动
存放位置 /bin/sbin /usr/bin/usr/sbin/usr/local/*

交叉类型:部分应用程序可像命令一样执行,例如nginxdocker。 应用程序是一个整体:包含可执行文件、配置、日志、帮助文档。

3.1.2 应用程序文件构成(遵循 FHS 标准)

表格

文件类型 目录 说明
普通可执行程序 /usr/bin 普通用户可执行,python3、tree
管理 / 服务程序 /usr/sbin 仅 root 执行,防火墙、系统管理工具
配置文件 /etc 程序参数,修改后需要重启程序;子目录如/etc/nginx
日志文件 /var/log 运行日志、错误日志,排错核心
参考文档 /usr/share/doc/ 软件说明文档
man 帮助手册 /usr/share/man/ man 程序名查看帮助

实操查看软件包所有文件:

rpm -ql yum

3.1.3 Linux 软件包四大封装类型

  1. RPM 包(*.rpm):openEuler、RHEL 使用;二进制预编译;工具rpm/dnf
  2. DEB 包(*.deb):Ubuntu/Debian;工具dpkg/apt
  3. 源代码包(tar 压缩包).tar.gz;需要本机编译;可定制功能
  4. 自包含安装包:自带全部依赖,兼容所有 Linux;小众软件使用

openEuler 重点学习:RPM、DNF、源码编译。


3.2 RPM 软件包管理工具

3.2.1 RPM 概述

RPM:RedHat Package Manager,RPM 系 Linux 核心包管理。 数据库路径:/var/lib/rpm/,记录软件安装、文件、依赖信息。

✅RPM 优点

  1. 全生命周期管理,软件状态可追溯
  2. 检测依赖关系,提示缺失依赖
  3. 统一命名规范
  4. 事务操作,出错自动回滚,保证系统一致性
RPM 包命名规范

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

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

  • lynx:软件名
  • 2.8.9:版本号(主。次. 修订)
  • 20:发布次数(打包版本)
  • oe2403:openEuler24.03
  • x86_64:CPU 架构;noarch代表跨架构,不区分 CPU

3.2.2 rpm 命令实操

rpm 底层工具,不会自动解决依赖,报错依赖缺失需要手动逐个安装。

表格

选项 功能
‑q 查询已安装软件包
‑qp 查询未安装的 rpm 文件(要写完整路径)
‑i 安装
‑U 升级;没有安装就直接安装
‑F 升级;仅已安装才更新,不存在则放弃
‑e 卸载(只写软件名,不要写 rpm 文件名)
‑v 显示详细信息,‑h显示进度条;经常组合‑vh
‑‑nodeps 忽略依赖(生产环境禁止使用)
‑‑force 强制覆盖(生产环境禁止使用)
1)查询已安装软件
rpm -q 软件名          # 查询是否安装
rpm -qa                # 列出系统全部rpm包
rpm -qi 软件名         # 查看软件详细信息
rpm -ql 软件名         # 列出软件安装产生所有文件
rpm -qf 文件路径       # 查询某个文件属于哪个rpm包
rpm -qa | grep -i 关键词 # 模糊搜索软件
2)查询未安装 rpm 包文件
rpm -qpi 完整包路径    # 查看未安装包详情
rpm -qpl 完整包路径    # 查看安装后会释放哪些文件
3)安装、升级、卸载
rpm -ivh /media/cdrom/Packages/wget‑1.21.4‑1.oe2403.x86_64.rpm #安装
rpm -Uvh xxx.rpm      #升级
rpm -e wget           #卸载,只用软件名

⚠️当出现依赖报错,rpm 不会自动下载,要手动安装依赖包。生产优先用 DNF。


3.3 DNF 软件包管理器(RPM 系新一代,重点)

3.3.1 DNF 概述

DNF = Dandified YUM,YUM 下一代,openEuler24.03 默认包管理器。底层依旧基于 RPM,自动解决依赖

✅DNF 优势

  1. 自动解析、下载安装全部依赖
  2. 多软件仓库支持
  3. 智能镜像源,自动选就近服务器
  4. 模块化,切换软件多版本
  5. 命令完全兼容 yum,学习成本低
  6. 适配 x86_64、aarch64 鲲鹏架构
DNF 工作机制
  1. 软件仓库 repo:软件来源;配置文件目录:/etc/yum.repos.d/*.repo
  2. 元数据 metadata:记录仓库内软件名、版本、依赖,缓存本地/var/cache/dnf/,到期自动更新。

repo 配置关键参数:

  • [仓库名]:仓库标识
  • name:仓库描述
  • mirrorlist镜像列表 / baseurl静态地址
  • gpgcheck=1开启包签名校验,防篡改
  • enabled=1启用仓库,0 禁用
  • gpgkey签名公钥路径

3.3.2 DNF 常用命令

dnf list 软件名          #查看安装状态和仓库版本
dnf info 软件名          #查看软件详细信息
dnf search 关键词        #搜索软件

dnf install -y 软件名    #安装软件,‑y自动确认
dnf update              #升级系统全部软件
dnf update 软件名        #升级指定软件
dnf remove -y 软件名     #卸载软件

dnf clean all           #清理缓存

DNF 需要网络;离线服务器需要配置本地光盘 repo 源。

对比 rpm vs dnf:rpm 只操作本地包,不解决依赖;dnf 访问仓库自动下载 + 解决依赖。


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

3.4.1 源码编译概述

源码包一般是.tar.gz压缩包,需要本机 gcc 编译器编译成二进制程序。

✅适用场景

  1. 需要最新版本,官方 rpm 包版本滞后
  2. 需要定制开启 / 关闭软件功能模块
  3. 适配特殊硬件架构(鲲鹏 aarch64)
  4. 需要修改源代码增加自定义功能

前置条件:安装编译工具链

dnf install -y gcc make
#开发库包一般以‑devel结尾
dnf install -y pcre‑devel zlib‑devel openssl‑devel

3.4.2 源码编译标准四步流程

通用流程:解包 → ./configure 配置 → make 编译 → make install 安装

  1. 步骤 1:下载源码包,tar 解包
wget http://nginx.org/download/nginx‑1.26.2.tar.gz
tar -zxvf nginx‑1.26.2.tar.gz
cd nginx‑1.26.2
  1. 步骤 2:./configure【最核心:定制配置】 作用:检测系统环境、设置安装路径、启用模块,生成 Makefile 编译脚本。
# --prefix 指定安装目录(关键,方便后续卸载)
./configure --prefix=/usr/local/nginx --with‑http_ssl_module --with‑http_v2_module
  • --prefix:软件全部文件安装到此目录
  • --with‑xxx_module:开启某个功能模块

报错提示缺少 xxx,就 dnf 安装对应的‑devel 开发库,重新 configure。

  1. 步骤 3:make 编译 调用 gcc 把源代码编译成二进制程序;‑j N多核编译加速
make
#多核编译 make -j4
  1. 步骤 4:make install 安装 把编译好的程序、配置复制到--prefix指定目录
make install
  1. 验证启动
/usr/local/nginx/sbin/nginx     #启动程序
ps -ef | grep nginx             #查看进程

⚠️源码编译卸载:没有卸载命令,直接删除 prefix 指定目录

rm -rf /usr/local/nginx

缺点:不会注册到 RPM 数据库,rpm、dnf 无法管理这套软件。


3.5 三种应用管理方式对比与场景选择

表格

方式 优点 缺点 适用场景
RPM 命令 离线本地安装,无需网络 手动处理依赖,操作繁琐 隔离无外网服务器,离线部署
DNF 包管理器 自动解决依赖,操作简单,官方维护版本 需要网络;版本跟随仓库,不一定最新 日常运维、标准化生产环境(首选)
源代码编译 高度定制、可开启关闭模块、拿到最新版本、适配特殊硬件 编译耗时,需要开发库;卸载麻烦;不受 rpm 数据库管理 定制需求、鲲鹏架构、需要最新软件版本

 

实验案例:

查看系统中已安装的软件

查看openEuler光盘中的内容

查看未安装的软件

安装RPM包

卸载RPM包

处理依赖错误

解决方法

仓库配置文件解析

查看nginx的状态

查看nginx的详细信息

模糊查询tree软件

 

下载并解包源代码包

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

解包源代码包

 

Logo

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

更多推荐