作家
登录

如何在CentOS/RedHat下,实现根据源码包创建rpm包

作者: 来源: 2017-11-21 11:20:44 阅读 我要评论

Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践


如安在CentOS/RedHat下实现根据源码包创建rpm包

有时你可能须要获取一个开源竽暌功用的源码包,然则可能没有无法经由过程该应用的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包的一部分。安装过程如下。

  1. # yum install rpm-build 

rpm-build依附下面的几个包。如不雅你还未安装,就赶紧主动安装这些包。

rpm-build敕令会在build阶段主动创建下列目次构造。

  1. elfutils-libelf 
  2. rpm 
  3. rpm-libs 
  4. rpm-python 

2. RPM创建目次

  1. # 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包时都是雷同。你只须要下载你想要的软件的源码包即可。

  1. # 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块。这时安装阶段的步调
  •  1/5    1 2 3 4 5 下一页 尾页

      推荐阅读

      Python运维中20个常用的库和模块,总有一个用的到~

    Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践20、func,为解决集群治理,监控问题需设计开辟的体系治理基本框架。 1、psutil是一个跨平台库(https://g>>>详细阅读


    本文标题:如何在CentOS/RedHat下,实现根据源码包创建rpm包

    地址:http://www.17bianji.com/lsqh/39073.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)