首页 > 代码库 > Centos下自建本地yum仓库

Centos下自建本地yum仓库


Centos系统中安装软件主要有yum安装和源码安装两种,源码安装的优势在于你可以根据你的需要自定义很多安装参数,但是他有个缺点就是每次都需要执行./configure && make && make install 以及当你需要卸载某个软件的时候你可能无法完全卸载干净,于是对于大多数情况来说,yum安装就成了最好的选择。centos官方的源一般是很慢的,因为是国外的,所以你可以选择用国内一些著名的比较官方的源,比如新浪,阿里,等等,当然你还可以选择自己搭建你的yum仓库,其实很简单,没有你想象的那么难。本文就简单介绍一下,如何搭建本地的yum仓库。


一,环境准备:

两台虚拟机,系统为Centos6.5.

192.168.1.22为yum仓库以下简称为A,需要安装apache或者nginx,或者其它的web服务。

192.168.1.23为实验机器以下简称为B。


二,建立仓库:(在A上执行)


这里采取HTTP的方式传输yum文件,因此我们建立一个总目录,同时建立一个虚拟主机。

mkdir /www/yum

mkdir -p 6.5/i386  6.5/x86_64  6.6/i386  6.6/x86_64  5.8/x86_64  5.8/i386

最简单的方式是将rpm包全部放在yum目录下,但是实际生产环境中我们可能需要区分不同的操作系统版本,比如5.8和6.5,6.6,还有不同的位数32位或64位,因此我们在yum目录下建立这些子目录。最终效果类似于:

tree /www/yum

├── 5.8

│   ├── i386

│   └── x86_64

├── 6.5

│   ├── i386

│   └── x86_64

└── 6.6

├── i386

└── x86_64

接下来增加一个虚拟主机文件,我用的是nginx,配置如下:

server

{

listen       8001;

server_name  fangqi.veone.cn

index index.html index.htm index.php;

root  /www/yum;


access_log  off;

}

别忘了reload。

如果你没有域名,你可以任意定义 比如yum.123.com,然后将这个域名和IP绑到B的/etc/hosts中。

这里我用的公网域名。实际生产环境中一般可以选择解析在内网DNS中。

接下来就可以放包了,将准备好的rpm包放到/www/yum/6.5/x86_64/路径下,

网上随便下一个包,我用的是lrzsz-0.12.20-1.x86_64.rpm

下一步是关键的一步,

cd www/yum/6.5/x86_64/

yum -y install createrepo

createrepo ./

这个命令可能会报错:

Traceback (most recent call last):

File "/usr/share/createrepo/genpkgmetadata.py", line 28, in <module>

import createrepo

ImportError: No module named createrepo

这是因为python版本被升级过的问题,进入genpkgmetadata.py,将首行的版本指定改为旧的路径即可,如:我原来是2.6的版本,后来升级成2.7版本,此时只需要将#!/usr/bin/python 改为#!/usr/bin/python2.6 ,然后再次执行此命令即可。

执行成功的输出:

Spawning worker 0 with 1 pkgs

Workers Finished

Gathering worker results


Saving Primary metadata

Saving file lists metadata

Saving other metadata

Generating sqlite DBs

Sqlite DBs complete

你会发现当前路径出现了一个repodata的文件夹,此时表示该yum仓库已经建立完毕了。

事实上我们之前定义的子文件夹,都是一个独立的yum仓库,因此都需要执行一下createrepo 这个命令,来生成yum仓库。




三,配置yum源:(在B上执行)


cd /etc/yum.repos.d

先备份原来的源,然后创建新的文件:

vi Centos-6.5.repo

写入

[CentOS-6.5]

name=CentOS-6.5

baseurl=http://fangqi.veone.cn:8001/6.5/x86_64

gpgcheck=0


最主要的baseurl不要写错。

然后更新本地yum缓存:

sudo yum clean all

sudo yum makecache


此时可以查询一下lrzsz应用:

yum list lrzsz

正常情况是可以看到结果的

如果能查询其他应用,例如gcc:

会提示no matching pachages to list


然后安装:

yum install -y lrzsz

测试lrz,lsz(rz,sz)命令。

到这一步基本就完成了,如果以后还要增加包,别忘了重复这三步:在源仓库执行createrepo,然后在服务器上执行yum clean all && yum makecache,看起来是有点繁琐,你可以尝试写脚本和灵活使用crontab来解决。

另外,每个不同的系统




最后,如果你不想这么麻烦,那么干脆使用阿里的yum好了,虽然我觉得挺简单的。

简单暴力三步曲如下:

第一步:备份你的原镜像文件,以免出错后可以恢复。

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

第二步:下载新的CentOS-Base.repo 到/etc/yum.repos.d/

CentOS 5

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo

CentOS 6

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

第三步:运行yum makecache生成缓存

yum clean all

yum makecache

然后就尽情安装吧。


本文出自 “linux-圣斗士” 博客,请务必保留此出处http://fangqi.blog.51cto.com/10856791/1880395

Centos下自建本地yum仓库