yum是基于RPM包管理, 能够自动解决依赖关系, 极大的方便rpm包的安装升级
1.联网获取软件
2.基于RPM管理
3.自动解决依赖
4.命令简单好记
5.生产最佳实践

1.YUM软件仓库管理

1.1本地YUM仓库

有时候你的linux系统不能联网,当然就不能很便捷的使用联网的yum源了,这时候就需要你自己会利用linux系统光盘制作一个yum源。具体步骤如下:

1.挂载镜像
[root@liyanzhao ~]# mount /dev/cdrom /mnt   

2.备份原有仓库
[root@liyanzhao ~]# gzip /etc/yum.repos.d/*

3.创建新仓库文件,并加入如下内容:
//使用yum-config-manager命令添加本地仓库
[root@liyanzhao ~]# yum-config-manager --add-repo="file:///mnt"
//手动添加repo配置文件(方式二)
[root@liyanzhao ~]# vim /etc/yum.repos.d/cdrom.repo  
[cdrom]      
name=This is local cdrom
baseurl=file:///mnt
enabled=1
gpgcheck=0

[]          //仓库名称
name        //仓库描述信息
baseurl     //YUM源url地址 ,可以是file:// ftp:// http://
enabled     //是否激活该YUM源(0代表禁用,1代表激活,默认为激活)
gpgcheck    //安装软件时是否检查签名(0代表禁用,1代表激活)

4.刷新repos生成缓存
[root@liyanzhao ~]# yum makecache

1.2网络YUM仓库

官方网络YUM源配置
阿里镜像站点, 传送门

// Base/Extras/Updates: 默认国外官方源
[root@liyanzhao ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo \
http://mirrors.aliyun.com/repo/Centos-7.repo
EPEL扩展源
//国外epel源
[root@liyanzhao ~]# yum -y install epel-release
//阿里云epel源
[root@liyanzhao ~]# wget -O /etc/yum.repos.d/epel.repo \
http://mirrors.aliyun.com/repo/epel-7.repo

1.3官方YUM仓库

Nginx官方源
//源超找方式基本一致,zabbix,mysql,saltstack,openstack

[root@liyanzhao ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo 
baseurl=http://nginx.org/packages/centos/7/$basearch/ 
gpgcheck=0
enabled=1

1.4红帽配置Centos仓库

红帽Redhat7替换Centos7网络源

1.卸载红帽yum源
rpm -e $(rpm -qa|grep yum) --nodeps

2.删除所有repo相关文件
rm -rf /etc/yum.conf
rm -rf /etc/yum.repos.d/
rm -rf /var/cache/yum

3.下载centos相关yum组件
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-154.el7.centos.noarch.rpm
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-42.el7.noarch.rpm
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-updateonboot-1.1.31-42.el7.noarch.rpm
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-utils-1.1.31-42.el7.noarch.rpm
//如果没有wget命令则使用curl命令
curl -o yum-utils-1.1.31-42.el7.noarch.rpm  https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-utils-1.1.31-42.el7.noarch.rpm
curl -o yum-3.4.3-154.el7.centos.noarch.rpm  https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-154.el7.centos.noarch.rpm
curl -o yum-metadata-parser-1.1.4-10.el7.x86_64.rpm  https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
curl -o yum-plugin-fastestmirror-1.1.31-42.el7.noarch.rpm   https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-42.el7.noarch.rpm
curl -o yum-updateonboot-1.1.31-42.el7.noarch.rpm https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-updateonboot-1.1.31-42.el7.noarch.rpm

3.安装所有相关组件

[root@liyanzhao-node1 ~]# rpm -ivh yum-*

4.下载base和epel仓库

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sed -i 's#\$releasever#7#g' /etc/yum.repos.d/CentOS-Base.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

2.YUM软件命令管理

2.1搜索软件包指令

//列出软件仓库中可用的软件
[root@liyanzhao ~]# yum list
//进行模糊查找
[root@liyanzhao ~]# yum list|grep ftp
//列出软件包详情
[root@liyanzhao ~]# yum info ftp

2.2安装软件包指令

//安装软件只需要给出软件名称
[root@liyanzhao ~]# yum install traceroute
//安装过程中分析依赖关系后, 直接安装, 无需交互
[root@liyanzhao ~]# yum install php -y
//安装本地的rpm包, 如果有依赖关系, 会自动从软件仓库中下载所需依赖(非来自.repo定义的软件仓库)
[root@liyanzhao ~]# yum localinstall /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm
//安装网络上rpm包
[root@liyanzhao ~]# yum install http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

2.3重装软件包指令

//检查软件是否存在
[root@liyanzhao ~]# rpm -q vsftpd
vsftpd-2.2.2-24.el6.x86_64
//检查vsftpd软件配置文件
[root@liyanzhao ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
//不小心删除vsftpd配置文件
[root@liyanzhao ~]# rm -f /etc/vsftpd/vsftpd.conf
//重新安装软件
[root@liyanzhao ~]# yum reinstall vsftpd
//再次检查
[root@liyanzhao ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf

2.4更新软件包指令

//对比Linux已安装的软件和yum仓库中的软件, 有哪些需要升级
[root@liyanzhao ~]# yum check-update
//更新软件
[root@liyanzhao ~]#  yum update acl -y

2.5删除软件包指令

//先安装一个samba软件
[root@liyanzhao ~]# yum install samba -y
//删除该软件包,不会删除依赖, 但是我们尽可能不要使用删除软件操作
[root@liyanzhao ~]# yum erase samba -y
[root@liyanzhao ~]# yum remove samba -y

2.6仓库相关指令

//列出yum源可用的软件仓库
[root@liyanzhao ~]# yum repolist
//列出全部yum源可用和禁用的仓库
[root@liyanzhao ~]# yum repolist all
//查看这个文件或命令属于哪个包
yum provides /etc/my.cnf
yum provides cd

2.7缓存相关指令

//缓存yum源软件仓库, xml元数据文件
[root@liyanzhao ~]# yum makecache
//缓存软件包, 修改yum全局配置文件
[root@liyanzhao ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1 //启动缓存
//查看缓存的xml文件
[root@liyanzhao ~]# ls /var/cache/yum/x86_64/7/base/
//查看缓存软件包路径
[root@liyanzhao ~]# /var/cache/yum/x86_64/7/

另一种缓存rpm包方式

//1.安装插件支持只下载软件包不安装
[root@liyanzhao ~]# yum install -y yum-plugin-downloadonly
//2.将软件下载至指定目录
[root@liyanzhao ~]# yum install httpd -y --downloadonly --downloaddir=/tmp
//清除所有yum缓存
[root@liyanzhao ~]# yum clean all
//只清除缓存的软件包
[root@liyanzhao ~]# yum clean packages

2.8包组相关指令

//列出已经安装和所有可使用的软件组
[root@liyanzhao ~]# yum groups list
//安装一整个组的软件
[root@liyanzhao ~]# yum groups install Development tools \
Compatibility libraries \
Base Debugging Tools
//yum删除包组
[root@liyanzhao ~]# yum groups remove  -y Base

2.9历史记录指令

//查看历史执行yum命令
[root@liyanzhao ~]# yum history
//查询历史执行yum命令ID详细信息
[root@liyanzhao ~]# yum history info N
//撤销历史执行过的yum命令
[root@liyanzhao ~]# yum history undo N

2.0全局配置文件

vim /etc/yum.cnf
cachedir=/var/cache/yum/$basearch/$releasever   //缓存目录
keepcache=0     //缓存软件包, 1启动 0 关闭
debuglevel=2    //调试级别
logfile=/var/log/yum.log    //日志记录位置
exactarch=1     //检查平台是否兼容
obsoletes=1     //检查包是否废弃
gpgcheck=1      //检查来源是否合法,需要有制作者的公钥信息
plugins=1       //是否启用查询
installonly_limit=5
bugtracker_url
# metadata_expire=90m //每小时手动检查元数据
# in /etc/yum.repos.d   //包含repos.d目录

3.YUM签名检查机制

rpm软件提供组织redhat在构建rpm包时, 使用其私钥private key对 rpm进行签名
客户端在使用rpm为了验证其合法性, 可以使用redhat提供的公钥public key进行签名检查

方式1: 指定公钥的位置

[root@liyanzhao ~]# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

方式2: 提前导入公钥

[root@liyanzhao ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[root@tianyun ~]# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1

方式3: 不进行签名验证

//不检查软件包的签名
[root@liyanzhao~]# yum install httpd --nogpgcheck

4.构建企业YUM仓库

本地光盘提供基础软件包Base
yum缓存提供update软件包

yum缓存提供常用软件包: nginx, zabbix, docker, saltstack

环境准备

服务端配置

1.基础环境准备

//关闭防火墙
[root@yum_server_69_112 ~]# systemctl stop firewalld
//临时关闭selinux
[root@yum_server_69_112 ~]# setenforce 0
//安装ftp服务,启动并加入开机启动
[root@yum_server_69_112 ~]# yum -y install vsftpd 
[root@yum_server_69_112 ~]# systemctl start vsftpd 
[root@yum_server_69_112 ~]# systemctl enable vsftpd
//开启yum缓存功能
[root@yum_server_69_112 ~]# vim /etc/yum.conf
[main] cachedir=/var/cache/yum/$basearch/$releasever 
keepcache=1
[root@yum_server_69_112 ~]# yum clean all

2.提供基础base源

[root@yum_server_69_112 ~]# mkdir /var/ftp/{centos69,centos74}
[root@yum_server_69_112 ~]# mount /dev/cdrom /mnt
[root@yum_server_69_112 ~]# cp -rp  /mnt/Packages/*.rpm /var/ftp/centos74

3.提供第三方源

[root@yum_server_69_112 ~]# mkdir /var/ftp/ops
[root@yum_server_69_112 ~]# yum -y install nginx docker
//复制已缓存的 Nginx docker 及依赖包 到自定义 YUM 仓库目录中
[root@yum_server_69_112 ~]# find /var/cache/yum/x86_64/7/ \
-iname "*.rpm" -exec cp -rf {} /var/ftp/ops \;

4.安装createrepo并创建 reopdata仓库

//安装createrepo
[root@yum_server_69_112 ~]# yum -y install createrepo
//生成仓库信息
[root@yum_server_69_112 ~]# createrepo /var/ftp/ops
//注意: 如果此仓库每次新增软件则需要重新生成一次

客户端使用yum源

1.配置并使用base基础源

[root@yum_client_69_113 ~]# gzip /etc/yum.repos.d/*
[root@yum_client_69_113 ~]# vim /etc/yum.repos.d/centos7.repo 
[centos74]
name=centos74_base
baseurl=ftp://192.168.69.112/centos74
gpgcheck=0

2.客户端指向本地ops源

[root@yum_client_69_113 ~]# vim /etc/yum.repos.d/ops.repo 
[ops]
name=local ftpserver
baseurl=ftp://192.168.69.112/ops
gpgcheck=0
文档更新时间: 2019-07-11 13:05   作者:李延召