Linux下的yum

  1. 云栖社区>
  2. 袋鼠云技术团队>
  3. 博客>
  4. 正文

Linux下的yum

未央& 2019-08-17 17:56:10 浏览1312

一、什么是yum

全称为:yellow dog updater,modified,是基于rpm但更胜于rpm的软件管理工具。Yum软件仓库的作用是为了进一步简化RPM管理软件的难度以及自动分析所需软件包及其依赖关系的技术。可以把Yum想象成是一个硕大的软件仓库,里面保存有几乎所有常用的工具,而且只需要说出所需的软件包名称,系统就会自动为您搞定一切。

用yum只能查到rpm包软件的信息,不能查到源代码软件的信息,yum只能安装rpm格式的软件包。yum的优点就是自动解决rpm包的依赖关系。

同一服务器下,可以安装多个yum源,并且可以同时使用;即便有不能使用的,只要有一个可以使用也是可以的。可以用“yum repolist all”命令查看当前有哪些yum源。

二、yum相关文件

RHEL默认已经安装yum,yum的主要软件包:yum-3.2.22-26.el5

yum的缓存目录:/var/cache/yum。存放从服务器上下载下来的索引文件,一般说的清空缓存就是清空缓存目录。

yum的日志文件:/var/log/yum.log

yum的配置文件(服务器端):/etc/yum.conf(了解即可,一般无须修改)

yum的配置文件(客户端):/etc/yum.repos.d/目录下以. repo结尾的文件
这个配置文件非常重要,配置不正确会影响仓库的使用,这个文件的常用内容格式如下:

[local_yum]
name=local_yum
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

[local_yum]:表示Yum 软件仓库唯一标识符,避免与其他仓库冲突,名字自取;同一个服务器下可以配置多个yum源仓库,分别对应不同的以.repo结尾的文件,所以这里要起不同的名字;
name:yum仓库名字,以识别仓库;
baseurl:这个参数指定yum源仓库所在位置,提供的方式包括 FTP(ftp://..)、HTTP(http://..)、本地(file://…),这里是本地仓库,所以以file://开头,后面是具体路径;
enabled:表示此源是否可用:1为可用,0 为禁用
gpgcheck:设置此源是否校验文件:1 为校验,0 为不校验
gpgkey:若gpgcheck参数开启校验,则需要通过该参数指定公钥文件地址

三、yum类型介绍

yum源的类型可以分为三种:FTP、HTTP和本地。这可以在yum的配置文件的baseurl参数中体现出来,对应的参数值分别以ftp、http和file开头;而ftp和http类型的yum又称为网络yum。

3.1、本地yum

本地类型的yum源就是服务端和客户端在同一台服务器上,一般来说在虚拟机上,都是将光盘挂载在一个合适的目录上,然后在配置文件baseurl参数指定好这个挂载路径,即完成了本地yum的配置。其中光盘挂载相当于进行服务端配置,操作配置文件相当于客户端配置。
本地yum只为本地服务器提供yum源。

3.2、网络yum(ftp)

FTP类型的yum源就是把服务端和客户端分离在不同的机器上,用一个服务器专门作为yum源服务器,其它服务器只要配置好yum配置文件,就可以使用该yum仓库,这就是FTP类型的yum仓库,但是这种yum一般不是暴露在公网上的。

3.3、网络yum(http)

http类型的yum源就是在公网上由别的公司或者个人搭建好的yum服务端,此yum对所有人可用,只要机器可以与公网相通并在本地服务器配置好yum配置文件即可使用。

FTP和HTTP是两种协议,是下载时进行传输的两种协议。

四、yum搭建部署

既然要使用Yum软件仓库,就要先把它搭建起来,然后将其配置规则确定好才行。下面分别以搭建本地yum和ftp网络yum源来讲解yum的搭建过程。

4.1 本地yum搭建

以虚拟机服务器的搭建来说,一般都是先挂载光盘,然后配置文件。具体过程如下:
1、先保证镜像光盘处于已连接:
image
这是mac系统下的虚拟机,光盘都是默认处于已连接状态。

2、创建挂载目录,并挂载光盘
[root@cos7-jiang ~]# mkdir -p /media/cdrom
[root@cos7-jiang ~]# mount /dev/cdrom /media/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
image
上图/dev/sr0即表示光盘文件,目前已挂载在/media/cdrom文件下

3、配置yum的配置文件
进入到/etc/yum.repos.d/目录中(因为该目录存放着 Yum 软件仓库的配置文件),将该目录下的所有文件转移到其他目录下,创建一个新的配置文件local.repo,名字任取但必须以.repo结尾。内容如下:

[root@cos7-jiang yum.repos.d]# cat local.repo
[local_yum]        #Yum 软件仓库唯一标识符,避免与其他仓库冲突
name=local_yum     #Yum 软件仓库名称描述,易于识别仓库用处
enabled=1       #设置此源是否可用;1 为可用,0 为禁用
baseurl=file:///media/cdrom     #这里指定了前面的挂载路径,很重要
gpgcheck=0    #设置此源是否校验文件;1 为校验,0 为不校验

4、检验yum仓库是否可用
使用“yum install httpd -y”命令检查 Yum 软件仓库是否已经可用;
也可以使用yum list命令来检查是否有软件包信息输出,有大量软件包输出表示可用;

4.2 ftp网络yum搭建

网络yum的搭建需要完全自己手动部署:从服务端放置rpm包,建立包之间的依赖关系到,到客户端的文件配置。这里准备两台ECS服务器,以一台服务器作为yum服务端,另一台作为客户端使用,相互之间以内网通信。
image

1、搭建服务器端:
1.1、创建仓库(存放所有rpm包)
在服务器A的/var/ftp目录下创建,mkdir /var/ftp/yum(目录名随意)。如果/var下面没有ftp目录,必须先创建一个ftp目录(不能是其他目录)。
向仓库里放一些.rpm格式的软件包:cp -a /mnt/Packages/*.rpm /var/ftp/yum/

1.2、创建索引文件
执行命令:createrepo /var/ftp/yum
创建完成后会在yum目录下生成repodata目录,里面有索引文件。前提是要有createrepo软件,没有的安装:yum install createrepo。

1.3、安装vsftpd软件,并启动:
安装前先关闭防火墙和selinux:
service iptables stop
vim /etc/sysconfig/selinux后,设置SELINUX=disabled。设置完毕后重启虚拟机
安装vsftpd:
在/etc/ftp/yum下执行:rpm -ivh vsftpd-2.2.2-21.el6.x86_64.rpm (/etc/ftp/yum就有vsftpd的rpm软件包)。
启动vsftpd服务:service vsftpd start

2、客户端配置
2.1、建立仓库资源配置文件,在服务器B的/etc/yum.repos.d目录下,vim ftp_yum.repo输入:

[ftp_yum]
name=ftp_yum
baseurl=ftp://172.19.171.14/yum/
gpgcheck=0
enabled=1

2.2、清空缓存 yum install all,使用命令yum list查看是否可用;

2.3、可以安装软件;

4.3 说明

创建仓库索引文件需要用到createrepo命令,一般linux上都默认没有安装,需要另外安装。
如果服务端新增了一些rpm包,那么需要使用createrepo命令更新仓库索引文件,命令createrepo --update /var/ftp/yum即可。

五、yum的基本工作流程

服务器端:
在服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。
客户端:
如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的记录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。

六、yum相关命令

yum的相关命令:
yum repolist all:列出所有的仓库。如果你在本地服务器的/etc/yum.repos.d/目录下配置了多个以.repo结尾的文件,那么表示你的服务器可以从多个仓库处来下载安装软件,当然前提是这些仓库都是可用状态;
yum list all:列出仓库中所有的软件包;
yum info 软件包名称:查看软件包信息;
yum install 软件包名称:安装软件;
yum reinstall 软件包名称:重新安装软件;
yum update 软件包名称: 升级软件;
yum remove 软件包名称:移除软件包;
yum clean all :清除所有仓库缓存;
yum grouplist:查看系统中已经安装的软件包组;
yum check-update:检查可更新的软件包
yum whatprovides 文件名:查找文件属于哪个软件,相当于rpm -qf