云计算百科
云计算领域专业知识百科平台

Linux运维笔记:rpm底层查询校验、yum包管理、yum仓库配置详解

Linux软件包管理(rpm/yum)实战笔记

摘要:讲解CentOS7底层rpm软件包工具,查询、校验、安装卸载;yum包管理器完整用法,软件包查询、安装、降级、卸载、yum事务历史、软件包组管理;yum仓库配置,手动写repo文件、yum‑config‑manager工具;简单介绍源码安装、自建本地仓库、同步远程仓库。

一、rpm底层包管理器

rpm:RedHat Package Manager,红帽软件包管理器。只处理本地rpm包,不会自动解决依赖关系。

rpm查询 -q

参数含义
-q 查询单个包是否已经安装
-qa 查询本机全部已经安装的软件包
-qi 查看软件包信息:版本、版权、描述
-ql 列出该rpm包释放到系统的全部文件路径
-qf 反查:某个文件来自哪一个rpm软件包
-qR 查看软件所依赖的库、程序
-qc 只列出该包的配置文件
-qd 只列出帮助文档
-q –scripts 查看rpm包预安装/卸载脚本
-qp 查询未安装的本地rpm文件的信息,搭配i/l/c/d使用

#查询是否安装openssh
rpm -q openssh

#列出本机所有已安装包
rpm -qa

#查看软件描述信息
rpm -qi openssh

#查看包生成的全部文件
rpm -ql openssh

#反查文件属于哪个rpm包
rpm -qf /usr/bin/ssh-keygen

#查看软件依赖
rpm -qR openssh

#查看配置文件
rpm -qc openssh-server

#查看脚本
rpm -q –scripts openssh-server

rpm校验 -V

校验已安装软件包的文件:对比安装原始记录,检查文件大小、MD5内容、权限、属主、SELINUX上下文是否被篡改。无异常没有任何输出。

rpm -V openssh-server

输出标记说明:

标记含义
S 文件大小Size发生变化
M 文件权限/文件类型Mode改动
5 MD5校验值,文件内容被修改
D 设备号变更
L 软链接Link改动
U 属主User改变
G 属组Group改变
T 文件修改时间mTime改变
P 能力capabilities变化

提示:输出带c标记代表是配置文件,人为修改属于正常现象。
示例输出:S.5….T. c /etc/ssh/sshd_config

rpm安装、卸载

#安装本地rpm包;-i安装,-v详细,-h打印进度条
rpm -ivh nginx-1.20.1-10.el7.x86_64.rpm

#卸载软件包(只写包名,不要写rpm后缀)
rpm -e nginx

⚠️rpm缺点:不会自动处理依赖,缺依赖直接报错,所以生产优先使用yum。

二、yum包管理器

yum基于rpm,自动下载rpm包、自动解决依赖关系,CentOS7默认包管理器。

1、info 查看仓库软件信息

yum info httpd

2、list 查询软件包清单

参数说明
list 包名 显示已安装、仓库可安装版本
list –showduplicates 包名 列出仓库所有可用版本
list installed 本机已经安装的包
list available 仓库存在,本机尚未安装
list extras 本机已安装,但yum仓库不存在的包(手动rpm安装)

yum list openssh
yum list –showduplicates openssh
yum list installed | grep openssh
yum list available | grep nginx

3、search / provides

#search 根据软件名字、描述搜索包
yum search all 'web server'

#provides 根据文件路径,反向查找该文件属于哪个软件包
yum provides /etc/ssh

区别:search搜软件名字描述;provides通过系统文件反推软件包。

4、install 安装软件

# -y自动确认交互
yum install -y httpd

# –downloadonly:只下载包+依赖,**不安装**,包缓存到/var/cache/yum
yum install –downloadonly httpd

5、localinstall 安装本地rpm包,自动解决网络依赖

适合本地下载好rpm,但缺少依赖,yum自动从仓库拉依赖安装。

yum localinstall nginx-1.20.1-10.el7.x86_64.rpm

6、downgrade 软件版本降级

降级软件,部分依赖需要同步降级,否则报错。

yum downgrade -y httpd-2.4.6-97.el7.centos

7、update 升级软件

#全部软件升级到最新
yum update -y

#只升级指定软件
yum update vsftpd

8、remove 卸载软件

yum remove:卸载软件,同时清理没有被其他软件依赖的孤儿依赖包。
rpm -e:只卸载指定包,不处理依赖,被别的包依赖会直接报错。

yum remove -y nginx

9、yum history 事务历史(重要排错)

yum每一次安装/卸载/降级都记录事务ID,可以回滚操作。

#查看yum操作历史
yum history list

#查看ID=4事务的详细操作
yum history info 4

#undo:回滚该事务(安装就卸载,卸载就安装回来)
yum history undo 4

#redo:重做该事务
yum history redo 4

10、软件包组管理

把多个相关软件打包成软件组,一次性批量安装。

#列出所有包组
yum grouplist

#查看包组里面包含哪些软件
yum groupinfo "Development Tools"

#安装软件包组
yum groupinstall -y "Development Tools"

#升级包组
yum groupupdate "Development Tools"

#卸载包组
yum groupremove "Development Tools"

#只做标记,不实际安装软件
yum groups mark install "包组名"

三、YUM仓库配置

repo文件存放目录:/etc/yum.repos.d/*.repo
/etc/yum.conf是yum全局主配置。

repo配置文件字段说明

[epel] #仓库ID,不能有空格
name=Extra Packages for Enterprise Linux 7 #仓库描述名字
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/ #软件包源地址
enabled=1 #1启用仓库,0关闭
gpgcheck=1 #开启rpm包签名校验,防止篡改
gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7 #签名公钥地址

yum‑config‑manager工具(需要yum‑utils)

#安装工具
yum install -y yum-utils

#查看全部仓库完整配置
yum-config-manager

#永久启用仓库
yum-config-manager –enable epel

#永久禁用仓库
yum-config-manager –disable epel

#添加远端repo仓库文件
yum-config-manager –add-repo=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

注意:–add‑repo只下载repo配置,不会自动导入gpg公钥,gpgcheck=1会出现签名报错。

仓库缓存管理

yum clean all #清空元数据缓存 + 已经下载rpm包
yum clean metadata #只清理仓库元数据缓存(常用)
yum clean packages #只清理下载的rpm安装包

yum makecache #联网重新拉取仓库包清单,生成本地缓存

repolist查看仓库状态

yum repolist #只看启用的仓库
yum repolist all #查看启用+禁用全部仓库

四、拓展:源码安装、自建yum仓库、同步仓库

1.源码安装三步曲

源码软件一般.tar.gz压缩包;需要提前安装开发工具包组Development Tools

  • ./configure 检测系统环境,生成Makefile编译文件,可以指定安装路径
  • make 编译源代码
  • make install 复制编译好的程序到系统目录
  • 缺点:yum/rpm无法管理源码安装软件,卸载麻烦,不便于升级,生产环境优先rpm/yum。

    2、自建本地yum仓库

    适用场景:内网服务器不能联网,本地目录存放一堆rpm包,做成本地yum源。

  • 创建存放rpm包目录,放入全部rpm包
  • 安装createrepo工具
  • createrepo 目录生成repodata仓库元数据
  • 新建.repo文件,baseurl指向本地目录file:///xxx/xxx,gpgcheck=0。
  • 3、同步外网yum仓库到本地

    工具:reposync(来自yum‑utils)

    • reposync:把远程yum仓库全部rpm包下载到本地磁盘;配合createrepo即可做成内网离线源。

    避坑总结

  • rpm只处理本地包,不会自动解决依赖;生产优先yum。
  • rpm -V校验软件是否被篡改;带c标记是配置文件修改,属于正常。
  • yum remove会清理孤儿依赖;rpm -e只删指定包,不处理依赖。
  • yum history undo可以回滚安装卸载事务,排错非常好用。
  • repo文件enabled=1/0控制仓库开关;gpgcheck=1开启包签名安全校验。
  • 源码安装不受rpm数据库管理,卸载升级麻烦,企业尽量少用。
  • 面试速记小结

  • rpm:底层包工具,查询‑q、校验‑V、安装‑i、卸载‑e,无依赖自动处理。
  • yum:自动解决依赖;install安装、remove卸载、downgrade降级、history undo回滚事务。
  • repo仓库配置文件:/etc/yum.repos.d/*.repo,字段[id] name baseurl enabled gpgcheck gpgkey。
  • 缓存:yum clean metadata && yum makecache刷新仓库元数据。
  • 源码安装:configure → make → make install,缺点包管理器无法管理。
  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » Linux运维笔记:rpm底层查询校验、yum包管理、yum仓库配置详解
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!