RPM包管理

五十岚2020年6月11日
大约 4 分钟

CentOS 的包管理

rpm 包管理

1. rpm包

RedHat Package Manager:Debian Linux 社区的 dpkg 不同,RPM 是红帽开发的,CentOSRdeoraSUSE 等开发商都用这个

特点

需要软件先编译,打包成 RPM 机制的文件,通过软件中默认数据库记录依赖

安装时,会按照软件中的数据查询,软件是否已经满足当前 Linux 主机的依赖属性,满足了才会安装

2. yum 管理工具

yumCentOSRedHat 系统上用的 RPM 包(上层的 )管理工具 ,要有 本地 yum 源 才可以使用

它的工作原理并不复杂,每一个 RPM 软件的头(header)里面都会纪录该软件的依赖关系,yum 通过分析,可自动解决依赖性

2.1 更换 yum 源

通常更换 yum 源来解决软件无法安装的问题

慎用该命令,会更新内核

yum update

2.2 安装 epel 拓展软件源

epel: 如果既想获得 RHEL 的高质量、高性能、高可靠性,又需要方便易用(关键是免费)的软件包更新功能, Fedora Project 推出了 EPELopen in new windowExtra Packages for Enterprise Linux)由 Fedora 社区打造,为 RHEL 及衍生发行版如: CentOSScientific Linux 等提供高质量软件包的项目

CentOS 用户可以直接通过如下安装并启用 EPEL

$ yum install epel-release 

参考open in new window

3. Linux 内核

Linux 内核版本分为主线、稳定和长期版本

  • 主线版本代表整个 Linux 内核的一个树干,新的主线版本每 2-3 个月发布一次
  • 稳定内核则是在主线版本中,被认为是 "稳定的" 得出。是根据需要发布的,通常是每 3 个月。
  • 而对于长期内核版本,通常提供几个 "长期维护" 内核版本,用于较早的内核树错误修复返回的目的。这些内核只应用重要的错误修复,通常不会有非常频繁的更新

3.1 CentOS 内核

  • 对于 CentOS/RHEL 系统,尽量使用 yum 方式或 RPM 包安装 / 升级内核,需要注意的是红帽的 Red Hat Linux 服务需要订阅

  • 使用安装新内核而不是直接升级内核,安装新内核不会覆盖旧内核,而升级会导致新内核直接替换旧内核,可能会导致系统无法启动

查看当前操作系统版本:

$ cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)

查看当前内核

$ uname -r / uname -a
Linux node105 3.10.0-1127.8.2.el7.x86_64 #1 SMP Tue May 12 16:57:42 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

查看可升级的内核版本

yum list kernel --showduplicates

rpm 查看具体安装内核文件

rpm -qa | grep kernel                           # 查看kernel 相关的安装包
rpm -ql kernel-3.10.0-957.el7.x86_64            # 查看安装包的具体路径

3.2 yum 升级软件和内核

kernel Linux: 内核软件包,包含单、多核和多处理器系统的内核,是任何 Linux 操作系统的核心,单处理器的系统仅需安装内核包

Linux 升级命令有两个分别是 yum upgradeyum update,区别如下

  • yum -y update 升级所有包同时也升级软件和系统内核
    • 升级前:内核版本 3.10.0-957.el7.x86_64
    • 升级后:内核版本 3.10.0-1127.8.2.el7.x86_64
  • yum -y upgrade 只升级所有包,不升级软件和系统内核

最好别执行 yum -y update

3.3 在 CentOS 上降级内核

  • 首先先找到目标内核的 rpm

    wget http://vault.centos.org/7.7.1908/os/Source/SPackages/kernel-3.10.0-957.el7.src.rpm
    
  • 删除之前的内核版本,若有依赖,则一个个删相关依赖

    rpm -ev kernel-3.10.0-1127.8.2.el7.x86_64
    
    # 删依赖
    rpm -ev kmod-kvdo-6.1.3.7-5.el7.x86_64
    
  • 安装该 rpm

    rpm -ivh kernel-3.10.0-957.el7.src.rpm
    
  • 禁止 yum 自动升级 kernel

    vim /etc/yum.conf
    exclude=kernel*
    

3.4 在 CentOS 上降级发行版本

  • 首先下载目标发行版本的 rpm

    wget http://vault.centos.org/7.7.1908/os/Source/SPackages/centos-release-7-7.1908.0.el7.centos.src.rpm
    
  • 安装该发行版本 rpm

    rpm -ivh centos-release-7-7.1908.0.el7.centos.src.rpm --force
    
  • 查看当前系统的发行版本

    rpm -qa|grep -i centos-release-7-
    
    # 可出现两个发行版本
    centos-release-7-6.1810.2.el7.centos.x86_64
    
  • 直接执行以下命令 安装 C7.6 版本对应的

    yum --disablerepo='*' --enablerepo='C7.6*' upgrade
    
  • 解决不了,那就重装

上次编辑于: 2022/10/9 12:42:17