参考的资料:《鸟哥的Linux基础篇》(此书第三版使用centos5.x)
使用系统:centos6.5
rpm和srpm文件都是对/root/rpmbuild/里面的源码和配置文件编译打包得到的
centos6.5与centos5.x在这篇里的区别
与/root/rpmbuild/对应的目录,在centos5.x里是/usr/src/redhat/
同时,centos6.5比5.x多了一个BUILDROOT,用来部分替代BUILD暂存编译过程中的数据(没在5.x上面试过,所以不能把BUILDROOT对BUILD的替代说明白)
(若没有发现/root/rpmbuild/这个目录,可以尝试安装rpm-build
yum install -y rpm-build
)
前期工作:把源码与makefile打包成tar.gz格式放到: /root/rpmbuild/SOURCES下面
下面,就是最重要的设置文件*.spec的编写(这里用参考资料的例子)
[root@www SPECS]# vim main.spec
<pre name="code" class="plain">Name: main
Version: 0.1
Release: 1%{?dist}
Summary: calculate sin and cos value.
Group: vampire'Home
License: GPL
URL: http://linux.vampire.org
Source0: main-0.1.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
#BuildRequires:
#Requires:
%description
This package will let you input your name and calculate sin cos value.
%prep
%setup -q
%build
make
%install
rm -rf %{buildroot} //%{buildroot}即/root/rpmbuild/BUILDROOT/main-0.1-1.el6.i386也就是刚才设置的Buildoot
mkdir -p %{buildroot}/usr/local/bin/main //此处原书上少写了“/main”编译时会出现not found的提示
make install PRM_INSTALL_ROOT=%{buildroot}
%files
/usr/local/bin/main //软件安装时的位置
%changelog
* Fri Jul 05 2014 vampire
- build the program
这个例子中没有特别需要设置依赖属性需求的地方。程序的实质就是一个main调用3个简单的子程序
rpmbuild -ba main.spec具体过程(大致按main.spec的顺序进行):
1. 先进入到 BUILD 这个目录中
2. 依照 *.spec 档案内的 Name 不 Version 定丿出工作的目录名称,以我们上面的例子为例,那么系统就会在 BUILD 目录中先删
除 main-0.1 的目录,再重新建立一个main-0.1 的目录,进去该目录;
3. 对SOURCES下的tar.gz解压缩到上面进去的目录
4. 再来开始 %build 及 %install 的设定与编译!
5. 将rpm和sprm文件放到相应的地方去(/root/RPMS/i386、/root/SRPMS)
over!