老尸 发表于 2015-1-14 20:39:31

来一发CentOS6.x下制造RPM包

如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!0:申明

本文以centOS6.5下打包asterisk的装置包为例来讲明成绩。请读者诸君触类旁通。感谢!
1.情况的筹办:

装置情况时以后用户要有体系办理权限。可是在制造RPM包时请必定要用无体系办理权限的用户来举行操纵。在入手下手统统的筹办事情之前,请先包管您的事情情况下已装置了gcc和make。关于这两个工具的装置***,这里不再赘述。
1.1装置组件

装置rpm-build,用以下下令:
sudoyuminstallrpm-build

装置redhat-rpm-config,用以下下令:
sudoyuminstallredhat-rpm-config
PS:假如事情职员以为有需要的话能够装置rpmdev-newspec。这个小工具是用来天生.spec文件模板的。由于不是必选工具以是关于它的装置和利用***在这里就不再赘述。
1.2在用户的主目次下创立必需的文件夹和文件
用上面的下令创立需要的文件夹,个中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~/rpmbuildvi./SPECS/asterisk.spec
我将以下的内容输出到了文件中。
Name:asteriskVersion:1.8.15Release:1%{?dist}Summary:DesignbywanzhaoGroup:Applications/Internetmkdir-p~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}0mkdir-p~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}1mkdir-p~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}2mkdir-p~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}3mkdir-p~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}4mkdir-p~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}5mkdir-p~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}3mkdir-p~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}7mkdir-p~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}8mkdir-p~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}9mkdir-p~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}3echo%_topdir%(echo$HOME)/rpmbuild>~/.rpmmacros1echo%_topdir%(echo$HOME)/rpmbuild>~/.rpmmacros2echo%_topdir%(echo$HOME)/rpmbuild>~/.rpmmacros3echo%_topdir%(echo$HOME)/rpmbuild>~/.rpmmacros4mkdir-p~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}3echo%_topdir%(echo$HOME)/rpmbuild>~/.rpmmacros6echo%_topdir%(echo$HOME)/rpmbuild>~/.rpmmacros2echo%_topdir%(echo$HOME)/rpmbuild>~/.rpmmacros8echo%_topdir%(echo$HOME)/rpmbuild>~/.rpmmacros9cd~/rpmbuild0cd~/rpmbuild1mkdir-p~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}3cd~/rpmbuild3cd~/rpmbuild4mkdir-p~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}3cd~/rpmbuild6cd~/rpmbuild7
2.2asterisk内容申明

Name:
软件包的名字,终极RPM软件包是用该名字与版本号,释出号及系统号来定名软件包的。
Version:
软件版本号。仅当软件包比之前有较年夜改动时才增添版本号。
Release:
软件包释出号。一样平常我们对该软件包做了一些小的补钉的时分就应当把释出号加1。
Copyright:
软件包所接纳的版权划定规矩。详细有:GPL(自在软件),BSD,MIT,PublicDomain(大众域),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(文档)
SystemEnvironment/Base(体系情况/基本)
SystemEnvironment/Daemons(体系情况/保卫)
SystemEnvironment/Kernel(体系情况/内核)
SystemEnvironment/Libraries(体系情况/函数库)
SystemEnvironment/Shells(体系情况/接口)
UserInte***ce/Desktops(用户界面/桌面)
UserInte***ce/X(用户界面/X窗口)
UserInte***ce/XHardwareSupport(用户界面/X硬件撑持)
Source:
源步伐软件包的名字。假如有多个文件或局部能够写作:Source0……;source1……;Source3……;……
%description:
软件包具体申明,可写在多个行上。
%prep
这个段是预处置段,一般用来实行一些解开源步伐包的下令,为下一步的编译装置作筹办。%prep和上面的%build,%install段一样,能够实行shell下令。如我们在就到场了tar下令、cd下令等。
%build段
本段是编译段,所要实行的下令为天生软件包办事,如./configure、make下令。
%install段
本段是装置段,个中的下令在装置软件包时将实行,如makeinstall等下令。依据分歧的软件,下令会有所分歧。
%files段
本段是文件段,用于界说天生的rpm包所包括的文件。以是要打到rpm包里的文件都要在这里列出来。假如短少这个段,则没法天生二进制的rpm文件。
%clean段
本段是生来清算由后面的步调天生的渣滓文件的。一样,这个段由shell下令构成。
3.打包

假如只打包二进制rpm包能够用上面的下令:
cd~/rpmbuild8
假如只打包源代码rpm包能够用以下下令:
cd~/rpmbuild9
假如二进制rpm包和源代码rpm包都必要,则用以下下令:
vi./SPECS/asterisk.spec0

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
http://www.ckuyun.com/developerworks/cn/linux/l-rpm/
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!

金色的骷髅 发表于 2015-1-16 21:14:44

来一发CentOS6.x下制造RPM包

尽量不要提问纯属是扯蛋.学习Linux特别是自己一个人初学入手的时候没人教很困难.当然如果可以的话平时多去买些Linux书...对学习Linux很有帮助.

变相怪杰 发表于 2015-1-20 20:01:32

熟读写基础知识,学得会不如学得牢。

分手快乐 发表于 2015-1-29 19:51:21

虽然大家都比较喜欢漂亮的mm,但是在学 linux 的过程中,还是要多和“男人”接触一下:P 遇到问题的时候,出来看说和上网查之外,就是要多用 linux 下的 man 命令找找帮助。

山那边是海 发表于 2015-2-6 06:10:23

就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务

小魔女 发表于 2015-2-15 18:48:46

写学习日记,这是学习历程的见证,同时我坚持认为是增强学习信念的法宝。

老尸 发表于 2015-3-4 13:54:27

Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。

灵魂腐蚀 发表于 2015-3-11 20:14:41

下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢”这样的问题。

若天明 发表于 2015-3-19 13:43:28

放手去搞。尽量不要提问,运用搜索找答案,或者看wiki,从原理上理解操作系统的本质,而不是满足于使用几个技巧。尽量看英文资料。

小妖女 发表于 2015-3-28 17:52:22

Linux只是个内核!这点很重要,你必须理解这一点。只有一个内核是不能构成一个操作系统的。
页: [1]
查看完整版本: 来一发CentOS6.x下制造RPM包