首页 > 代码库 > 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仓库