Yum 全称是 (Yellow dog Updater Modified)×××狗更新 呵呵 借助于Yum,可以更新,卸载,升级rpm 软件包,并且他能够自动解决rpm包之间的依赖关系。能够让管理人员的工作更加轻松自如。特别是一些拥有大量linux主机的网络中,Yum机制显得就格外重要。

先说说他的工作机制吧,其实Yum的配置并不是很难,主要要理解Yum的工作机制,他为什么能够自动解决rpm之间的依赖关系,靠的又是什么?

简单的说,yum机制可有有两大部分组成,yum的服务端和yum的客户端。如图

yum更新国内仓库 yum仓库配置_数据库

Yum的客户端:

只需要在 /etc/yum.repros.d/*.repo   有repo 为后缀的文件来指向yum源即可(前提:物理和协议上能够通信)

Yum 的服务器端:

Yum的服务器有可以称为Yum仓库 它的构成必须有两个条件

① 以 .rpm为结尾的文件  也就是我们说的rpm软件包文件。

那么rpm包的来源可以可以分为三类

——Red Hat发布的RPM包集合 (就是各linux安装光盘中的)

——第三方组织发布的RPM包集合

——用户自定义的RPM包集合

② 有相应的仓库数据库文件, 仓库数据库文件中就是记录了每个rpm软件包中的包头信息以及各个rpm包之间的依赖关系, 这是YUM 机制的重点。

为了大家的理解,我在这分析了一下linux6.0的光盘结构

Linux 6.0 x 32 位

HighAvailability  高可用相关软件包,如rhcs等相关套件

Server  常规软件包,如mysql,httpd,开发工具,系统管理工具等

LoadBalancer  负载均衡相关软件包,如lvs,pirihan

ResilientStorage 存储方面的软件包

Linux 6.0 32位的光盘提供了这四个YUM仓库 他们四个每个目录下都有一个repodata的目录来存放仓库的数据库文件 .xml的文件是索引文件。

其他结构

Packages  真正存放所有软件包的目录images  rhel安装进程所需要的引导和驱动镜像文件,

isolinux 镜像文件引导时所需要的文件

yum更新国内仓库 yum仓库配置_yum更新国内仓库_02

而linux6.0 x64位的光盘 提供了5个YUM仓库

新增加了 ScalableFileSystem 可扩展的文件系统 包括 SAN ISCSI 等

yum更新国内仓库 yum仓库配置_运维_03

软件仓库是由若干的rpm软件包和仓库数据库所组成。怎样提供给客户端使用那?大致也是分为三种类型:

本地访问file:///…… 也就是本机既是rpm仓库, 有事yum的客户端

FTP 访问 ftp://……

WEB 访问 http://……

其实也可以分为两类: 本地访问 和 网络访问

Yum命令格式:

yum <options> <command> <package name...>

参数说明:

options: 常用的有:

-y : 如果在工作过程中如要使用者响应,这个参数可以直接回答yes

command:

list : 列出在yum server 上面有的RPM套件;若执行yum list installed则表示只列出系统中已安装的软件包,yum list available则表示只列出软件仓库中可用(尚未安装)的软件包,yum list update则表示列出可以升级版本的软件包。

install: 安装某个套件

update : 升级某个套件,如果update后面没有接套件名称,即更新目前主机所有已安装的套件.

info   : 列出某个套件的详细信息,相当于rpm -qi package内容

clean : 将已下载到本机的packages或headers移除

remove : 移除已经安装在系统中的某个套件

yum updates 全部更新

yum updates package 更新指定程序包package

yum check-update 检查可更新的程序

yum info <package> 显示安装包信息

yum list 显示所有已经安装和可以安装的程序包

yum list <package> 显示指定程序包安装情况

yum search <keyword>查找软件包,当需要根据某个关键词来查找相关的软件包时,可以执行yum  search 关键词,默认仅根据软件包名称和描述信息进行搜索。若执行yum search all 关键词,可以扩大搜索范围,例如,以下将搜索软件仓库并列出与httpd相关的软件包。Yum search all httpd

yum clean headers 清除header

yum clean packages 清除下载的rpm包

yum clean all 清除header与rpm包

yum grouplist ,列出所有组

yum groupinstall 安装某个软件组如:yum groupinstall Virtualization    安装虚拟化

下面就以上做几个实验案例

先来 以本地方式 搭建yum

我用的是linux6.0

配置YUM 仓库

挂载光盘

yum更新国内仓库 yum仓库配置_运维_04

查看

yum更新国内仓库 yum仓库配置_操作系统_05

仓库数据库目录

yum更新国内仓库 yum仓库配置_运维_06

其他YUM 仓库的查看略

构建YUM仓库的条件都已经符合

下面要在/etc/yum.repos.d/ 下创建以 .repo结尾的文件指向yum仓库

yum更新国内仓库 yum仓库配置_数据库_07

内容如下

[  ]        #来指定yum仓库的名称 可以自定义

name=    #描述信息

baseurl=file:///        #本地访问

ftp:// #FTP方式访问

http:// #web访问

enable= # 1表示启用这个仓库 0 表示不启用 enable也可以是enabled

gpgcheck= # 1表示启用校验签名 0 表示不校验

gpgkey= #如上面值为1 校验 要指定GPG公钥位置

如file:///etc/pki/RPM-GPG-KEY-redhat-release

如值为0 则本行可以省略 或添加#号注释

yum更新国内仓库 yum仓库配置_客户端_08

我的配置如下

yum更新国内仓库 yum仓库配置_操作系统_09

验证

yum更新国内仓库 yum仓库配置_yum更新国内仓库_10

没有加 -y 选项  会询问

yum更新国内仓库 yum仓库配置_操作系统_11

如果要把其他的仓库全添加上 如下

yum更新国内仓库 yum仓库配置_客户端_12

下面分别是通过 ftp的方式和http的方式搭建YUM

FTP:

YUM SERVER 192.168.1.1

YUM CLIENT 192.168.1.2

Server:

  先要搭建ftp服务 并且防火墙要允许通过

yum更新国内仓库 yum仓库配置_数据库_13

添加规则

yum更新国内仓库 yum仓库配置_yum更新国内仓库_14

添加ftp模块  vim /etc/syconfig/iptables-config

yum更新国内仓库 yum仓库配置_yum更新国内仓库_15

重启防火墙服务 启动ftp

yum更新国内仓库 yum仓库配置_数据库_16

ftp没有问题了  还要把yum仓库中的文件复制到ftp的目录中(直接挂载也行)

yum更新国内仓库 yum仓库配置_yum更新国内仓库_17

YUM 仓库配置完成

到192.168.1.2上面配置

先测试ftp是否能够正常登陆

yum更新国内仓库 yum仓库配置_运维_18

这是因为ftp客户端软件没有安装  提示找不到命令

yum更新国内仓库 yum仓库配置_运维_19

测试

yum更新国内仓库 yum仓库配置_客户端_20

YUM 客户端文件

我用scp命令把1.1上面的文件复制了过来  懒得写了

yum更新国内仓库 yum仓库配置_操作系统_21

最终

yum更新国内仓库 yum仓库配置_运维_22

如果第二次使用yum安装时提示一下错误

yum更新国内仓库 yum仓库配置_客户端_23

侧是/etc/yum.repos.d/ 目录下一定有两个或多个.repo结尾的文件 删除多余的即可,也可以mv成其他后缀的名称

yum更新国内仓库 yum仓库配置_操作系统_24

WEB:

总体上是擦不多的,YUM 主要的就是仓库的配置和客户机的配置

先192.168.1.1上面安装web服务 注意防火墙

yum更新国内仓库 yum仓库配置_客户端_25

YUM仓库的rpm包文件和仓库数据库文件

yum更新国内仓库 yum仓库配置_数据库_26

然后客户端的配置

yum更新国内仓库 yum仓库配置_yum更新国内仓库_27

最后注重点一下 第三方YUM 源的问题

从网站上下载的软件包的集合 只有rpm软件包文件,而没有yum仓库数据库文件。这时候就要用到createrepo 软件了 他是专门用于生成yum仓库数据文件的

用法:createrepo --database 跟rpm集合的目录

如createrepo --database /var/other

安装

yum更新国内仓库 yum仓库配置_运维_28

执行

yum更新国内仓库 yum仓库配置_客户端_29

end


转载于:https://blog.51cto.com/zhangyongli/1271565