Linux管理应用程序
一、Linux 应用程序基础
1.1 命令 vs 应用程序
| 对比维度 | Linux 命令 | Linux 应用程序 |
|---|---|---|
| 文件大小 | 小巧,轻量级 | 较大,含完整功能 |
| 存储目录 | /bin、/sbin、Bash 内置 |
/usr/bin、/usr/sbin、/usr/local/bin |
| 安装时机 | 系统默认安装 | 按需另行安装 |
| 功能定位 | 辅助系统管理(ls, cd, rm) | 独立业务功能(Nginx, MySQL, Python) |
| 执行格式 | 固定 “命令+选项+参数” | 开发者自定义(CLI/GUI/脚本) |
| 运行界面 | 仅字符界面(CLI) | CLI / GUI 均可 |
部分应用程序(如
nginx、docker)也提供符合命令格式的可执行文件,称为“程序命令”,是两者交叉类型。
1.2 应用程序文件构成(FHS 标准)
| 文件类型 | 存放目录 | 说明 |
|---|---|---|
| 普通可执行程序 | /usr/bin |
所有用户可执行 |
| 系统管理程序 | /usr/sbin |
仅 root 可执行 |
| 配置文件 | /etc 或 /etc/子目录 |
修改后需重启程序生效 |
| 日志文件 | /var/log |
问题排查核心依据 |
| 文档/数据文件 | /usr/share/doc/ |
安装说明、更新日志等 |
| man 手册页 | /usr/share/man/ |
man 程序名 查询帮助 |
查看已安装软件包的文件构成(以 yum 为例):
bash
rpm -ql yum
输出示例包含 /etc/dnf/protected.d/yum.conf、/usr/bin/yum 等,严格遵循 FHS。

1.3 四大软件包封装类型
| 封装类型 | 后缀 | 特性 | 适用发行版 | 管理工具 |
|---|---|---|---|---|
| RPM 包 | .rpm |
预编译二进制,标准化 | RHEL/CentOS/openEuler | rpm, yum, DNF |
| DEB 包 | .deb |
预编译二进制,严格依赖 | Ubuntu/Debian | dpkg, apt |
| 源代码包(TarBall) | .tar.gz / .tar.bz2 |
原始代码,需编译 | 所有 Linux | gcc, make, ./configure |
| 自包含安装程序 | .bin / .sh |
预编译+依赖打包 | 所有 Linux | 直接执行脚本 |
选择原则:优先使用系统原生包管理器(RPM系用DNF),定制化需求或最新版本时选择源码编译。
二、RPM 软件包管理工具
2.1 RPM 概述
-
全称:RPM Package Manager(原 Red Hat Package Manager)
-
核心机制:通过数据库(
/var/lib/rpm/)跟踪每个包的安装、升级、卸载,支持事务性操作(失败自动回滚)。 -
命名规范:
软件名-版本号-发布次数.操作系统版本.硬件架构.rpm
例:lynx-2.8.9-20.oe2403.x86_64.rpm-
oe2403:适用于 openEuler 24.03 -
x86_64:架构(aarch64为鲲鹏,noarch为跨架构)
-
2.2 rpm 命令实操
查询已安装的包(-q 系列)
| 命令 | 作用 |
|---|---|
rpm -q 软件名 |
查询是否已安装 |
rpm -qa |
列出所有已安装包 |
rpm -qa | grep -i 关键词 |
模糊查询 |
rpm -qi 软件名 |
查看详细信息(版本、许可证、描述等) |
rpm -ql 软件名 |
列出该包安装的所有文件 |
rpm -qf 文件路径 |
反向查询文件所属包 |
示例:
bash
rpm -q wget # 检查 wget 是否安装 rpm -qa | grep -i python3 # 查询 python3 相关包 rpm -qi python3-firewall # 查看详细信息 rpm -qf /etc/firewalld/firewalld.conf # 查配置文件所属包


查询未安装的 RPM 包文件(-qp 系列)
bash
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 -ivh 包完整路径 |
rpm -ivh /media/cdrom/Packages/w/wget-1.21.4-1.oe2403.x86_64.rpm |
| 升级(未装则装) | rpm -Uvh 包完整路径 |
rpm -Uvh wget-新版本.rpm |
| 升级(仅已装) | rpm -Fvh 包完整路径 |
rpm -Fvh 包名 |
| 卸载 | rpm -e 软件名 |
rpm -e wget |

强制选项(谨慎使用):
-
--force:强制安装/升级 -
--nodeps:忽略依赖检查
生产环境严禁使用,可能导致系统不稳定。
依赖错误处理:若提示缺少依赖,需先安装依赖包,或改用 DNF 自动解决。
三、DNF 包管理器(新一代,openEuler 默认)
3.1 核心优势
-
自动依赖解决(智能解析引擎)
-
多仓库支持(
/etc/yum.repos.d/*.repo) -
智能镜像源选择(基于地理位置)
-
模块化管理(可切换软件版本)
-
兼容 YUM 命令,内存占用更少,速度更快
-
支持 x86_64 和 aarch64(鲲鹏)架构
3.2 工作机制
-
读取仓库配置(
.repo文件) -
下载元数据(缓存至
/var/cache/dnf/) -
解析依赖关系
-
下载并安装软件包
仓库配置示例(openEuler-extra.repo):
ini
[extras] name=openEuler $releasever - Extras mirrorlist=https://mirrors.openeuler.org/mirrorlist?arch=$basearch&repo=extra-$releasever gpgcheck=1 enabled=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-openEuler-24.03
3.3 DNF 常用命令实操
查询
bash
dnf list all # 列出所有已装+可用包 dnf list nginx # 查看 nginx 状态 dnf list available # 仅列出未安装的可用包 dnf list updates # 列出可升级的包 dnf info nginx # 查看详细信息 dnf search "web server" # 搜索关键词



安装
bash
dnf install -y tree # 安装 tree,-y 自动确认

升级
bash
dnf update -y NetworkManager # 升级指定包 dnf update -y # 升级所有可升级包

卸载
bash
dnf remove -y tree # 卸载 tree

其他常用命令
bash
dnf clean all # 清理缓存 dnf makecache # 手动生成元数据缓存 dnf repolist # 列出启用的仓库 dnf repolist all # 列出所有仓库 dnf module list 软件名 # 查看模块版本 dnf check # 检查依赖问题
四、源代码编译安装(定制化)
4.1 适用场景
-
需要最新版本(官方仓库滞后)
-
需要开启/关闭特定功能(如 Nginx 的 SSL、HTTP/2)
-
适配特殊架构(鲲鹏 aarch64)
-
需要修改源代码
4.2 准备开发环境
bash
dnf install -y gcc make dnf install -y pcre-devel zlib-devel openssl-devel # 鲲鹏架构额外安装: dnf install -y gcc-aarch64-linux-gnu make-aarch64-linux-gnu


4.3 标准四步流程(以 Nginx 1.26.2 为例)
Step 1:下载并解包
bash
wget http://nginx.org/download/nginx-1.26.2.tar.gz tar -zxvf nginx-1.26.2.tar.gz cd nginx-1.26.2


Step 2:配置(./configure)—— 定制化核心
bash
./configure --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_v2_module # 鲲鹏架构加 --build=aarch64-unknown-linux-gnu
参数说明:
-
--prefix:指定安装目录,便于后续卸载(直接删除该目录) -
--with-http_ssl_module:开启 HTTPS 支持(需openssl-devel) -
--with-http_v2_module:开启 HTTP/2(需pcre-devel、zlib-devel)
配置成功会生成 Makefile,并显示安装路径和架构信息。
Step 3:编译(make)
bash
make -j 4 # 多核并行编译,4 核加速
无 error 即成功。
Step 4:安装(make install)
bash
make install

4.4 验证与启动
bash
cd /usr/local/nginx/sbin ./nginx ps -ef | grep nginx

浏览器访问 http://服务器IP,看到欢迎页即成功。
4.5 卸载
bash
rm -rf /usr/local/nginx # 直接删除安装目录

五、三种方式对比与场景选择
| 管理方式 | 工具 | 速度 | 依赖处理 | 定制性 | 版本 | 难度 | 适用场景 |
|---|---|---|---|---|---|---|---|
| RPM 原生命令 | rpm |
快(免编译) | 手动处理 | 无 | 稳定,较旧 | 中 | 离线环境、本地安装、单包快速操作 |
| DNF 包管理器 | dnf |
快(免编译) | 自动解决 | 低(仅仓库预设) | 稍滞后 | 低 | 有网环境、日常运维、标准化部署 |
| 源代码编译 | ./configure make |
慢(需编译) | 手动(需开发库) | 高(任意定制) | 最新 | 高 | 最新功能、鲲鹏适配、企业定制化 |
核心选择原则:
-
日常运维 → DNF
-
无网络/离线 → RPM
-
定制化/最新版/特殊架构 → 源码编译
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐
所有评论(0)