主要完成了下面4個(gè)工作
1. 創(chuàng)建一個(gè)本地的目錄結(jié)構(gòu),以存放 rpm 包
2. 啟動(dòng)一個(gè) apache,使這些文件能夠遠(yuǎn)程訪問(wèn)
3. 寫一個(gè) spec,并且用 rpmbuild 做成一個(gè)安裝包,用來(lái)在機(jī)器上安裝新的 repository 位置
4. 使用 yum downloadonly plugin 將需要的 rpm 包放到本地目錄下,然后使用 createrepo 命令創(chuàng)建 metadata
本來(lái)是希望能有一個(gè)類似于 nexus 這樣的 proxy host server 將遠(yuǎn)程的 package cache 下來(lái),找來(lái)找去,也找到了一個(gè) nexus yum plugin,但這個(gè) plugin 只支持手工的 deploy rpm package 到 nexus 上面,不能做 proxy 方式的。
寫寫步驟和遇到的問(wèn)題吧。
準(zhǔn)備工作
- 安裝 createrepo, yum install createrepo
- 安裝 yum download only plugin, yum -y install yum-downloadonly
- 安裝 rpmbuild, yum -y install rpm-build
- 確認(rèn)已經(jīng)安裝了 apache nginx 之類的 http server
服務(wù)器步驟
- 首先是創(chuàng)建目錄結(jié)構(gòu),比如 mkdir -p /data/yum/centos/6/x86_64
- 先增加 chef 的源,rpm -Uvh http://rbel.frameos.org/rbel6
- 然后是通過(guò) yum -y install rubygem-chef-server –downloadonly –downloaddir=/data/yum/centos/6/x86_64
- 這時(shí),已經(jīng)可以去掉 chef 的公共源了,rpm -e rbel6-release
- 創(chuàng)建本地庫(kù)的 metadata,createrepo /data/yum/centos/6/x86_64,還有一些參數(shù)可用,比如 -p, pretty xml, -d create sqlite database files
- 配置 apache,修改 /etc/httpd/conf/httpd.conf,修改 DocumentRoot 和 Directory 位置,改為 /data,并啟動(dòng) httpd -k start,也可以使用 chkconfig –level 3 https on,每次開(kāi)機(jī)啟動(dòng)
客戶端步驟
- 首先要制作安裝 repository 位置的 rpm 包
- 創(chuàng)建文件 haha.repo,放到 /root/rpmbuild/SOURCES 目錄下,這個(gè)是將來(lái) copy 到客戶端的 /etc/yum.repos.d/ 目錄下的配置文件,內(nèi)容為
[haha] name=haha baseurl=http://192.168.157.131/yum/centos/$releasever/$basearch/ enabled=1 gpgcheck=0
- 再創(chuàng)建文件 build spec 文件,放到 /root/rpmbuild/SOURCES 目錄下,是為了創(chuàng)建 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,做出一個(gè) rpm 包,位置在 /root/rpmbuild/RPMS/noarch 下面
- 制作一次 rpm 后,就可以一直使用了,rpm -ivh xxx.rpm 就可以了
參考了
1. 自建yum源與制作RPM安裝包yum源
2. yum只下載rpm包不自動(dòng)安裝方法
3. Installing Chef Server 0.10 in RHEL 6