在那个linux系统里编译,就只能在那个系统里装

Rpm  -qc  配置文件

Rpm  -qd  相关文档

rpm  -q  --scripts  安装执行过的脚本

Rpm  -qi    查询相关信息

Rpm 包必须属于一个组

可以通过cat /usr/share/doc/rpm-XXX/GROUPS  查看所有组

 

包的大小,签名,汇总,描述,源RPM包生成,日期等

最好普通用户

useradd wang

echo 123456 | passwd --stdin wang

chown wang:wang /home/wang/httpd-2.2.32.tar.gz

yum -y install rpm-build

生成命令 rpmbuild

 

httpd-2.2.32.tar.gz      源码可以查询名字版本之类的

 

Vim  httpd.spec                                       spec结尾

Name:          httpd      名字

Version:        2.2.32      版本

Release:        6.el6       子版本(编译安装的linux版本)

Summary:        first   rpmbuild     描述信息

 

Group:          Applications/Text       必须属于一个包组(可以通过上面查看)

License:        GPL                  可查看别的(也可以直接这样写)

 

URL:            http://www.http.com    一个URL地址(一般为作者)

Source0:    httpd-2.2.32.tar.gz        源码包(名字)【另一种写法%{name-%{version}.tar.gz}

 

BuildRoot:     %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) (编译之前的一个测试目录)

BuildRequires:    gcc,gcc-c++                            所依赖其他的包

#Requires:         /bin/mkdir                          所依赖其他的命令

可以不写

 

#BuildArch:      noarch           支持的架构【x86_64,noarch(代表所有架构都可以)可以不写

 

%description

First  rpm   package  httpd                 描述信息

 

%prep                                     安装之前做啥

%setup -q                                  代表解压

 

 

%build                                     包的编译前配置,以及编译

./configure  --prefix=/tmp/usr/src/httpd           等  

                      

                                             可以指定参数(没有则不管)

make                                            不指定参数

 

%install

rm -rf %{buildroot}                         清除目录                      

make install DESTDIR=%{buildroot}             在上文提到的在BuildRoot: 中的目录下测试

 

 

%clean

rm -rf %{buildroot}                  删除测试目录

 

 

%files                             将源码安装的一些东西,装到要装的目录(先装一次)

%defattr(-,root,root,-)                  权限,属主,属组(权限不定义就走默认子网掩码)

/tmp/usr/src/httpd/bin/*

/tmp/usr/src/httpd/build/*

/tmp/usr/src/httpd/cgi-bin/*

%config  /tmp/usr/src/httpd/conf/*

/tmp/usr/src/httpd/error/*

/tmp/usr/src/httpd/htdocs/*

/tmp/usr/src/httpd/icons/*

/tmp/usr/src/httpd/include/*

/tmp/usr/src/httpd/lib/*

%dir  /tmp/usr/src/httpd/logs

%doc  /tmp/usr/src/httpd/man/*

%doc  /tmp/usr/src/httpd/manual/*

/tmp/usr/src/httpd/modules/*

 

%post       相当于装包后脚本(有的源码是转换后二进制的,此处就不能增加了)

cp  /tmp/usr/src/httpd/bin/httpd  /etc/init.d/myhttpd

sed -i '1a # chkconfig:  2345 85 15' /etc/init.d/myhttpd

sed -i '2a #  description: apache web server' /etc/init.d/myhttpd

chkconfig --add myhttpd

 

%changelog                                 改变日志(一些基本信息)

* Wed  Mar 26 2014  zhangzhg <wang.baidu.com>               *必须写的形式

- first rpm from http-2.2.32                                     -必须写的形式

 

 

 

rpmbuild httpd.spec                   生成目录,有错误类型的提示信息,属正常

error:  File /home/tom/rpmbuild/SOURCES/httpd-2.2.25.tar.gz: No such file or  directory

 

cp httpd.spec rpmbuild/SPECS/

cp httpd-2.2.32.tar.gz rpmbuild/SOURCES/

 

rpmbuild -ba rpmbuild/SPECS/httpd.spec                 生成RPM

 

如果编译出错,修改完需要删除、/rpmbuild/BUILD/*

/rpmbuild/BUILDROOT/*

 

 

安装完成后,会在在RPMS目录下生成rpm包,在SRPMS目录下生成源码包:

ls rpmbuild/RPMS/x86_64/

ls rpmbuild/SRPMS/

 

安装测试

Vim   -O 同时打开多个文件