Linux系统程序安装及管理

目录

简介

一、Linux 应用程序基础

1.1 命令与应用程序的区别

1.2 应用程序的组成结构

1.3 软件包的常见封装类型

二、RPM 软件包管理工具

2.1 RPM 概述

2.2 RPM 命令核心操作

2.2.1 查询软件包信息

2.2.2 安装、升级与卸载软件包

2.2.3 RPM 数据库维护

三、从源代码编译安装软件

3.1 源代码编译的应用场景

3.2 编译环境准备

3.3 编译安装的基本流程

3.3.1 解包源代码

3.3.2 配置编译参数

3.3.3 编译源代码

3.3.4 安装到系统

3.3.5 配置与启动

3.4 依赖关系处理

四、总结


简介

在 Linux 系统的使用中,软件的安装与管理是一项基础且重要的技能。本文将深入探讨 Linux 应用程序的安装机制,详细介绍 RPM 包管理工具的使用方法,并手把手教你如何从源代码编译安装软件,帮助你全面掌握 Linux 软件管理的核心技术。

一、Linux 应用程序基础

1.1 命令与应用程序的区别

在 Linux 中,命令和应用程序的界限并非绝对清晰,但从使用习惯上可以通过以下特征区分:

  • 命令的特点
  • 执行文件通常较小,存放在 ​​/bin​​​ 和 ​​/sbin​​ 目录
  • 内部命令集成在 Bash 中,非独立执行文件
  • 随系统安装,用于系统管理
  • 遵循 "命令字 选项 参数" 的标准格式
  • 仅在字符界面运行
  • 应用程序的特点
  • 执行文件存放在 ​​/usr/bin​​​、​​/usr/sbin​​ 等目录
  • 需额外安装,提供独立功能
  • 执行格式由开发者定义,形式多样
  • 可能包含图形界面
  • 部分程序可按命令格式运行
1.2 应用程序的组成结构

一个典型的 Linux 应用程序通常由以下部分组成:

  • 可执行程序
  • 普通用户程序:存于 ​​/usr/bin​
  • 管理员程序:存于 ​​/usr/sbin​
  • 配置文件:存于 ​​/etc​​ 目录,复杂时使用子目录
  • 日志文件:存于 ​​/var/log​​ 目录
  • 参考文档:存于 ​​/usr/share/doc​​ 目录
  • 手册页:存于 ​​/usr/share/man​​ 目录

以 Postfix 邮件服务器为例,安装后文件分布如下:

# 安装 Postfix 软件包
[root@node01 ~]# dnf install postfix -y
# 查看 Postfix 安装的文件列表
[root@node01 ~]# rpm -ql postfix
/etc/postfix/main.cf          # 主配置文件
/usr/bin/mailq.postfix        # 普通用户可执行的邮件队列查看命令
/usr/sbin/postfix             # 管理员专用的 Postfix 主程序
/usr/share/man/man5/postconf.5.gz  # 配置文件的手册页
1.3 软件包的常见封装类型

1.3.1 RPM 软件包

  • 扩展名:​​.rpm​
  • 适用系统:RHEL、Fedora、CentOS、OpenEuler 等
  • 特点:针对特定系统版本定制,依赖性较强
  • 管理工具:​​rpm​​ 命令

1.3.2 DEB 软件包

  • 扩展名:​​.deb​
  • 适用系统:Debian、Ubuntu 等
  • 管理工具:​​dpkg​​ 命令

1.3.3 源代码软件包

  • 常见格式:​​.tar.gz​​​、​​.tar.bz2​
  • 特点:提供原始代码,需编译安装
  • 编译工具:GCC 等开发工具

1.3.4 附带安装程序的软件包

  • 扩展名不固定,多为 TarBall 格式
  • 包含安装脚本(如 ​​install.sh​​​、​​setup​​)
  • 安装方式:运行安装脚本按向导操作

二、RPM 软件包管理工具

2.1 RPM 概述

RPM(RPM Package Manager)由 Red Hat 公司开发,现已成为众多 Linux 发行版的标准软件包管理机制。其核心特性包括:

  • 建立统一文件数据库,记录软件安装、卸载、升级信息
  • 自动分析软件依赖关系
  • 标准化的包命名格式:​​软件名-版本-发布次数.系统类型.硬件架构.rpm​
  • 示例:​​bash-5.2.15-14.oe2403sp1.x86_64.rpm​
  • 硬件架构说明:​​x86_64​​​ 表示 64 位系统,​​noarch​​ 表示不区分架构
2.2 RPM 命令核心操作
2.2.1 查询软件包信息

查询已安装的软件包

# 列出系统中所有已安装的 RPM 软件包
[root@localhost ~]# rpm -qa

# 查看指定软件包的详细信息
[root@node01 ~]# rpm -qi samba-common

# 显示软件包安装的所有文件
[root@localhost ~]# rpm -ql wget

# 查找文件所属的软件包
[root@localhost ~]# rpm -qf /usr/bin/vim

查询未安装的 RPM 包文件

# 查看包文件的详细信息
[root@node01 ~]# rpm -qpi /media/cdrom/Packages/ethtool-6.6-3.oe2403sp1.x86_64.rpm

# 查看包文件将安装的文件列表
[root@node01 ~]# rpm -qpl /media/cdrom/Packages/ethtool-6.6-3.oe2403sp1.x86_64.rpm
2.2.2 安装、升级与卸载软件包

安装软件包

# 安装单个 RPM 包(显示安装进度和详细信息)
[root@node01 ~]# rpm -ivh /media/cdrom/Packages/ethtool-6.6-3.oe2403sp1.x86_64.rpm
-i: 安装操作
-v: 显示详细信息
-h: 以 "#" 号显示进度

# 批量安装多个包(使用通配符)
[root@node01 ~]# rpm -ivh /media/cdrom/Packages/*.rpm

升级软件包

# 升级软件包(若未安装则执行安装)
[root@node01 ~]# rpm -Uvh new_package.rpm
-U: 升级操作,未安装时等效于 -i

# 仅升级已安装的包
[root@node01 ~]# rpm -Fvh new_package.rpm
-F: 仅升级已安装的包,未安装则跳过

卸载软件包

# 卸载指定软件包
[root@node01 ~]# rpm -e ethtool
-e: 卸载操作

# 强制卸载并忽略依赖关系(风险操作)
[root@node01 ~]# rpm -e --nodeps ethtool
--nodeps: 忽略依赖关系,可能导致系统问题,仅用于测试
2.2.3 RPM 数据库维护

重建 RPM 数据库

# 当数据库损坏时重建
[root@localhost ~]# rpm --rebuilddb

导入数字签名公钥

# 导入 OpenEuler 官方公钥以验证包完整性
[root@localhost ~]# rpm --import /media/cdrom/RPM-GPG-KEY-openEuler

三、从源代码编译安装软件

3.1 源代码编译的应用场景
  • 获取最新功能:开源软件通常先发布源码,后有二进制包
  • 定制功能需求:修改源码以满足特定业务需求
  • 添加自定义功能:基于现有代码扩展新特性
3.2 编译环境准备

编译源码需要安装开发工具:

# 安装 GCC 编译器(C/C++ 编译工具)
[root@node01 ~]# dnf install gcc -y

# 安装 make 工具(项目构建工具)
[root@node01 ~]# dnf install make -y

# 查看 GCC 版本
[root@node01 ~]# gcc --version

# 查看 make 版本
[root@node01 ~]# make --version
3.3 编译安装的基本流程

以 Apache 服务器为例,完整编译安装步骤如下:

3.3.1 解包源代码
# 检查源代码包
[root@node01 ~]# ll httpd-2.4.25.tar.gz

# 计算 MD5 校验和(确保包完整性)
[root@localhost ~]# md5sum httpd-2.4.25.tar.gz

# 解包到 /usr/src 目录
[root@localhost ~]# tar zxf httpd-2.4.25.tar.gz -C /usr/src/
-z: 用 gzip 解压
-x: 解压文件
-f: 指定文件名
-C: 解压到指定目录
3.3.2 配置编译参数
# 进入源码目录
[root@localhost ~]# cd /usr/src/httpd-2.4.25

# 查看配置选项帮助
[root@localhost httpd-2.4.25]# ./configure --help

# 配置安装参数(指定安装目录)
[root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/apache
--prefix: 指定软件安装的目标目录,便于统一管理和卸载
3.3.3 编译源代码
# 执行编译(根据 Makefile 配置编译源码)
[root@localhost httpd-2.4.25]# make
3.3.4 安装到系统
# 安装编译好的程序到指定目录
[root@localhost httpd-2.4.25]# make install
3.3.5 配置与启动
# 修改 Apache 配置文件
[root@localhost httpd-2.4.25]# vim /usr/local/apache/conf/httpd.conf
# 取消注释 ServerName 行,设置服务器名称

# 启动 Apache 服务
[root@localhost httpd-2.4.25]# /usr/local/apache/bin/apachectl start

# 验证服务运行
[root@node01 ~]# curl 127.0.0.1
3.4 依赖关系处理

编译过程中若缺少依赖包,会出现类似以下错误:

configure: error: pcre library not found

解决方法:

# 安装所需的依赖包
[root@localhost ~]# dnf install pcre-devel -y

四、总结

本文介绍的 Linux 软件管理的两大核心方式:

  1. RPM 包管理:适合快速安装、升级和卸载软件,适合大多数日常场景
  • 优势:安装便捷,依赖自动管理
  • 场景:系统日常维护、安装官方软件包
  1. 源码编译安装:适合需要定制功能或使用最新版本软件的场景
  • 优势:灵活性高,可定制功能
  • 场景:服务器软件部署、个性化功能需求

实践建议:

  • 新手入门:先从 RPM 包管理开始,熟悉 ​​rpm​​​ 和 ​​dnf​​ 命令
  • 生产环境:优先使用发行版提供的 RPM 包,确保稳定性
  • 源码编译:仅在必要时使用,提前备份系统,记录编译参数
  • 依赖管理:安装前检查依赖,避免使用 ​​--nodeps​​ 忽略依赖
  • 安全意识:下载源码包后验证 MD5 校验和,确保文件完整性

掌握这些技能后,你将能够更加灵活地管理 Linux 系统中的软件,根据不同需求选择最合适的安装方式,确保系统稳定高效运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值