在那个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 同时打开多个文件