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
Epel:Epel官方获取的源
Yum源对应目录里一家有两个重要的目录Packages和repodata,其中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.基于的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)