Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践
有时你可能须要获取一个开源竽暌功用的源码包,然则可能没有无法经由过程该应用的RPM文件来安装到体系。
在这种情况下,你既可以编译源码安装,也可以以源码包来创建一个rpm包文件,实现安装应用的功能。
同样存在一种情况即你想要创建一个你本身开辟的自定义的RPM包。
这篇指南说清楚明了若何进步源率攀来创建一个rpm包。
为了创建rpm包,你将须要源码包(平日为一个紧缩文件,其内也包含了SPEC文件)。
SPEC文件包含以下解释:若何创建rpm包,包内包含的文件,安装的路径。
RPM将展示创建过程中的测试过程。
履行spec文件中的prep块中定义的体系敕令和宏敕令。
检测文件列表的内容
履行spec文件中的build块中定义的体系敕令和宏敕令。在这一步中文件列表中的宏敕令也被履行。
创建源码包文件
一旦RPM履行了上述步调,将创建二进制的包文件和源码包文件。
二进制包文件包含所有安装或卸载包的额外信息的源文件。
平日安装包的所有选项都是有平台差别的。二进制包文件包含为一个特别构造而编译的完全应用或函数库。源码包平日包含原始紧缩的tar文件,spec文件和创建二进制包时相干的补丁。
让我们应用tar文件来看看若何创建一个简单的源和二进制RPM包。
如不雅你对rpm包比较陌生,你应当起首去懂得在CentOS/Redhat上若何应用rpm敕令安装,进级和卸载包。
1. 安装rpm-build包
rpmbuild敕令是rpm-build包的一部分。安装过程如下。
- # yum install rpm-build
rpm-build依附下面的几个包。如不雅你还未安装,就赶紧主动安装这些包。
rpm-build敕令会在build阶段主动创建下列目次构造。
- elfutils-libelf
- rpm
- rpm-libs
- rpm-python
2. RPM创建目次
- # ls -lF /root/rpmbuild/drwxr-xr-x. 2 root root 4096 Feb 4 12:21 BUILD/drwxr-xr-x. 2 root root 4096 Feb 4 12:21 BUILDROOT/drwxr-xr-x. 2 root root 4096 Feb 4 12:21 RPMS/drwxr-xr-x. 2 root root 4096 Feb 4 12:21 SOURCES/drwxr-xr-x. 2 root root 4096 Feb 4 12:21 SPECS/drwxr-xr-x. 2 root root 4096 Feb 4 12:21 SRPMS/
留意:上述的目次构造对CentOS和Redhat是都实用。你也可以应用/usr/local/redhat敕令,然则你想要在build阶段修改topdir参数。如不雅你应用的是SuSE企业版Linux,应用 /usr/src/packages目次。
如不雅你想应用你本身的敕令构造来代替/root/rpmbuild,你可以应用下列选择:
应用-buildroot选择,并在rpmbuild阶段定义自定义的目次。
在rpmrc文件或rpmmacros文件中定义topdir参数
3. 下载源码tar文件
接着,下载你想要创建的包的源码tar文件,并保存在SOURCES目次下。
在这个例子中,我应用的是icecase开源软件的源码包,这时一个流多媒体办事器软件。然则这些步调在创建其他rpm包时都是雷同。你只须要下载你想要的软件的源码包即可。
- # cd /root/rpmbuild/SOURCES/# wget http://downloads.xiph.org/releases/icecast/icecast-2.3.3.tar.gz# ls -l-rw-r--r--. 1 root root 1161774 Jun 11 2012 icecast-2.3.3.tar.gz
将同时安装如下依附包:
- libgcrypt
- libgcrypt-devel
- libgpg-error-devel
4. 创建spec文件
在这一步中,我们经由过程创建一个spec文件来定义创建过程。这个spec文件平日包含下列8个不合的块:
- Preamble – preamable块包含了被创建包的信息和定义相干依附。平日它是一些行,以标签信息开首,后接冒号,而后是一些解释信息。
- %prep – 在章一?块中,我们将为创建过程预备软件。在此过程中,任何先前的创定都被删除,而源文件(. tar)文件被扩大,等等。 一个更关键的工作是要懂得可用的有预定义宏敕令,可以履行各类快捷选项来构建rpm包。当您测验测验创建一个复杂的包时,您可能正在应用这个宏敕令。鄙人面的示例中,我应用了一个名为% setup的宏,它删除了先前的创建,解压源文件并更改文件的权限。您还可以在% prep部分中应用sh脚本履行此操作,然则% setup宏应用预定义的sh脚本简化了流程。
- %description – 描述块平日包含对包的描述信息
- %build – 这个是真正履行build指令的块。平日是一个sh脚本。
- %install – %install块也是作为sh脚本来履行的,就像%prep和%build块。这时安装阶段的步调
推荐阅读
Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践20、func,为解决集群治理,监控问题需设计开辟的体系治理基本框架。 1、psutil是一个跨平台库(https://g>>>详细阅读
本文标题:如何在CentOS/RedHat下,实现根据源码包创建rpm包
地址:http://www.17bianji.com/lsqh/39073.html
1/2 1