选项作用
-U
如果老版本不存在则全新安装,如果存在有新版即升级
# 先下载2个版本,1个老版本,1个新版本
wget https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm
wget https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.0-1.el7.x86_64.rpm
#1.先安装低版本
[root@localhost~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
#2.尝试安装高版本(会出现错误)
[root@localhost~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm
#3.使用升级的方式,完美解决替换
[root@localhost~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm
4.卸载 RPM包
卸载包时需要先把依赖的包卸载掉
如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃
常用选项
选项作用
-e
卸载已存在的RPM包
5.校验 RPM包(扩展)
常用选项
选项作用
S
文件的容量大小是否被改变
M
文件的类型或者文件的属性是否被修改
5
MD5 这一种指纹加密的内容已经不同
L
路径已经被改变
U
文件的所属主已被修改
G
文件的所属组已被修改
T
文件的创建时间已被改变
软件相关的数据库存放于/var/lib/rpm目录
校验语法
[root@localhost ~]# rpm -V vsftpd
S.5....T. c /etc/pam.d/vsftpd
.......T. c/etc/vsftpd/ftpusers
S.5....T. c /etc/vsftpd/vsftpd.conf
.M......./var/ftp/pub
四:yum管理RPM包
1.yum介绍
① 什么是yum?
yum(Yellow dog updater, modified)是一个在Fedora和RedHat以及CentOS中的Shell 前端软件包管理器
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系
并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装(YUM是生产最佳实践)
② 是什么yum源?
要成功的使用 yum工具安装更新软件或系统,就需要有一个包含各种 rpm 软件包的repository(软件仓库),这个软件仓库我们习惯称为 yum 源(可以是本地源、网络源)
③ 查看yum命令 与 yum配置文件
# 查看yun命令
[root@localhost~]# rpm -q yum
yum-3.4.3-132.el7.centos.0.1.noarch
# 查看yun的配置文件
[root@localhost~]# rpm -qc yum/etc/logrotate.d/yum/etc/yum.conf/etc/yum/version-groups.conf
④ yum命令常用选项
仓库
yum repolist # 查询可用仓库
yum repolist list # 查询已启用/禁用的所有仓库状态
# 关闭与启用仓库:本质:都是在修改repo文件中的enable的值 0不启用 1启用
yum-config-manager --disable epel # 关闭仓库epel
yum-config-manager --enable epel # 启用仓库epel
查看
yum list # 列出可用仓库中的所有软件包
yum list|less # 列出可用仓库中的所有软件包(分页)
yum grouplist # 列出可用仓库中的软件组
# 与rpm-qf的区别在于yum provides后可以只跟命名
yum provides/usr/sbin/ifconfig # 查询命令所属的软件包,可以不加路径,只写命令名字
安装
yum install httpd httpd-tools # 加上-y选项 可以变成非交互
yum groupinstall"开发工具" -y # 安装软件组,一个软件组中包含了多个软件包
yum groups install"开发工具" -y # 同上
卸载
yum remove httpd httpd-tools http*# 卸载软件包
yum groupremove"开发工具" -y. # 卸载软件组
yum groups remove"开发工具" -y # 同上
重装
yum reinstall httpd # 不小心删除了配置文件的时,可以reinstall一下
更新
yum check-update # 检查可以更新的软件包
yum update-y # 更新所有软件包,包括内核,通常:只在刚装完系统时执行
yum update httpd-y # 更新某个软件包
缓存
yum makecache # 制作元数据缓存
yum clean all # 清除所有yum缓存的软件包以及元数据
yum clean packages # 只清除缓存的软件包
[root@localhost~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1 #启动缓存
历史记录
yum history # 查看执行过的yum命令历史记录
yum history info ID号 # 查看具体某一条yum命令的详细信息
yum history undo ID号 # 撤销执行过的历史命令
需要注意的点:
无论yum安装的软件来自何处,yum时刻以自己仓库中的repodata存储的依赖关系为准,如果有多个仓库,就依次检索
yum直接安装公网的rpm包, 会自动查找当前系统上已有的仓库解决依赖关系
yum install https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/samba4.8.3-4.el7.x86_64.rpm
Yum直接安装本地的rpm包,会自动查找当前系统上已有的仓库解决依赖关系
yum localinstall -y /mnt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm
要使用yum前,需要准备一个yum源(我们也称为yum仓库), 这个可以是一个互联网上的仓库,也可以是本 地自己搭建的仓库.仓库里面有什么呢?里面全部都是.rpm的软件包.一台linux,可以添加N多个yum源, 能 搜索的软件包数量就是N个yum源之和
系统常见yum源
自定义的本地源
网络的源(如:base基础源、epel扩展源、与服务相关的源(官网))
2.镜像文件作为yum源(本地源)
① 挂载
# 方式1:
[root@localhost~]# mount /dev/cdrom /opt/# 方式2:
[root@localhost~]# mount /dev/sr0 /opt/# 方式3:
[root@localhost~]# mount -o loop /xxx.iso /opt
# 查看光盘里的rpm包
[root@localhost~]# ls /opt/Packages/
② 编辑repo文件
[root@localhost ~]# cd /etc/yum.repos.d/[root@localhost yum.repos.d]# vim local.repo # 文件名自定义,必须以.repo结尾
[local] # 仓库的实际名字,任意
name=local # 仓库的描述,任意
baseurl=file:///opt # 仓库位置,可以是 http:// https:// ftp:// file://
enabled=1# 启用仓库,默认就是启用的
gpgcheck=0 # 检查安装的rpm是否是合法的,0表示不检验
③ 检查可用仓库
[root@localhost ~]# yum repolist # 查询可用仓库
[root@localhost~]# yum repolist all # 查看所有仓库,包括禁用的
④ 安装、查询、卸载
[root@localhost ~]# yum list # 列出可用的软包
[root@localhost~]# yum install vsftpd -y # 安装:vsftpd
[root@localhost~]# yum list vsftpd httpd #
[root@localhost~]# yum remove vsftpd -y # 卸载:vsftpd
[root@localhost~]# yum install glib* httpd -y
[root@localhost~]# yum provides vsftp # 查询某个软件(可以是未安装的)是由哪个rpm包提供
# yum reinstall 重装
[root@egon~]# rm -rf /etc/httpd/conf/httpd.conf
[root@egon~]# yum reinstall httpd -y &> /dev/null[root@egon~]# ls /etc/httpd/conf/httpd.conf/etc/httpd/conf/httpd.conf
# yum update 更新
[root@localhost~]# yum -y update samba
[root@localhost~]# yum -y update
⑤ 软件包组安装、查询、卸载
[root@localhost ~]# yum grouplist
[root@localhost~]# yum groupinstall "GNOME 桌面" -y
[root@localhost~]# yum groupinstall "开发工具" -y
[root@localhost~]# yum groupremove "开发工具" -y
3.使用开源yum源(网络源)
① 查看当前yum源。
[root@localhost ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speedsfromcached hostfile
repo id repo name status!base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072
!extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 448
!updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 773repolist:11,293
base:基础源
extras:扩展源
updates:更新源
② 使用第三方yum源
默认系统是国外源(因为服务器在国外,所以速度较慢),因此 需要替换为国内的源
例:(切换成阿里源)
# 阿里云的base基础源
wget-O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos7.repo
# 阿里云的extras扩展源
curl-o /etc/yum.repos.d/epel.repo
http://mirrors.aliyun.com/repo/epel-7.repo
# extras扩展源 也可以安装一个软件包来生成(效果同上)
yum install epel-release -y
扩展:
EPEL
EPEL的全称叫 Extra Packages for Enterprise Linux
EPEL是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目
装上了 EPEL之后,就相当 于添加了一个第三方源
RHEL
RHEL以及他的衍生发行版如CentOS、Scientific Linux为了稳定,官方的rpm repository提供的rpm 包往往是很滞后的
当然了,这样做这是无可厚非的,毕竟这是服务器版本,安全稳定是重点,官方的rpm repository提供的rpm包也不够丰富,很多时候需要自己编译那太辛苦了,而EPEL恰恰可以解决这两方面的问题
4.自己制作本地yum源
① 将下载好的rpm包和相关依赖都放入一个目录中
② 安装createrepo工具
[root@localhost ~]# yum install createrepo -y
③ 制作repodata
createrepo /mnt/Packages/
④ 配置本地repo文件,指向/mnt/Packages/
# 编辑 /etc/yum/repos.d/soft.repo
[root@localhost~]# vim /etc/yum/repos.d/soft.repo
# 按i进入插入模式,添加如下内容
[soft]
name=soft
baseurl=file:///mnt/Packages/
enabled=1gpgcheck=0
5.将自己制作本地yum源 共享给别人
6.yum的历史记录
7.yum扩展知识
① yum元数据缓存
指的将yum仓库的元数据缓存下来,下次安装时省去了检索过程,安装速度可以加快
[root@localhost ~]# yum clean all # 清理缓存
[root@localhost~]# yum makecache # 制作缓存
② yum软件包缓存
开启软件包缓存后,从网络源下 载安装完的软件安装包不再删除,都缓存到了本地
[root@localhost ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasev
er # 指定软件安装包的缓存目录
keepcache=1# 设置为1
debuglevel=2# 缓存目录为:ls/var/cache/yum/x86_64/7/
基于软件包缓存,可以做成自己的yum源,以此来控制 各个服务的版本
通常的做法为
在测试环境中,在每个节点上都开启软件包缓存
在测试环境中,安装相同版本的操作系统,安装完毕后统一执行yum update -y
在测试环境中,部署完你的架构,测试完毕
把测试环境中每台机器上缓存好的软件包安装包采集到一个文件下
[root@localhost ~]# find /var/cache/yum/x86_64/7/ -type f -name "*.rpm" | xargs -I {} mv {} /soft/
然后用createrepo命令制作好依赖关系,即 repodata数据库
然后在线上环境部署时,就用该本地源就好,不要轻易升级,不要滥用yum源
这样可以严格控制好各个服务的 版本
8.签名检查机制
五:源码包