一、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 均可

         部分应用程序(如 nginxdocker)也提供符合命令格式的可执行文件,称为“程序命令”,是两者交叉类型。


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 工作机制

  1. 读取仓库配置(.repo 文件)

  2. 下载元数据(缓存至 /var/cache/dnf/

  3. 解析依赖关系

  4. 下载并安装软件包

仓库配置示例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-develzlib-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

  • 定制化/最新版/特殊架构 → 源码编译

Logo

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

更多推荐