linux应用程序基础
3.1.1 Linux 命令与应用程序的核心区别
表格
| 对比维度 | Linux 命令 | Linux 应用程序 |
|---|---|---|
| 安装时机 | 系统默认安装,属于系统基础组件 | 后期安装,独立业务软件(Nginx、MySQL、Python) |
| 功能定位 | 系统基础操作 | 完整业务功能,体积更大 |
| 运行界面 | 仅字符界面 CLI | 支持 CLI、GUI 图形界面 |
| 调用格式 | 固定:命令字 + 选项 + 参数 | 开发者自定义,支持脚本、图形界面启动 |
| 存放位置 | /bin、/sbin |
/usr/bin、/usr/sbin、/usr/local/* |
交叉类型:部分应用程序可像命令一样执行,例如
nginx、docker。 应用程序是一个整体:包含可执行文件、配置、日志、帮助文档。
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 软件包四大封装类型
- RPM 包(*.rpm):openEuler、RHEL 使用;二进制预编译;工具
rpm/dnf - DEB 包(*.deb):Ubuntu/Debian;工具
dpkg/apt - 源代码包(tar 压缩包):
.tar.gz;需要本机编译;可定制功能 - 自包含安装包:自带全部依赖,兼容所有 Linux;小众软件使用
openEuler 重点学习:RPM、DNF、源码编译。
3.2 RPM 软件包管理工具
3.2.1 RPM 概述
RPM:RedHat Package Manager,RPM 系 Linux 核心包管理。 数据库路径:/var/lib/rpm/,记录软件安装、文件、依赖信息。
✅RPM 优点
- 全生命周期管理,软件状态可追溯
- 检测依赖关系,提示缺失依赖
- 统一命名规范
- 事务操作,出错自动回滚,保证系统一致性
RPM 包命名规范
格式:软件名-版本号-发布次数.系统版本.硬件架构.rpm
示例:lynx‑2.8.9‑20.oe2403.x86_64.rpm
lynx:软件名2.8.9:版本号(主。次. 修订)20:发布次数(打包版本)oe2403:openEuler24.03x86_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 优势
- 自动解析、下载安装全部依赖
- 多软件仓库支持
- 智能镜像源,自动选就近服务器
- 模块化,切换软件多版本
- 命令完全兼容 yum,学习成本低
- 适配 x86_64、aarch64 鲲鹏架构
DNF 工作机制
- 软件仓库 repo:软件来源;配置文件目录:
/etc/yum.repos.d/*.repo - 元数据 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 编译器编译成二进制程序。
✅适用场景
- 需要最新版本,官方 rpm 包版本滞后
- 需要定制开启 / 关闭软件功能模块
- 适配特殊硬件架构(鲲鹏 aarch64)
- 需要修改源代码增加自定义功能
前置条件:安装编译工具链
dnf install -y gcc make
#开发库包一般以‑devel结尾
dnf install -y pcre‑devel zlib‑devel openssl‑devel
3.4.2 源码编译标准四步流程
通用流程:解包 → ./configure 配置 → make 编译 → make install 安装
- 步骤 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
- 步骤 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。
- 步骤 3:make 编译 调用 gcc 把源代码编译成二进制程序;
‑j N多核编译加速
make
#多核编译 make -j4
- 步骤 4:make install 安装 把编译好的程序、配置复制到
--prefix指定目录
make install
- 验证启动
/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/
解包源代码包
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)