目录

3.1.1 命令 vs 应用程序

3.1.2 FHS标准:应用程序文件分布

3.1.3 软件包4种封装

3.2 RPM软件包管理

RPM包命名格式

rpm核心命令

3.3 DNF包管理器(openEuler默认,替代yum)

dnf常用命令

3.4 源代码编译安装(四步)

标准四步流程

3.5 三种安装方式选型对比


1.1 命令 vs 应用程序

对比维度

Linux系统命令

应用程序(软件)

来源

系统自带基础组件

独立业务软件(Nginx、MySQL)

存放

/bin、/sbin

/usr/bin、/usr/sbin、/usr/local/*

界面

仅字符CLI

CLI、GUI都支持

交叉:部分软件提供命令式可执行文件,叫 程序命令

3.1.2 FHS标准:应用程序文件分布

  1. /usr/bin:存放普通可执行程序,供普通用户运行
  2. /usr/sbin:存放管理员服务程序,需以 root 身份运行
  3. /etc:存放配置文件,修改后需重启程序方可生效
  4. /var/log:存放日志文件,用于排查故障
  5. /usr/share/doc:存放软件文档
  6. /usr/share/man:存放 man 帮助手册

3.1.3 软件包4种封装

  1. RPM:openEuler/RHEL使用,二进制包,工具rpm/dnf
  2. DEB:Ubuntu/Debian使用
  3. 源代码包(.tar.gz):原始源码,需要gcc编译,可以定制功能
  4. 自包含安装包:自带依赖,小众软件使用

3.2 RPM软件包管理

RPM是底层工具, 不会自动解决依赖;数据库:/var/lib/rpm/

RPM包命名格式

软件名-版本号-发布次数.系统版本.架构.rpm示例:
lynx‑2.8.9‑20.oe2403.x86_64.rpm
  • noarch:跨架构,脚本类包

rpm核心命令

命令

作用

rpm -q 包名

查询是否已安装

rpm -qa

列出全部已安装包

rpm -qi 包名

查询

已安装软件包的详细信息(软件名、版本、描述等),参数写

软件名

rpm -qpi xxx.rpm

查询未安装的RPM包文件

的详细信息,参数写

rpm完整文件路径

rpm -ql 包名

查看安装生成哪些文件

rpm -qf 文件路径

反向查询:这个文件属于哪个rpm包

rpm -qlp xxx.rpm

查看未安装rpm包里包含哪些文件

rpm -ivh xxx.rpm

安装本地rpm包

rpm -Uvh xxx.rpm

升级,没装就安装

rpm -Fvh xxx.rpm

仅升级已存在软件

rpm -e 软件名

卸载软件

‑qi ‑qpi 的区别
  1. rpm -qi 软件名:操作对象是系统里已经安装好的包,输入软件名字;读取本地RPM数据库。
  2. rpm -qpi 完整包路径.rpm:操作对象是磁盘上还没有安装的rpm文件,要写完整文件路径,不访问系统rpm数据库。
⚠️ --nodeps忽略依赖、--force强制覆盖, 生产环境禁止使用,只用于学习测试
注意:rpm只能管理rpm安装的软件,源码编译安装的软件rpm查不到。

3.3 DNF包管理器(openEuler默认,替代yum)

底层依旧基于RPM, 自动下载、自动解决依赖。仓库配置目录:/etc/yum.repos.d/*.repo

dnf常用命令

命令

功能

dnf list 软件名

查看安装状态和仓库版本

dnf info 软件名

软件详情

dnf search 关键词

搜索软件

dnf install -y 软件

安装软件,-y自动确认

dnf update [软件名]

升级指定软件;不带名字升级全部系统软件

dnf remove -y 软件名

卸载软件,自动检查依赖风险

dnf groupinstall "Development Tools"

安装开发工具组(gcc、make等)

dnf工作流程:读取repo配置→下载元数据缓存→解析依赖→下载rpm包→调用rpm执行安装。

3.4 源代码编译安装(四步)

适用场景:要最新版本、定制开启/关闭模块、修改源码、适配特殊硬件架构(鲲鹏aarch64)
前提:安装编译环境
dnf install -y gcc make pcre-devel zlib-devel openssl-devel
-devel后缀:开发库,编译源码必须要,运行不需要。

标准四步流程

  1. 解包
    tar -zxvf xxx.tar.gz
    进入源码目录
  2. 配置 ./configure
  • 不编译;检测系统依赖;生成Makefile
  • --prefix=/xxx 指定安装目录,方便卸载
  • --with‑xxx_module开启模块,--without‑xxx关闭模块
  • 报错:error:xxx not found → dnf安装缺失devel库
  1. 编译 make [-j N]
  • 调用gcc,把.c源码编译成二进制;‑j 4开启4核并行编译加速
  1. 安装 make install
  • 不编译! 复制编译好的二进制、配置文件到prefix目录
源码编译软件 没有卸载命令:直接删除--prefix指定的整个安装目录即可。
Nginx示例:
tar -zxvf nginx‑1.26.2.tar.gz
cd nginx‑1.26.2
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module
make -j4
make install
#卸载:rm -rf /usr/local/nginx

3.5 三种安装方式选型对比

方式

优点

缺点

适用场景

rpm本地安装

无需网络

手动处理依赖,麻烦

离线无外网服务器

dnf install

自动解决依赖,简单稳定

版本跟随官方仓库,不能自定义模块

日常生产首选,标准化部署

源码编译

自定义模块、新版本、适配特殊硬件

步骤多,要装编译环境,无包数据库

定制Nginx/Redis、鲲鹏架构、需要修改源码


 
Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐