1. intruduction

      yum软件安装方式解决了RPM安装软件时的依赖关系问题,它可以同时配置多个资源库(Repository) ,使用简洁的配置文件/etc/yum.conf

yum 会自动下载所需的升级资源包并默认放在/var/cache/yum 缓存目录中

 

yum server:在yum server上存放了所有的RPM软件包,然后通过命令分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器上(可通过本地目录,HTTP,FTP,NFS等方式共享)。

yum client:配置好软件源以后,当需要安装某个软件时,通过yum server上记录的依赖性关系文件,从yum server自动全部下载依赖关系需要所有相关的软件并安装。

 

YUM软件仓库

使用YUM软件仓库,可以完成安装、卸载、自动升级rpm软件包等任务,能够自动查找并解决rpm包之间的依赖关系。特别是在拥有大量linux主机的本地网络中,构建一台源服务器可以大大缓解软件安装、升级等对于internet的依赖

YUM仓库可以作为本地源,也可以借助FTP,HTTP协议来发布,为面向网络的所有客户机提供软件源

 

Yum server源

YUM源有三大类

Base:相当于下载光盘里的DVD1

Extra:相当于下载光盘里的DVD2

EpelEpel官方获取的源

 

Yum源对应目录里一家有两个重要的目录Packagesrepodata,其中Packages上存放的是yum安装的rpm包。repodata中包含一些.xml的文件,它是yum索引文件,包含rpm包的信息,依赖关系等,yum的自动安装依赖于此配置文件。repomd.xml   #这个文件为MD5校验信息。

repodata 目录下都有filelist ,primary ,other,  记录软件包文件列表。

 

那么不管采用何种方式配置的YUM源,都会有Packages目录和包含.xml文件的repodata目录。无论搭建什么样的服务器(web,ftp,nfs,samba)只要共享的目录对应的是可用yum源即可

 

2.基于web的YUM服务器配置

OS: RHEL6.5

hostname:www.h.com

yum install httpd

vim /etc/httpd/conf/httpd.conf

ServerName www.h.com:80

 

cat>>/etc/hosts

172.16.72.1 www.h.com   h

<<EOF

 

cat >>/etc/sysconfig/iptables <<EOF

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

<<EOF

service httpd start

 

mkdir -p /var/www/html/yum_repos/RHEL7.1

cat>>/etc/fstab<<EOF

/home/yadelph/weiyun/百度云同步盘/software/rhel-server-7.1-x86_64-dvd.iso /var/www/html/yum_repos/RHEL7.1        iso9660,udf loop,defaults 0

EOF

mount /var/www/html/yum_repos/RHEL7.1

 

YUM客户端配置

 

cat>>/etc/hosts

172.16.72.1 www.h.com   h

<<EOF

 

cat>>/etc/yum.repos.d/rhel7.1.repo<<EOF

[RHEL7.1]

name=RHEL7.1

baseurl=http://www.h.com/yum_repos/RHEL7.1

enabled=1

gpgcheck=0

priority=1

<<EOF

 

yum repolist 测试YUM服务器源配置成功

 

3.基于FTP的YUM服务器配置

OS: RHEL6.5

hostname:h.ade.com

yum -y install vsftpd

iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT

service iptables save

service vsftpd start

mkdir /var/ftp/pub/RHEL7.1

 

cat >>/etc/fstab<<EOF

/var/www/html/yum_repos/RHEL7.1 /var/ftp/pub/RHEL7.1          none         rw,bind        0 0

<<EOF

mount /var/ftp/pub/RHEL7.1

 

YUM客户端配置

cat>>/etc/hosts

172.16.72.1 h.ade.com   h

<<EOF

 

cat>>/etc/yum.repos.d/rhel7.1ftp.repo<<EOF

[RHEL7.1ftp]

name=RHEL7.1 FTP

baseurl=ftp://h.ade.com/pub/RHEL7.1

enabled=1

gpgcheck=0

priority=1

<<EOF

 

yum repolist 测试成功

 

 

4.基于挂载光驱DVD或者ISO镜像配置本地YUM源

mount  -t  iso9660  -o  loop /home/yadelph/weiyun/百度云同步盘/software/rhel-server-6.6-x86_64-dvd.iso  /mnt/RHEL6.6

(/mnt/RHEL6.6 也可以是包含DVD源的光驱的挂载点)

 

如果需要开机即挂载此ISO镜像,可以用如下方法实现

cat>>/etc/fstab<<EOF

/home/yadelph/weiyun/百度云同步盘/software/rhel-server-6.6-x86_64-dvd.iso /mnt/RHEL6.6        iso9660,udf loop,defaults 0 0

<<EOF

 

cat /etc/yum.repos.d/RHEL6.6DVD.repo

[RHEL6.6DVD]

name = RHEL6.6 DVD

baseurl=file:///mnt/RHEL6.6

#failovermethod = priority

#gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-releas

enabled = 1

#mirrorlist = https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch

gpgcheck = 1

 

yum repolist 测试

 

 

5.使用rpm包创建自定义的yum源

现在的系统ISO镜像就是已经创建好的源,之前搭建的yum server源只是将ISO作为yum源使用服务器共享出去。如果要使用自己特定的rpm 包创建yum源就要使用

 

以利用RHEL7.1中的bash包升级RHEL7.0系统中的bash为例

mkdir /var/ftp/pub/Packages

cd /var/ftp/pub/RHEL7.1/Packages

cp bash-4.2.46-12.el7.x86_64.rpm /var/ftp/pub/Packages

cd  /var/ftp/pub/Packages

createrepo .

[root@h Packages]# ll

total 1016

-r--r--r-- 1 root root 1033616 Mar 15 13:12 bash-4.2.46-12.el7.x86_64.rpm

drwxr-xr-x 2 root root    4096 Mar 15 13:13 repodata

 

YUM客户端配置

[root@primary yum.repos.d]# cat rhel7.1.my.repo

[RHEL7.1my]

name=my packages from RHEL7.1

baseurl=ftp://h.ade.com/pub/Packages

enabled=1

gpgcheck=0

#priority=1

 

yum repolist 测试成功

 

[root@primary ~]# bash --version | head -1

GNU bash, version 4.2.45(1)-release (x86_64-redhat-linux-gnu)

 

yum update bash

 

[root@primary ~]# bash --version | head -1

GNU bash, version 4.2.46(1)-release (x86_64-redhat-linux-gnu)