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

[经验分享] 如何用nginx源码制作rpm包的详解

[复制链接]

尚未签到

发表于 2018-11-8 11:40:06 | 显示全部楼层 |阅读模式
  RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。使用rpm安装软件和管理软件非常的方便。而这节我们不是介绍如何使用rpm安装或管理软件,而是如何把源码制作成rpm包。
  我们日常工作一般会使用源码包安装软件,因为源码包相对灵活多变,操作自由,唯一的问题就是容易编译出错。rpm包安装简单方便,唯一问题就是不能自定义参数且更新的速度相对于源码慢很多。
  下面我们就研究一下如何自己制作rpm包,我们以Nginx源码为例
  1、查看操作系统版本和内核版本
DSC0000.jpg


2、创建相关目录
  /usr/src/redhat/SOURCES                   //存放源代码,补丁,图标等文件。
  
/usr/src/redhat/SPECS                     //存放用于管理rpm制作进程的spec文件。
  
/usr/src/redhat/BUILD                     //解压后的文件存放在这里。
  
/usr/src/redhat/RPMS                     //存放由rpmbuild制作好的二进制包。
  
/usr/src/redhat/SRPMS                    //存放由rpmbuild制作好的源码包。
DSC0001.jpg


3、下载Nginx源码包
  下载源码包到SOURCES目录,不需要解压。
DSC0002.jpg

  4、手工创建SPEC文件,由于spec文件是由spec语言编写的,请注意spec语言的语法。
DSC0003.jpg

  SPEC文件内容如下:
  


  • #############################
  • # Example Spec File For Nginx
  • # Edited By LaoXu 7.Mar.2013
  • #############################
  • Summary: High Performance Web Server
  • Name: nginx
  • Version: 1.3.9
  • Release: el5
  • License: GPL
  • Group: Applications/Server
  • Source: http://nginx.org/download/nginx-1.3.9.tar.gz
  • URL: http://nginx.org/
  • Distribution: Linux
  • Packager: XuYuanzhen

  • %description
  • nginx [engine x] is a HTTP and reverse proxy server, as well as a mail proxy server
  • %prep
  • rm -rf $RPM_BUILD_DIR/nginx-1.3.9
  • zcat $RPM_SOURCE_DIR/nginx-1.3.9.tar.gz | tar -xvf -
  • %build
  • cd nginx-1.3.9
  • ./configure --prefix=/usr/local/nginx
  • make
  • %install
  • cd nginx-1.3.9
  • make install
  • %preun
  • if [ -z "`ps aux | grep nginx | grep -v grep`" ];then
  • killall nginx >/dev/null
  • exit 0
  • fi
  • %files
  • /usr/local/nginx
  

5、开始RPM制作
  在制作RPM包之前,需要安装必要的编译工具,如rpmbuild,gcc等。
DSC0004.jpg

  开始编译生成rpm包
  

  cd /usr/src/redhat/SPECS/
  rpmbuild -bb nginx.spec  //-ba 参数表示同时生成二进制包和源码包 -bb 参数表示只生成二进制包
  

  经过一段时间的编译后最终生成了rpm包文件
  #############################################省略部分显示##############################################
DSC0005.jpg

  如图所示,在/usr/src/redhat/RPMS/x86_64/该目录下生成了我们需要的rpm包,由于我编译的操作系统平台是64bit的,所以生成的rpm包也是64位的文件。在指定的目录下生成RPM,通常用%_topdir变量,需要在宏配置文件中指定,配置文件称为macrofiles,它们通常为 /usr/lib/rpm/macros:/usr/lib/rpm/macros.*:~/.rpmmacros,这个在rhel 5.8中可以通过rpmbuild --showrc | grep macrofiles 查看,我们这里在.rpmmacros文件中定义了生产rpm包的路径为/usr/src/redhat
DSC0006.jpg

  最后安装生成的rpm包
DSC0007.jpg

  至此Nginx源码制作并安装成功!



运维网声明 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.iyunv.com/thread-632374-1-1.html 上篇帖子: Nginx+Gunicorn+virtualenv+supervisord+Postgresql部署Django应用 下篇帖子: nginx中的rewrite语句
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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