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
缺点:yum/rpm无法管理源码安装软件,卸载麻烦,不便于升级,生产环境优先rpm/yum。
2、自建本地yum仓库
适用场景:内网服务器不能联网,本地目录存放一堆rpm包,做成本地yum源。
3、同步外网yum仓库到本地
工具:reposync(来自yum‑utils)
- reposync:把远程yum仓库全部rpm包下载到本地磁盘;配合createrepo即可做成内网离线源。
网硕互联帮助中心


评论前必须登录!
注册