YUM介绍
YUM(yellow dog updater modified)
基于RPM包构建的软件更新机制
自动解决依赖关系
yum软件仓库集中管理软件包
RPM软件包的来源
- centos发布的RPM包集合
- 第三方组织发布的RPM包集合
- 用户自定义的RPM包集合
软件仓库的提供方式
- FTP服务:baseurl=ftp://......
- HTTP服务:baseurl=http://.......
- 本地目录:baseurl= file://.......
YUM源配置
FTP方式获取软件源(配置yum源)
本地目录配置yum源在之前的博客中已经演示
这里展示一下FTP配置方式
安装ftp服务
yum install vsftpd systemctl start vsftpd
在ftp目录中创建centos7文件夹,用于存放从系统光盘印象中复制的软件包文件
cd /var/ftp mkdir centos7 mount /dev/sr0 /mnt #挂载系统光盘 ls /mnt #查看光盘文件 #软件包就位于Packages文件夹中 repodata为yum仓库索引表(依赖关系等) #并且存在GPGkey[RPM-GPG-KEY-CentOS-7]可供调用 cp -r /mnt/* centos7 #拷贝光盘文件到cd /var/ftp/centos7
文件目录结构:
创建/etc/yum.repos.d/ftp.repo yum库文件
cd /etc/yum.repos.d mkdir bak mv *.repo bak vim ftp.repo [ftp] name=ftp baseurl=ftp://192.168.80.101/centos7 #ftp服务默认路径从/var/ftp开始 绝对路径相应为/var/ftp/centos7 enabled=1 gpgcheck=1 #开不开gpg检查都可以 此处开启 下面跟上gpykey位置 gpgkey=ftp://192.168.80.101/centos7/RPM-GPG-KEY-CentOS-7 yum clean all && yum makecache
此时可将本yum配置文件传递给其他主机使用
scp ftp.repo 192.168.80.102:`pwd` yum clean all && yum makecache
若出现,关闭防火墙记得systemctl stop firewalld
直接使用阿里云的yum配置文件从阿里云获取yum软件仓库(将yum替换为国内源)
wget -O /etc/yum.repo.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/CentOS-7.repo #或者 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo yum clean all && yum makecache
同时使用本地源与网络源
使用本地源速度更快,而使用网络源版本更新。可以通过安装yum-plugin-priorities插件同时使用本地源与网络源,文体两开花
安装yum-plugin-priorities插件
yum install -y yum-plugin-priorities.noarch
编辑ftp.repo配置文件添加优先级
yum install -y epel-release #安装在线源扩展包 等会测试用的nginx需要用扩展源才能下载 #生成/etc/yum.repos.d/epel.repo vim /etc/yum.repos.d/ftp.repo priority=1 #✨添加优先级 越小越优先 #从/etc/yum.repos.d/epel.repo扩展源拷贝配置,添加在下方 [epel] name=Extra Packages for Enterprise Linux 7 - $basearch # It is much more secure to use the metalink, but if you wish to use a local mirror # place its address here. #baseurl=http://download.example/pub/epel/7/$basearch metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch&infra=$infra&content=$contentdir failovermethod=priority enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 priority=2 #✨添加优先级
将无关的配置移除以便测试
mv *.repo bak mv bak/ftp.repo . #将所有repo文件除了刚刚设置的ftp.repo都移入bak文件夹,以免生效 [root@xue yum.repos.d]# ls bak ftp.repo #文件夹结构应该是这样
开启插件(默认已经启动)
vim /etc/yum/pluginconf.d/priorities.conf [main] enabled = 1 #默认已经启动
测试
yum install -y httpd #本地源有的,使用本地源 yum install -y nginx #本地源没有,使用在线源
通过yum获取软件安装包,并且创建依赖关系表以生成软件仓库
1 通过安装完后查找缓存获取软件安装包
yum缓存位置
yum clean all清除的缓存正是这里
cd /var/cache/yum/x86_64/7/
修改yum配置文件,修改缓存设置
若要安装完软件缓存不被清空,修改keepcache=1
vim /etc/yum.conf cachedir=/var/cache/yum/$basearch/$releasever #缓存位置 keepcache=1 #保存缓存
安装mariadb数据库并查找缓存中安装包
yum install -y mariadb mariadb-server #安装 find /var/cache/yum/x86_64/7/ -name "*.rpm" #查找缓存中安装包 cd /var/cache/yum/x86_64/7/ mkdir pkgs #将找到的安装包全部移动到pkgs文件夹中方便查看 find /var/cache/yum/x86_64/7/ -name "*.rpm" -exec cp {} pkgs/ \;
2 通过yum命令获取软件安装包
使用yum install -y --downloadonly
cd /opt mkdir pkg yum install -y --downloadonly tomcat --downloaddir=/opt/pkg #yum仅下载tomcat安装包 不安装 下载到/opt/pkg ls pkg #查看
使用yumdownloader
cd /opt mkdir package yumdownloader --destdir=/opt/package httpd --resolve # --resolve 同时下载依赖包 ls package#查看
createrepo 创建依赖关系表以生成软件仓库
将刚刚下载的多个安装包执行createrepo目录,会生成依赖关系表。这时软件包文件夹才能作为yum仓库使用。
createrepo ./pkg #刚刚下载软件包的目录 ls pkg #查看 会生成一个repodata依赖关系表