0:说明
1.环境的准备:
安装环境时当前用户要有系统管理权限。但是在制作RPM包时请一定要用无系统管理权限的用户来进行操作。在开始一切的准备工作之前,请先保证您的工作环境下已经安装了gcc和make。关于这两个工具的安装方法,这里不再赘述。
1.1安装组件
安装rpm-build,用如下命令:
sudo yum install rpm-build
安装redhat-rpm-config,用如下命令:
sudo yum install redhat-rpm-config
PS:如果工作人员认为有必要的话可以安装rpmdev-newspec。这个小工具是用来生成.spec文件模板的。因为不是必选工具所以关于它的安装和使用方法在这里就不再赘述。
用下面的命令创建必要的文件夹,其中BUILD是用来保存打包过程中生成的临时文件用的;RPMS用来保存生成的二进制RPM包;SOURCES用来保存打包用的源文件(包括压缩文件);SPECS用来保存.spec脚本;SRPMS用来保存生成的源代码rpm包。
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
用下面的命令生成rpmbuild所需要的宏文件,这个文件里包含的是.spec中要引用的相对路径。文件里的内容可以手动配置和编写,格式符合要求即可。
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
2.制作.spec文件
这里用我们制作asterisk的二进制rpm包为例来说明制作.spec文件的方法。所有的.spec文件都可以参照和类比这种方式来制作。
2.1.spec文件的格式
用如下命令生成asterisk.spec
cd ~/rpmbuild
vi ./SPECS/asterisk.spec
Name: asterisk
Version: 1.8.15
Release: 1%{?dist}
Summary: Design by wanzhao
Group: Applications/Internet
License: GPL
URL: www.wanzhao.com
Source0: certified-asterisk-1.8.15-current.tar.gz
%description
Design by Wanzhao
%prep
cd $RPM_BUILD_DIR
tar xzvf ../SOURCES/certified-asterisk-1.8.15-current.tar.gz
%build
cd $RPM_BUILD_DIR/certified-asterisk-1.8.15-cert5
./configure
make
%install
cd $RPM_BUILD_DIR/certified-asterisk-1.8.15-cert5
make install
make samples
cd ../BUILDROOT
cp -fr /etc/asterisk ./asterisk-1.8.15-1.x86_64/
%files
/asterisk/
%clean
rm -rf $RPM_BUILD_DIR/certified-asterisk-1.8.15-cert5
2.2asterisk内容说明
Name:
软件包的名字,最终RPM软件包是用该名字与版本号,释出号及体系号来命名软件包的。
Version:
软件版本号。仅当软件包比以前有较大改变时才增加版本号。
Release:
软件包释出号。一般我们对该软件包做了一些小的补丁的时候就应该把释出号加1。
Copyright:
软件包所采用的版权规则。具体有:GPL(自由软件),BSD,MIT,Public Domain(公共域),Distributable(贡献),commercial(商业),Share(共享)等,一般的开发都写GPL。
Group:
软件包所属类别,具体类别有:
Amusements/Games (娱乐/游戏)
Amusements/Graphics(娱乐/图形)
Applications/Archiving (应用/文档)
Applications/Communications(应用/通讯)
Applications/Databases (应用/数据库)
Applications/Editors (应用/编辑器)
Applications/Emulators (应用/仿真器)
Applications/Engineering (应用/工程)
Applications/File (应用/文件)
Applications/Internet (应用/因特网)
Applications/Multimedia(应用/多媒体)
Applications/Productivity (应用/产品)
Applications/Publishing(应用/印刷)
Applications/System(应用/系统)
Applications/Text (应用/文本)
Development/Debuggers (开发/调试器)
Development/Languages (开发/语言)
Development/Libraries (开发/函数库)
Development/System (开发/系统)
Development/Tools (开发/工具)
Documentation (文档)
System Environment/Base(系统环境/基础)
System Environment/Daemons (系统环境/守护)
System Environment/Kernel (系统环境/内核)
System Environment/Libraries (系统环境/函数库)
System Environment/Shells (系统环境/接口)
User Interface/Desktops(用户界面/桌面)
User Interface/X (用户界面/X窗口)
User Interface/X Hardware Support (用户界面/X硬件支持)
Source:
源程序软件包的名字。如果有多个文件或部分可以写作:Source0……;source1……;Source3……;……
%description:
软件包详细说明,可写在多个行上。
%prep
这个段是预处理段,通常用来执行一些解开源程序包的命令,为下一步的编译安装作准备。%prep和下面的%build,%install段一样,可以执行shell命令。如我们在就加入了tar命令、cd命令等。
% build段
本段是编译段,所要执行的命令为生成软件包服务,如./configure、make 命令。
%install段
本段是安装段,其中的命令在安装软件包时将执行,如make install等命令。根据不同的软件,命令会有所不同。
%files段
本段是文件段,用于定义生成的rpm包所包含的文件。所以要打到rpm包里的文件都要在这里列出来。如果缺少这个段,则无法生成二进制的rpm文件。
%clean段
本段是生来清理由前面的步骤生成的垃圾文件的。同样,这个段由shell命令组成。
3.打包
如果只打包二进制rpm包可以用下面的命令:
rpmbuild –bb ****.spec
如果只打包源代码rpm包可以用如下命令:
rpmbuild –bs ****.spec
如果二进制rpm包和源代码rpm包都需要,则用如下命令:
rpmbuild –ba ****.spec
4.参考资料:
http://wiki.centos.org/HowTos/SetupRpmBuildEnvironment
http://tecadmin.net/create-rpm-of-your-own-script-in-centosredhat/
https://fedoraproject.org/wiki/How_to_create_a_GNU_Hello_RPM_package
原文链接:https://www.f2er.com/centos/379417.html