一、前言
在之前介绍了yum的配置(详细请移步 http://windchasereric.blog.51cto.com/5419433/1676777)。但是有没有发现一个问题,虽然我们已将仓库指向一个可用的仓库服务器,但是随着Linux的不断升级和改版,我们是否还需要不断的去修改仓库的配置文件,如果只有一台还好,那如果我们有多台Linux系统,那么修改工作量将会很大,那么我们要怎么保证自己的仓库永远指向的是最新的仓库呢? 这就是yum函数的魅力。
二、yum函数介绍
在RPM介绍(详细请移步 http://windchasereric.blog.51cto.com/5419433/1676324 )中我们介绍2个国内比较有名的RPM包下载路径(mirrors.163.com 和mirrors.sohu.com),其中会有一个特殊文件夹路径,这为理解yum函数很重要,下面用 mirrors.163.com ,以CentOS6系统为例介绍
让我们查看yum仓库中的“CentOS-Base.repo”中的文件
其中画了红色框框的就是yum的函数
$releaserver:代表系统的版本,对Yum而言指的是redhat-releaser版本,指向发行版的主版本号;只替换为主版本号,如RedHat 6.5 ,则替换为6
$basearch:系统基本架构,如果是i686,i586等基本架构就为i386
$arch:系统架构
#比如我现在的系统是CentOS6.5,系统架构是x86_64,则 #baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/ 会自动替换为 baseurl=http://mirrors.163.com/centos/6/os/x86_64/
三、如何自建yum仓库
3.1、引言:
虽然系统自带的仓库已经很常用,只要连接到互联网我们就能很容易有获取到互联网的yum仓库。但是如果是在企业内网,企业内部不允许访问互联网,又或者如果企业服务器众多,如果都要从互联网去获取yum仓库,那将很占用带宽。基于这种情况,我们就需要自己在企业内部创建yum仓库。
3.2、自建仓库需要使用的命令介绍
createrepo(create repo):创建仓库,在自建仓库时,使用命令createrepo会自动帮我们生成repodata文件作为软件的仓库,而其目录下有四个必要文件:filelists.xml.gz,other.xml.gz,primary.xml.gz和repomd.xml,其中最重要的是repomd.xml文件。一般出现的找不到repodata目录或文件的错误的原因通常有三个:一是路径问题;二是没有生成repodate目录;三是*.repo配置文件冲突(这个需要特意注意)。
小贴士createrepo命令默认是没有安装,所以我们需要提前安装,createrepo的安装包为“createrepo-0.9.9-17.el6.noarch.rpm”,可以使用RPM或yum先将此程序包安装。
#安装方法: #yum -y install createrepo 或 rpm -ivh createrepo-0.9.9-17.el6.noarch.rpm (路径一定要写对)
3.3、自建yum仓库有2种方法
1)、基于关盘镜像创建yum仓库
2)、根据服务自建提供yum仓库的服务器(ftp、http、nfs)
3.4、基于关盘镜像创建yum仓库
3.4.1、先将光盘挂载至/mnt目录下
mount /dev/cdrom /mnt
3.4.2、配置yum仓库文件(详细方法请移步查阅 http://windchasereric.blog.51cto.com/5419433/1676777)
[[email protected] yum.repos.d]# vim /etc/yum.repos.d/local-media.repo #如果local-media.repo不存在,请直接创建 [Meida-repo] name=This is Local media repo baseurl= #指向光盘镜像路径 enabled=1 #是否启动该仓库 gpgcheck=0 #是否检查包完整性 [[email protected] yum.repos.d]# yum clean all #清除所有的包缓存和元数据 [[email protected] yum.repos.d]# yum list #列出所有的仓库和程序包
3.5、根据服务自建提供yum仓库的服务器(这里以http服务为例)
3.5.1、首先安装http服务
yum -y install httpd 或 rpm -ivh httpd
3.5.2、关闭Linux防火墙和Selinux
#防火墙和Selinux可能会影响用户访问HTTP,所以这里需要将其禁用 [[email protected] yum.repos.d]# service iptables stop #关闭防火墙服务 [[email protected] ~]# chkconfig iptables off #关闭防火墙自动启动 [[email protected] yum.repos.d]# getenforce #查看Selinux状态 Enforcing表示启用 Permissive表示不启用 Enforcing [[email protected] yum.repos.d]# setenforce 0 #关闭Selinux 0表示关闭 1表示开启 [[email protected] yum.repos.d]# getenforce Permissive [[email protected] ~]# vim /etc/selinux/config #关闭Selinux开机启动,编辑confg文件,将其中SELINUX字段改为如下设置 SELINUX=disabled
3.5.3、启动httpd服务和开机自动服务
[[email protected] yum.repos.d]# service httpd start #开启httpd服务 [[email protected] yum.repos.d]# chkconfig on #设置httpd服务开机自动启动 [[email protected] ~]# netstat -tunlp | grep http #查看http服务是否已启用 tcp 0 0 :::80 :::* LISTEN 1532/httpd
3.5.4、编辑httpd的文档目录
#httpd默认的目录文档路径为/var/www/html
[[email protected] html]# mkdir /var/www/html/rpm-repo #创建仓库路径
[[email protected] rpm-repo]# cp -a /mnt/Packages/xcb* /var/www/html/rpm-repo/ #拷贝RPM程序包为测试使用
3.5.5、使用createrepo配置yum仓库
[[email protected] rpm-repo]# createrepo /var/www/html/rpm-repo/
3.5.6、验证和查看http仓库的文件
3.5.7、配置和验证yum仓库
[[email protected] yum.repos.d]# vim /etc/yum.repos.d/local.repo #编辑yum仓库文件,让仓库路径指向http的yum仓库 [http-repo] name=http yum repo baseurl=http://192.168.80.150/rpm-repo enabled=1 gpgcheck=0 [[email protected] ~]# yum list
实验完成!
小贴士:之前有介绍过yum的函数,有兴趣的话可以在这个实验中也尝试使用yum函数调用仓库,熟悉使用yum仓库对日后工作有很大帮助。