大家在linux上使用包管理软件的过程中,也会偶尔编译一些比较新潮的软件在linux机器上使用,但是当你要把这个新潮的软件在全网部署的时候怎么办?肯定是先编译好好,然后打包好,利用批量工具传输到全网机器上,然后再批量部署。既然linux发行版一般都提供了现成的包管理工具,我们为什么要重复造轮子呢?前提是你有自己的私有更新源。一般稍微有点规模的互联网公司都会选择自建私有更新源,一方面是节省IDC出口流量,一方面安全性高。
最近我就碰到了这个需求,有一大批公司内部根据自己的业务情况编译的软件,虽然这些软件在公有软件仓库上也有,但是要么版本不符合我们要求,要么安装后部署路径不符合我们要求,所以公司定制了一批软件包,这批源码编译的软件包已经被我打包成rpm包,这个如何打包rpm包可以参考这里。然后就是把这些软件包加入自己的私有仓库中,之前我们从公网上同步了centos的软件仓库,这样只要把这些包加入这个我们同步下来的base软件仓库就可以了。但是骚年啊,这样后面你会崩溃的,我也是做到这一步才意识到之前有多蠢,之前我们在debian上就是这样操作的,打包好的deb文件直接加入同步下来的base软件仓库中,你想想社区中linux大牛岂会让你这么容易把一个包加入进去,这样要修改一系列软件仓库的校验文件,这些文件隐藏在哪里资料还真不好找。虽然最终成功了,但是过程很麻烦。不过转念一想,我为什么非得把我自己的包加入base软件仓库呢(安全限制多多)?我不可以再启动一个仓库嘛(自由发挥),柳暗花明又一村啊。
下面就来实战一下,centos本身就提供了这样的工具(createrepo),真是大快人心啊,操作起来so easy,相信debian下也有类似的工具。
1 安装createrepo
yum install createrepo.noarch
2
创建一个单独的目录,存放自己打包好的rpm包,
/opt/myrepo
mkdir -p /opt/myrepo
3
初始化私有仓库目录
/opt/myrepo
createrepo /opt/myrepo

4 看看初始化的目录里面都有什么
5 现在只要把你的rpm包拷贝进/opt/myrepo的顶级目录,然后再次使用createrepo初始化即可
cp /root/zabbix_agentd-2.0.4-6.x86_64.rpm /opt/myrepo/
createrepo --update /opt/myrepo/

6 新建yum配置文件bigdata-source.repo
touch /etc/yum.repos.d/myrepo-source.repo
内容如下:
[Myrepo]
name = This is myrepo
baseurl = file:///opt/myrepo/
7
更新yum cache
yum clean all
yum makecache
