管理应用程序
一、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(鲲鹏)双架构
工作机制:
- 读取仓库配置(/etc/yum.repos.d/*.repo)
- 下载元数据到本地缓存(/var/cache/dnf/)
- 解析依赖关系
- 下载并安装软件包
仓库配置文件示例:
[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 | 慢(需编译) | 手动处理 | 高 | 最新 | 高 | 定制化需求、鲲鹏架构适配 |
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)