一、自建YUM源
现在基本上已经不再编译源码安装应用了,管理起来实在太麻烦,还是用RPM来管理各软件包,RPM/YUM的可维护性与方便比起编译源码强太多了,把自己用到的一些RPM包整理起来,自建一个YUM源,使用起来还挺方便的。

创建YUN源需要使用createrepo工具,yum -y install createrepo

然后就可以开始自建源了:

1)规划/创建目录

#mkdir -p /data/yum/centos/5/{i386,x86_64,noarch}

2)生成repodata

#cd /data
#createrepo -p -d -o yum/centos/5/i386 yum/centos/5/i386
#createrepo -p -d -o yum/centos/5/x86_64 yum/centos/5/x86_64
#createrepo -p -d -o yum/centos/5/noarch yum/centos/5/noarch

3)配置YUM源
在/etc/yum.repos.d/下新建一个文件,扩展名为.repo,如crsay.repo

[crsay]
name=crsay
baseurl=http://www.crsay.com/yum/centos/$releasever/$basearch/
enabled=1
gpgcheck=0
gpgkey=

#以下可忽略
[crsay-noarch]
name=crsay
baseurl=http://www.crsay.com/yum/centos/5/noarch/
enabled=1
gpgcheck=0
gpgkey=

至此自建源的工作搞定。

二、制作RPM包
为了不至于因为编译错误导致系统出错,使用一个普通用户来编译RPM包,当然,事先要安装rpmbuild工具,yum -y install rpm-build

开始:

#useradd kuka
#passwd kuka
#su kuka
#cd
$ mkdir -p ~/rpm/{BUILD,RPMS,SOURCES,SRPMS,SPECS,tmp}
$ mkdir ~/rpm/RPMS/{i386,i586,i686,noarch}

$ vi ~/.rpmmacros
  %_topdir	/home/kuka/rpm
  %_tmppath	/home/kuka/rpm/tmp

编译RPM,关键在于spec文件编写,这里是一个最简单的例子,仅仅是拷贝一些脚本到/usr/sbin目录

kukashpack.spec

%define name kukashpack
%define version 1.0
%define release 1

Summary: kuka sh tool packages
Name: %{name}
Version: %{version}
Release: %{release}
License:share
Group: Applications/User
BuildArch: noarch
BuildRoot: %{_builddir}/%{name}-root
URL: http://www.crsay.com
Distribution: whatever
Vendor: kuka (cracada@gmail.com)
Packager: cracada@gmail.com
Provides: kuka

%description
This package contains Some sh tools, just build for me

%prep
exit 0

%build
exit 0

%install
exit 0

%files
%defattr(0755,root,root)
/usr/sbin
/root


%clean
exit 0

保存文件,放入~/rpm/SPECS目录,然后

mkdir ~/rpm/BUILD/kukashpack-root
mkdir ~/rpm/BUILD/kukashpack-root/usr/sbin
mkdir ~/rpm/BUILD/kukashpack-root/root

把需要复制的文件放到上面新建的目录内,进入SPECS目录

$ rpm -bb kukashpack.spec 

进入RPMS目录,验证RPM包

$ rpm -qpi kukashpack-1.0-1.noarch.rpm
$ rpm -qpl kukashpack-1.0-1.noarch.rpm