设为首页 收藏本站
查看: 604|回复: 0

[经验分享] 如何将apache源码打成rpm安装包

[复制链接]

尚未签到

发表于 2018-11-23 10:21:18 | 显示全部楼层 |阅读模式
如果你对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的源码包就直接使用这个命令的话是会有如下错误提示的
DSC0000.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打包也还是不行,还是要安装相关的组件
DSC0001.png

DSC0002.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 [  |  |  ]:


  *建立包的选项有:[ 从文件建立 |从 包建立 |从 包建立]


  *从文件建立

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

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

*从 包建立

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

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

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

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

*从 包建立

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

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

  

  

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

  ————————————————————————————————————————————
  以上的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
  ————————————————————————————————————————————

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-638554-1-1.html 上篇帖子: windows 7 , apache 2.2 安装xsendfile 模块 的方法 下篇帖子: 源码安装和配置apache
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表