费了好大的力气,终于把本地的 yum repository 建起来了。

主要完成了下面4个工作

1. 创建一个本地的目录结构,以存放 rpm 包
2. 启动一个 apache,使这些文件能够远程访问
3. 写一个 spec,并且用 rpmbuild 做成一个安装包,用来在机器上安装新的 repository 位置
4. 使用 yum downloadonly plugin 将需要的 rpm 包放到本地目录下,然后使用 createrepo 命令创建 metadata

本来是希望能有一个类似于 nexus 这样的 proxy host server 将远程的 package cache 下来,找来找去,也找到了一个 nexus yum plugin,但这个 plugin 只支持手工的 deploy rpm package 到 nexus 上面,不能做 proxy 方式的。

写写步骤和遇到的问题吧。

准备工作

  • 安装 createrepo, yum install createrepo
  • 安装 yum download only plugin, yum -y install yum-downloadonly
  • 安装 rpmbuild, yum -y install rpm-build
  • 确认已经安装了 apache nginx 之类的 http server

服务器步骤

  • 首先是创建目录结构,比如 mkdir -p /data/yum/centos/6/x86_64
  • 先增加 chef 的源,rpm -Uvh http://rbel.frameos.org/rbel6
  • 然后是通过 yum -y install rubygem-chef-server –downloadonly –downloaddir=/data/yum/centos/6/x86_64
  • 这时,已经可以去掉 chef 的公共源了,rpm -e rbel6-release
  • 创建本地库的 metadata,createrepo /data/yum/centos/6/x86_64,还有一些参数可用,比如 -p, pretty xml, -d create sqlite database files
  • 配置 apache,修改 /etc/httpd/conf/httpd.conf,修改 DocumentRoot 和 Directory 位置,改为 /data,并启动 httpd -k start,也可以使用 chkconfig –level 3 https on,每次开机启动

客户端步骤

  • 首先要制作安装 repository 位置的 rpm 包
  • 创建文件 haha.repo,放到 /root/rpmbuild/SOURCES 目录下,这个是将来 copy 到客户端的 /etc/yum.repos.d/ 目录下的配置文件,内容为
    [haha]
        name=haha
        baseurl=http://192.168.157.131/yum/centos/$releasever/$basearch/
        enabled=1
        gpgcheck=0
  • 再创建文件 build spec 文件,放到 /root/rpmbuild/SOURCES 目录下,是为了创建 rpm 包用的,haha.spec
    Summary:       haha
        Name:          haha
        Version:       0.1
        Release:       1
        Source0:       haha
        Group:         Applications/Internet
        License:       GPLv2+
        URL:           http://192.168.157.131/yum/
        #BuildRoot:     %{_tmppath}/%{name}-%{version}-root
        BuildArch:     noarch
    %description The haha yum repo #%prep #%setup -q %install mkdir -p $RPM_BUILD_ROOT/etc/yum.repos.d install -m 0644 -p %{SOURCE0} $RPM_BUILD_ROOT/etc/yum.repos.d
    %clean rm -rf ${RPM_BUILD_ROOT} %files /etc/yum.repos.d/haha.repo
  • 使用 rpmbuild -ba haha.spec,做出一个 rpm 包,位置在 /root/rpmbuild/RPMS/noarch 下面
  • 制作一次 rpm 后,就可以一直使用了,rpm -ivh xxx.rpm 就可以了

参考了
1. 自建yum源与制作RPM安装包yum源
2. yum只下载rpm包不自动安装方法
3. Installing Chef Server 0.10 in RHEL 6

发表评论

电子邮件地址不会被公开。