一、主流 Linux 软件管理机制

目前主流 Linux 发行版使用的软件管理机制主要有两类:

发行版代表 软件管理机制 使用指令 线上升级机制 (指令)
Red Hat/Fedora RPM rpm, rpmbuild YUM (yum, dnf)
Debian/Ubuntu DPKG dpkg APT (apt-get)
RockyLinux RPM rpm, rpmbuild YUM (yum, dnf)

二、RPM 基础概念

2.1 RPM 简介

  • 全称:RedHat Package Manager
  • 特点:以数据库记录方式管理软件安装,安装前检查依赖关系
  • 优势:
    • 预编译打包,安装方便
    • 数据库记录软件信息,便于查询、升级和反安装
  • SRPM:含源代码的 RPM 包,用于自定义修改软件参数

2.2 RPM 软件命名规则

以 chrony-4.2-1.el9.rocky.1.0.x86_64.rpm 为例:

1
2
chrony-   4.2-            1.          el9.rocky.1.0.x86\_64  .rpm
软件名称 软件的版本资讯 释出的次数 适合的硬体平台 副檔名

2.3 硬件平台标识

  • 常见标识:i686, x86_64, noarch
  • noarch:不依赖硬件架构的软件包

2.4 RPM 优点

  1. 包含预编译程序和配置文件,免除重新编译
  2. 安装前检查系统环境,避免错误安装
  3. 提供详细的软件信息
  4. 数据库管理便于升级、移除、查询与验证

2.5 依赖问题与解决

  • 依赖问题:上层软件依赖底层软件,未安装会导致安装失败
  • 解决方式:使用 YUM 在线升级机制,自动分析并解决依赖关系

三、RPM 命令使用

3.1 RPM 查询 (query)

查询存储在 /var/lib/rpm/ 目录下的数据库:

1
2
3
4
rpm -qa                              # 已安装软件列表
rpm -q\[licdR] 软件名称 # 已安装软件详细信息
rpm -qf 系统文件路径 # 查找文件所属软件
rpm -qp\[licdR] RPM包路径 # 查阅未安装RPM包信息

3.2 RPM 验证 (Verify)

用于检查软件文件是否被修改:

1
2
3
4
rpm -Va                             # 验证所有已安装软件
rpm -V 软件名称 # 验证指定已安装软件
rpm -Vp RPM包路径 # 验证未安装的RPM包
rpm -Vf 系统文件路径 # 验证指定文件

验证结果标识:

  • S:文件大小改变
  • M:文件类型或属性改变
  • 5:MD5 指纹码改变
  • D:设备主 / 次代码改变
  • L:链接路径改变
  • U:文件所属人改变
  • G:文件所属群组改变
  • T:文件建立时间改变

3.3 RPM 数字签名 (Signature)

  • 作用:验证 RPM 包的完整性和来源合法性
  • 工具:GnuPG (GPG)
  • 操作示例:
1
2
3
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9  # 导入公钥
rpm -qa | grep pubkey # 查看已安装的公钥
rpm -qi gpg-pubkey-xxx # 查看公钥详情

3.4 RPM 数据库重建

当数据库损坏时重建:

1
rpm --rebuilddb

四、YUM 在线安装 / 升级机制

4.1 YUM 基本功能

YUM 基于 RPM,自动处理依赖关系:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 查询功能
yum clean all # 清除缓存
yum search 关键词 # 搜索软件
yum info 软件名称 # 查看软件信息
yum list # 列出所有可用软件
yum provides "*/文件名" # 查找提供指定文件的软件

# 安装/升级功能
yum install 软件名称 # 安装软件
yum update 软件名称 # 升级软件
yum check-update # 检查可升级软件
yum groupinstall "软件群组名称" # 安装软件群组

# 移除功能
yum remove 软件名称 # 移除软件

4.2 YUM 配置文件

  • 配置文件位置:/etc/yum.repos.d/*.repo
  • 主要仓库:
    • baseos:基础操作系统组件
    • appstream:应用程序和流数据
    • extras:额外的软件包
  • 配置示例:
1
2
3
4
5
6
[baseos]
name=Rocky Linux $releasever - BaseOS
mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever$rltype
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9

五、Linux 日志管理简介

5.1 主要日志文件位置

  • 大多数日志位于 /var/log 目录
  • 常见日志文件:
    • /var/log/messages:系统错误和重要信息
    • /var/log/secure:认证相关信息
    • /var/log/cron:计划任务信息
    • /var/log/maillog:邮件系统信息

5.2 日志服务

  • rsyslog:系统和网络服务日志记录
  • systemd-journald:systemd 提供的日志服务,记录开机过程信息
  • logrotate:日志轮换,防止日志文件过大

5.3 日志查询命令

  • journalctl:查询 systemd-journald 日志
1
2
3
4
journalctl -n 20                 # 显示最近20行日志
journalctl -u chronyd # 显示chronyd服务日志
journalctl -f # 持续监控日志
journalctl -p warning # 显示警告及以上级别日志

六、从源代码安装软件

6.1 编译安装流程

以安装 NCO 软件为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 1. 安装依赖
yum --enablerepo=epel install netcdf-devel

# 2. 下载源代码
git clone https://github.com/nco/nco.git
cd nco

# 3. 配置编译选项
LDFLAGS="-lm" LIBS="-lm" ./configure --prefix=/usr/local --enable-udunits=no --enable-udunits2=no

# 4. 编译和安装
make -j # -j使用多核编译
make install

6.2 关键命令说明

  • configure:配置编译选项,指定安装路径等
  • make:编译源代码
  • make install:安装到指定位置