前言
前面介绍了yum的配置,对于YUM源,Centos虽然默认会提供几个自己的YUM源,但下载速度可能相比较国内的可能会慢一些。互联网上有几个YUM源还是比较不错的,如163的mirrors.163.com、搜狐的mirrors.sohu.com、阿里的mirrors.aliyun.com。虽然我们可以将我们服务器的源指向一个可用的仓库服务器,但是随着Linux的不断升级和改版,我们是否还需要不断的去修改仓库的配置文件,如果只有一台还好,那如果我们有多台Linux系统,那么修改工作量将会很大,那么我们要怎么保证自己的仓库永远指向的是最新的仓库呢? 这就是yum函数的魅力。
YUM函数介绍
首先不管我们使用那家的YUM源,其中会有一个特殊文件夹路径,这为理解yum函数很重要,下面用 mirrors.163.com ,以CentOS6系统为例介绍。
让我们查看yum仓库中的“CentOS-Base.repo”中的文件
其中画了红色框框的就是yum的函数
$releaserver:代表系统的版本,对Yum而言指的是redhat-releaser版本,指向发行版的主版本号;只替换为主版本号,如RedHat 6.5 ,则替换为6。
$basearch:系统基本架构,如果是i686,i586等基本架构就为i386,如果是X86_64就是X86_64了。
$arch: 系统架构
比如我现在的系统是CentOS6.5,系统架构是x86_64,则
1 2 3 |
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/ #会自动替换为 baseurl=http://mirrors.163.com/centos/6/os/x86_64/ |
自建YUM仓库
虽然系统自带的仓库已经很常用,只要连接到互联网我们就能很容易有获取到互联网的yum仓库。但是如果是在企业内网,企业内部不允许访问互联网,又或者如果企业服务器众多,如果都要从互联网去获取yum仓库,那将很占用带宽。基于这种情况,我们就需要自己在企业内部创建yum仓库。
一、自建仓库需要使用的命令介绍
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先将此程序包安装。
1 |
$ yum -y install createrepo |
二、自建YUM仓库的方法
1)基于光盘镜像创建YUM仓库
2)同步互联网的YUM源
这里使用基于光盘镜像的方式自建YUM源
1)提供一个web服务器
1 2 3 4 |
$ service iptables stop #关闭防火墙服务 $ setenforce 0 #关闭Selinux 0表示关闭 1表示开启 $ yum -y install httpd #安装Httpd $ service httpd restart #启动httpd |
2)给自建仓库提供数据
1 2 3 4 5 |
$ mkdir /var/www/html/rpm-repo #在httpd的目录根目录下创建仓库路径 $ mount /dev/cdrom /mnt #挂载ISO镜像 $ cp -a /mnt/Packages/* /var/www/html/rpm-repo/ #拷贝RPM程序包自建目录中 $ ls /var/www/html/yumrepo/ | wc -l #统计看一下复制的包 3997 |
3)使用createrepo给自建仓库提供元数据
1 2 3 4 5 6 7 8 9 10 |
[root@localhost ~]# createrepo /var/www/html/yumrepo/ Spawning worker 0 with 3995 pkgs Workers Finished Gathering worker results Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete |
1 2 3 4 5 6 7 8 9 |
[root@localhost ~]# ll /var/www/html/yumrepo/repodata/ 总用量 16956 -rw-r--r--. 1 root root 3827729 4月 20 22:50 06108afec6f6706484b1cfb208a7bcdfff16f1d59a403a648dbd0b7f90900795-filelists.xml.gz -rw-r--r--. 1 root root 4280159 4月 20 22:50 15a8382f66225ee7ef86b9733c90d9e079ef6534ed4fbffae05556fe7ab45071-filelists.sqlite.bz2 -rw-r--r--. 1 root root 2015635 4月 20 22:50 3f4b4f949964122db2de66627cc1b4d3c8ad779412925d593c6a96f55b559559-other.xml.gz -rw-r--r--. 1 root root 1853348 4月 20 22:50 4aa2d5502b12e4482f91895ff7035323cb650d401e391abbc0c5ed352fba17e3-other.sqlite.bz2 -rw-r--r--. 1 root root 3476510 4月 20 22:50 62d1a46b71de72f2587a266452171fb5e053e39912f3d974a912f97d70a6039b-primary.sqlite.bz2 -rw-r--r--. 1 root root 1893534 4月 20 22:50 faeb06ff40e927af1384bb800251961ba26f8a6ce6660adcf14af83846887bb9-primary.xml.gz -rw-r--r--. 1 root root 3017 4月 20 22:50 repomd.xml |
可以看到/var/www/html/yumrepo/repodata目录已经自动生成所需要的所有元数据,仓库信息等文件。
4)验证和查看http仓库的文件
5)配置和验证yum仓库
编辑yum仓库文件,让仓库路径指向http的yum仓库
1 2 3 4 5 6 |
$ vim /etc/yum.repos.d/local.repo [http-repo] name=http yum repo baseurl=http://192.168.80.150/rpm-repo enabled=1 gpgcheck=0 |
$ yum list
1 2 3 4 5 6 |
[root@localhost yum.repos.d]# yum repolist Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile repo id repo name status http-repo http yum repo 3,995 repolist: 3,995 |
如果需要验证RPM包的合法性就需要复制/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6到自建仓库中去,另外还需要在local.repo文件中开启gpgcheck=1。如下操作:
1 |
$ cp /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 /var/www/html/rpm-repo |
1 2 3 4 5 6 7 |
$ vim /etc/yum.repos.d/local.repo [http-repo] name=http yum repo baseurl=http://192.168.80.150/rpm-repo enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 |
Rsync同步官方YUM源
当自己的YUM仓库建立好了以后,可能需要同步官方的YUM源,另外也可能需要同步一些比如Fedora EPEL的YUM源。如果对方支持rsync的话就好说了,直接可以使用rsync同步。
如:Centos官方yum源
1 |
$ rsync -avrtH --delete rsync://mirrors.kernel.org/centos/ /yum/ |
如:Fedora官方yum源
1 |
$ rsync -avrtH --delete rsync://dl.fedoraproject.org/fedora-epel/ /yum/ |
更多其他yum源,可以查询中国科学技术大学做的一个开源的yum源代理站点:http://mirrors.ustc.edu.cn/
其Rsync镜像地址:
- cernet.mirrors.ustc.edu.cn
- telecom.mirrors.ustc.edu.cn
- mobile.mirrors.ustc.edu.cn
中国科学技术大学提供:
中国科学技术大学Linux用户协会(科大 LUG)是由在校的 GNU/Linux 爱好者发起并组成的全校性群众团体,是一个以推广自由软件文化、宣传自由软件价值为目的的协会组织。了解更多