如何将apache源码打成rpm安装包

简介:


如果你对RPM没有什么好印像的话,我相信原因就是它的过复杂的包依赖关系。

  但如果自己动手来编绎RPM包的话,这个问题你可以很愉快的进行控制
  如果你有一个很好的软件版本控制系统的话,你完全可以把你所有要用的软件包都编绎成RPM, 这样可以提高一些常规软件部署效率,比如apache mysql这样的软件。
  本次目标:在新装的一台centos6.4 x86_64位系统上生成根据apache的源码包生成个apache的rpm文件

yum-y install wget -y

yuminstall rpm-build -y

wget http://archive.apache.org/dist/httpd/httpd-2.4.4.tar.bz2

这些文件的下载可以放在一个文档,比如/usr/local/src,本博写的文件是直接下载在/root目录下的


RPM的建立可以直接从Apache httpd源码压缩包中使用以下命令:

rpmbuild-tb httpd-2.4.4.tar.bz2

但是如果下载好httpd的源码包就直接使用这个命令的话是会有如下错误提示的

143724576.png

相应的“开发”被安装在您的构建系统之前建立的RPM包将被要求,rpmbuild的命令会自动计算需要什么的RPM,并列出在您的系统中缺少的任何依赖。这些“开发”包不会被构建完成后,可以安全地删除。

根据上面的提示要安装的包,我们要下载apr 1.4以上的相关的包和distcache的包,在系统自带的包里面的apr的版本太低的。

wget http://mirror.bit.edu.cn/apache/apr/apr-1.5.0.tar.bz2


wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.5.3.tar.bz2


wget http://dl.fedoraproject.org/pub/fedora/linux/releases/18/Fedora/source/SRPMS/d/distcache-1.4.5-23.src.rpm

如下所示下载好apr的包要是直接用rpmbuild打包也还是不行,还是要安装相关的组件

143811191.png

143830580.png

结和上面关于apr和httpd相关的组件整合在一起安装如下所示:除了freetds的组件,这个组件要从别的源下载的如epel

yum -y install autoconf libtool doxygen expat expat-devel libuuid-develdb4-devel mysql-devel unixODBC-devel postgresql-devel sqlite-devel pcrepcre-devel lua-devel libxml2-devel openldap-devel nss-devel zlib-devel libselinux-develmake


  安装“freetds freetds-devel”这个相关的组件的,只是这个包在系统自带的那个包里是没有的,须要用外网的源,比如epel、remi等。这里我就用epel的源

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

yum -y install freetds freetds-devel


安装好上面相关的组件后就可以使用这个命令“rpmbuild-tb apr-1.5.0.tar.bz2”编译apr的rpm包了。

打包好之后会/root/rpmbuild/RPMS/x86_64/下生成rpm的包的,这里的这个rpmbuild这个目录是我在做第一步的时候使用这个命令时“rpmbuild -tb httpd-2.4.6.tar.bz2”它自动生成的,当然也可以自己建这个目录的及这个目录下面的这几个目录的(BUILD  BUILDROOT  RPMS SOURCES  SPECS  SRPMS)

下面就是安装apr的包

rpm–ivh /root/rpmbuild/RPMS/x86_64/apr-1.5.0-1.x86_64.rpm

rpm-ivh /root/rpmbuild/RPMS/x86_64/apr-devel-1.5.0-1.x86_64.rpm


rpmbuild -tb apr-util-1.5.3.tar.bz2

rpm -ivh /root/rpmbuild/RPMS/x86_64/apr-util-*  //安装转为rpm包的apr-util的所有的包


最后要安装distcache这个组件:

rpmbuild --rebuild distcache-1.4.5-23.src.rpm   //从源码包建立二进制包

rpm -ivh /root/rpmbuild/RPMS/x86_64/distcache-*  //安装所有制作好的distcache的rpm的包

所有和httpd制作相关的组件都安装好了,接下来就可以编译httpd的rpm包了

rpmbuild -tb httpd-2.4.4.tar.bz2

httpd的rpm包打包好之后就可以安装了如下所示,不过在安装httpd的rpm包之前要先安装mailcap组件的,不然会提示“

[root@localhost~]# rpm -ivh rpmbuild/RPMS/x86_64/httpd-2.4.4-1.x86_64.rpm

error: Failed dependencies:

      /etc/mime.types is needed by httpd-2.4.4-1.x86_64

yum install mailcap -y

安装完mailcap组件后再安装下面的httpd的相关的rpm包:

rpm–ivh /root/rpmbuild/RPMS/x86_64/httpd-2.4.4-1.x86_64.rpm

rpm–ivh /root/rpmbuild/RPMS/x86_64/httpd-devel-2.4.4-1.x86_64.rpm

rpm–ivh /root/rpmbuild/RPMS/x86_64/httpd-tools-2.4.4-1.x86_64.rpm

rpm -ivh /root/rpmbuild/RPMS/x86_64/httpd-manual-2.4.4-1.x86_64.rpm

rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_authnz_ldap-2.4.4-1.x86_64.rpm

rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_lua-2.4.4-1.x86_64.rpm

rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_proxy_html-2.4.4-1.x86_64.rpm

rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_socache_dc-2.4.4-1.x86_64.rpm

rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_ssl-2.4.4-1.x86_64.rpm


service httpd start



rpmbuild --help 命令的解释说明如下:

————————————————————————————————————————————

*使用命令:rpmbuild ·[OPTION]
Build options with [ <specfile> | <tarball> | <sourcepackage> ]:

*建立包的选项有:[ 从文件<specfile>建立 |从 <tarball>包建立 |从 <source package>包建立]

*从文件<specfile>建立

 -bp     build through %prep (unpack sources and apply patches) from<specfile>
             * -bp 从<specfile>文件的%prep段开始建立(解开源码包并打补丁)
 -bc     build through %build (%prep, then compile) from <specfile>
             *-bc 从<specfile>文件的%build
 -bi      build through %install (%prep,%build, then install) from <specfile>

 -bl       verify %files section from<specfile>
             *检查<specfile>文件的%files段
 -ba     build source and binary packages from <specfile>
             *建立源码和二进制包
 -bb     build binary package only from<specfile>
             *只建立二进制包
 -bs     build source package only from <specfile>
             *只建立源码包

*从 <tarball>包建立

 -tp     build through %prep (unpack sources and apply patches) from<tarball>

 -tc     build through %build (%prep, then compile) from <tarball>

 -ti       build through %install (%prep, %build,then install) from <tarball>

 -ta     build source and binary packages from <tarball>
            *建立源码和二进制包
 -tb     build binary package only from <tarball>
            *只建立二进制包
 -ts     build source package only from <tarball>
            *只建立源码包

*从 <source package>包建立

 --rebuild   
           build binary package from<source package>
            *建立二进制包
 --recompile 
          build through %install (%prep,%build, then install) from <source package>

————————————————————————————————————————————




番外的,整合了一下上面所述的命令的,如下所示:

————————————————————————————————————————————

以上的apache的源码包就打包成了rpm的包,还是有很多rpm包的。将这些在/root/rpmbuild/RPMS/x86_64/下生成rpm的包或拷贝整个rpmbuild这个目录到别的服务器上,那些相关的组件也还是要安装的,才能安装这些打包好的rpm包的。这样就方便多了,不用编译要等那么长的时间了,步骤如下所示:

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

yum -y install autoconf libtool doxygen expat expat-devel libuuid-devel db4-develmysql-devel unixODBC-devel postgresql-devel sqlite-devel pcre pcre-devellua-devel libxml2-devel openldap-devel nss-devel zlib-devel libselinux-develmake freetds freetds-devel mailcap


rpm –ivh /root/rpmbuild/RPMS/x86_64/apr-1.5.0-1.x86_64.rpm

rpm -ivh /root/rpmbuild/RPMS/x86_64/apr-devel-1.5.0-1.x86_64.rpm

rpm -ivh /root/rpmbuild/RPMS/x86_64/apr-util-*

rpm -ivh /root/rpmbuild/RPMS/x86_64/distcache-*

rpm –ivh /root/rpmbuild/RPMS/x86_64/httpd-2.4.4-1.x86_64.rpm

rpm –ivh /root/rpmbuild/RPMS/x86_64/httpd-devel-2.4.4-1.x86_64.rpm

rpm –ivh /root/rpmbuild/RPMS/x86_64/httpd-tools-2.4.4-1.x86_64.rpm

rpm -ivh /root/rpmbuild/RPMS/x86_64/httpd-manual-2.4.4-1.x86_64.rpm

rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_authnz_ldap-2.4.4-1.x86_64.rpm

rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_lua-2.4.4-1.x86_64.rpm

rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_proxy_html-2.4.4-1.x86_64.rpm

rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_socache_dc-2.4.4-1.x86_64.rpm

rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_ssl-2.4.4-1.x86_64.rpm


————————————————————————————————————————————





      本文转自ling118 51CTO博客,原文链接:http://blog.51cto.com/meiling/1340577,如需转载请自行联系原作者







相关文章
|
5月前
|
消息中间件 Apache RocketMQ
电子好书发您分享《Apache RocketMQ 源码解析》
电子好书发您分享《Apache RocketMQ 源码解析》
34 1
|
5月前
|
资源调度 前端开发 开发工具
apache-incubator-streampark源码编译本地运行
apache-incubator-streampark源码编译本地运行
71 0
|
2月前
|
存储 缓存 负载均衡
【Apache ShenYu源码】如何实现负载均衡模块设计
整个模块为ShenYu提供了什么功能。我们可以看下上文我们提到的工厂对象。/***/核心方法很清晰,我们传入Upsteam列表,通过这个模块的负载均衡算法,负载均衡地返回其中一个对象。这也就是这个模块提供的功能。
25 1
|
2月前
|
Java API Apache
【Apache ShenYu源码】看看贡献者如何实现支持提醒通知设计
在阅读中,还发现了有个html文件忘记加了开源协议,我们提下PR修复下,又收获了一次开源贡献!!PR提交戳这。
27 1
【Apache ShenYu源码】看看贡献者如何实现支持提醒通知设计
|
3月前
|
Java
apache-incubator-streampark源码编译本地运行(七)
apache-incubator-streampark源码编译本地运行(七)
42 1
|
4月前
|
存储 SQL 关系型数据库
Apache Doris 聚合函数源码阅读与解析|源码解读系列
Apache Doris Active Contributor 隐形通过本文记录下对源码的理解,以方便新人快速上手源码开发。
Apache Doris 聚合函数源码阅读与解析|源码解读系列
|
4月前
|
Apache
Apache ZooKeeper - 构建ZooKeeper源码环境及StandAlone模式下的服务端和客户端启动
Apache ZooKeeper - 构建ZooKeeper源码环境及StandAlone模式下的服务端和客户端启动
46 2
|
5月前
|
消息中间件 Apache RocketMQ
电子好书发您分享《Apache RocketMQ 源码解析》
电子好书发您分享《Apache RocketMQ 源码解析》
28 1
|
5月前
|
SQL Java 数据库连接
Java【付诸实践 01】使用org.apache.ibatis.plugin.Interceptor拦截器实现全局mapper.xml参数注入(可用于切换数据库实例schema)源码实例分享
Java【付诸实践 01】使用org.apache.ibatis.plugin.Interceptor拦截器实现全局mapper.xml参数注入(可用于切换数据库实例schema)源码实例分享
41 0
|
5月前
|
消息中间件 Apache RocketMQ
电子好书发您分享《Apache RocketMQ 源码解析》
电子好书发您分享《Apache RocketMQ 源码解析》
47 10

推荐镜像

更多