使用FPM快速生成RPM包

2013-08-12  来源:本站原创  分类:rpm  人气:2 

许多朋友始终觉得RPM难做,主要是因为SPEC规则比较多,需要花精力去了解和熟悉。之前试用一个叫checkinstall的工具,可以自动打RPM包。很久没有维护了,在CentOS6上编译有问题。虽然也有网友给打了Patch,最终能用起来,可惜使用过程中还是会遇到诸多错误。

如今巧遇FPM,一行命令就搞定RPM包!

一、我们来先安装FPM:

yum -y install ruby rubygems # FPM是Ruby模块
gem sources -a http://ruby.taobao.org/ # 添加淘宝的Ruby仓库
gem sources --remove http://rubygems.org/ # 移除原生的Ruby仓库
# 安装fpm
gem install fpm

二、官网介绍了用FPM打deb包,我们翻译成rpm版:

wget http://nodejs.org/dist/v0.10.12/node-v0.10.12.tar.gz # 去nodejs官网下载最新源码包
tar zxvf node-v0.10.12.tar.gz -C /dev/shm/ # 解压
cd /dev/shm/node-v0.10.12/ # 进入源码目录
./configure --prefix=/usr --dest-cpu=x64 --dest-os=linux # 指定配置参数
make -j24 # 使用多核编译
mkdir /dev/shm/node-root
make -j24 install DESTDIR=/dev/shm/node-root # 指定安装路径
fpm -f -s dir -t rpm -n nodejs --epoch 0 -v 0.10.12 --iteration 1 -C /dev/shm/node-root -p ~/rpmbuild/RPMS/x86_64/ -d 'openssl >= 0.9.8' -d 'libstdc++ >= 4.4.3' --verbose --category 'Development/Languages' --description 'Node.js real-time applications' --url 'nodejs.org' --license 'BSD' -m 'higkoo' --no-rpm-sign usr/bin usr/lib usr/share # 生成RPM
rpm -qpi ~/rpmbuild/RPMS/x86_64/nodejs-0.10.12-1.x86_64.rpm # 查看RPM包信息

三、查看安装包信息:

使用FPM快速生成RPM包

小技巧:'-e' 参数支持打包之前手动修改FPM自动生成的SPEC文件,然后再打包。不过注意CentOS5和CentOS6之间的rpm包不能混用,因为他们之间的glibc版本不同,动态库链接不上。

OK,没玩过就赶紧动手吧!

相关文章
  • 使用FPM快速生成RPM包 2013-08-12

    许多朋友始终觉得RPM难做,主要是因为SPEC规则比较多,需要花精力去了解和熟悉.之前试用一个叫checkinstall的工具,可以自动打RPM包.很久没有维护了,在CentOS6上编译有问题.虽然也有网友给打了Patch,最终能用起来,可惜使用过程中还是会遇到诸多错误. 如今巧遇FPM,一行命令就搞定RPM包! 一.我们来先安装FPM: yum -y install ruby rubygems # FPM是Ruby模块 gem sources -a http://ruby.taobao.org

  • 用FPM轻松制作RPM包 2013-07-10

    概述 自从使用自建的YUM仓库后,安装工具变的简便快速,而且方便统一管理软件的版本.啰嗦一下,自建的YUM仓库还可以结合cobbler,实现定制化的系统安装(关于系统安装,最近做了一个自动化安装系统的平台,使用cobbler提供的接口,这个以后发博补充一下).总而言之,由于自建YUM仓库的推行,便有大量RPM包的制作的任务,经同事推荐,尝试了一下FRM制作RPM包,比起编写SPEC文件,确实方便多了. 安装FPM yum -y install ruby ruby-devel rubygems #

  • RPM包rpmbuild SPEC文件深度说明 - 少即是多 - 专注 2012-06-13

    上一篇日志写到,为什么要制作rpm包,以及如何使用.src.rpm文件生成rpm包.最后部分还看到.src.rpm的内容,实际上 就是由.tar.gz源码.补丁软件和.spec脚本组成的.由此知道,使用.spec生成rpm包是比较简单的,因为.src.rpm通常都是由软件开 发者或者第三方的专业制作人根据源码调试好的,所以,只要处理好平台兼容性和相关的版本,不会遇到太大的问题. 但我觉得单纯明白用.spec生成rpm是不够的.常见有两个原因值得我们去了解用如何用源码制作rpm: 引用 1.并不是

  • 怎样制作RPM包 2013-04-18

    怎样制作RPM包 Mr. Neo Chen (netkiller), 陈景峰(BG7NYT) 中国广东省深圳市龙华新区民之街道溪山美地 518109 +86 13113668890 +86 755 29812080 <[email protected]> 版权 © 2011, 2012, 2013 http://netkiller.github.com 摘要 我在网上找RPM包的制作例子几乎都是C源码编译安装然后生成RPM包, 而我的程序不是C写的很多时候是脚本语言如Python, PHP 甚

  • 烂泥:Linux源码包制作RPM包之Apache 2015-03-04

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司服务器比较多,需要把apache源码包制作成rpm包,然后放到公司内网yum源上进行下载安装.apache的rpm包安装方式比源码安装方式比较快,这能节约不少的时间. 有关内网yum源的搭建,可以参考<烂泥:yum的使用及配置>这篇文章. 一.安装rpm-build 查阅相关资料得知,要把源码包制作成rpm包需要使用rpm打包工具rpm-build. rpm-build通过rpmbuild命令根据本地源码包,通过spec文件中的规则就可以把源码

  • RPM包制作 2012-11-20

    在实际的应用之中,二进制包的使用显得有些麻烦,最好的办法还是将源码包制作成为RPM包,放进yum仓库,再使用类似于puppet来进行管理工作.这样会方便许多,做运维的,你懂的. 其实,制作RPM软件包并不是一件复杂的工作,其中的关键在于编写SPEC软件包描述文件.下面我详细说明一下RPM软件包的制作过程. 一个RPM包的制作主要有这几个步骤: 1 计划好你想做什么.有的rpm包是一个软件,但有的例如cacti是一大堆的网页文件.是纯粹的文件还是库文件还是软件源码. 2 获取软件包原材料.例如二进

  • 安装RPM包 2012-11-30

    在windows下安装一个软件很轻松,只要双击.exe的文件,安装提示连续"下一步"即 可,然而linux系统下安装一个软件似乎并不那么轻松了,因为我们不是在图形界面下.所 以你要学会如何在linux下安装一个软件. 在前面的内容中多次提到的yum,这个yum是Redhat所特有的安装RPM程序包的工 具,使用起来相当方便.因为使用RPM安装某一个程序包有可能会因为该程序包依赖另一 个程序包而无法安装.而使用yum工具就可以连同依赖的程序包一起安装.当然CentOS同 样可以使用yum

  • Centos RPM包制作原理 2013-12-07

    有时候为了部署自己的包更方便一些,我们会制作自己的RPM包,制作RPM包都有哪些步骤呢,学习这些步骤就是本文的目的.在Centos下制作RPM包依赖rpm-build这个包,所以需要提前安装好该软件包. RPM生成要素 生成rpm所用的文件列表或者源代码 根据文件列表或者源代码生成rpm规范,也就是spec文件 根据spec文件加工源码/文件的工具rpmbuild 在redhat下,rpm包的默认制作路径在/usr/src/redhat下: /usr/src/redhat --BUILD #编译

  • Centos6.4制作Tengine的rpm包 2013-12-07

    最近又在centos6.4下折腾tengine了,刚好不久前看了rpm包的制作方法,所以又有了搞个rpm包的想法. 1 安装centos的开发环境集成包及tengine的依赖包 yum groupinstall "Development Tools" yum install pcre-devel yum install openssl openssl-devel 2 创建tengine rpm包,用非root用户test su - test mkdir -p ~/rpmbuild/{B

  • 2014-8-4 构建第一个rpm包 2014-09-05

    参考书籍:<linux就是这个范儿> 基本步骤: 1. 依照rpmbuild的规范创建一个目录结构. 创建BUILD, RPMS,SOURCES, SPECS, SRPMS五个目录. 2. 将源代码和附带文件放到目录中合适的位置. BUILD用来编译源代码,RPMS用于存放最后生成的rpm包文件, SPECS用来保存spec文件,SRPM用于存放生成的源代码rpm包. 3. 创建SPEC文件. 分析SPEC文件: spec文件的内容都代表什么? 一个spec文件大体上分为几个"段&q

  • Lua脚本自动生成APK包 2013-11-29

    这篇文章主要介绍了Lua脚本自动生成APK包,本文脚本适用于cocos2dx+lua的项目,需要的朋友可以参考下 上次用了纯bat写了个脚本生成APK包,感觉bat扩展性和语法差的令人发指,这次用lua重写了一个脚本 可以根据需要自行扩展了. 使用前tool path 还有 target path的前两个还是需要自己设置下. 一些小的函数 jit_file copy_file 我就不贴了 比较简单,用来luajit 和 拷贝. -- Authors: sails鸢@oschina -- Date

  • 如何快速生成100万不重复的8位编号 2013-12-29

    如何快速生成100万不重复的8位编号,对于这个问题,有几点是需要注意的: 1. 如何生成8位随机数,生成的数越随机,重复的可能性当然越小 2. 控制不重复 3. 考虑性能 针对这个问题,我写了如下的示例来解决,希望能为有这类需求的人提供指导 生成100万条8位不重复数据的示例 USE tempdb GO -- 创建测试表 CREATE TABLE tb(id char(8)) -- 创建用于自动过滤重复值的唯一索引 CREATE UNIQUE INDEX IX_tb ON tb(id) WITH

  • 从零开始学YII2框架(五)快速生成代码工具 Gii 的使用 2014-03-24

    用过Yii1框架的Coder都知道,Gii可以为你快速生成代码,也就是说搭建一个可以增删改查的WebApp可能一行代码都不用写.上次介绍了如何安装Yii框架,本次介绍一下如何使用gii工具快速实现CRUD功能. Yii2 框架 之所以称之为高效快速开发的一款框架,是因为有一个神奇的工具Gii 用过Yii1框架的Coder都知道,Gii可以为你快速生成代码,也就是说搭建一个可以增删改查的WebApp可能一行代码都不用写. 当然作为Coder,不写代码怎么能实现我们想要的功能呢. 上次介绍了如何安装

  • shell脚本实现快速生成xml格式sitemap实例分享 2014-05-03

    这篇文章主要介绍了shell脚本实现快速生成xml格式sitemap实例分享,只是本文的脚本首先需要一个创建好的URL集合文件,也就是数据源才可以生成,需要的朋友可以参考下 用shell快速生成xml格式的sitemap地图文件,中小型网站适用.在本次案例中,生成12053条URL的sitemap文件,仅用时4.3秒!shell代码如下: cat sitemap.txt|awk 'BEGIN{print "<?xml version=\"1.0\" encoding=\

  • 制作nginx的RPM包教程 2014-07-10

    这篇文章主要介绍了制作nginx的RPM包的方法,需要的朋友可以参考下 本文讲述了制作nginx的RPM包的方法,实例如下: 1. 下载nginx源码,直接运行命令: cd /root wget http://nginx.org/download/nginx-1.7.1.tar.gz 在拿到源码包之后,解压,并进入目录: tar zxvf nginx-1.7.1.tar.gz cd nginx-1.7.1 2. 编写SPEC文件 文件名为:nginx.spec Summary: High Per

  • java生成jar包的方法 2014-10-04

    这篇文章主要介绍了java生成jar包的方法,对Java生成jar包的具体步骤及方法进行了较为详细的描述,是非常实用的技巧,需要的朋友可以参考下 本文实例讲述了java生成jar包的方法,是非常实用的技巧.分享给大家供大家参考.具体分析如下: 很多Java初学者都会有这样的疑问:Java编写的application程序是否能够最终形成一个类似于exe一样的可执行文件,难道就只能用命令行运行? 通常来说有两种方法,一种是制作一个可执行的JAR文件包,然后就可以像.chm文档一样双击运行了:而另一种

  • BAT批处理一键生成APK包脚本分享 2014-10-29

    这篇文章主要介绍了BAT批处理一键生成APK包脚本分享,本文脚本适用于cocos2dx+lua的项目,需要的朋友可以参考下 BAT批处理一键生成APK包脚本分享 将本bat放到cocos2dx目录下你的工程的project.android下(需修改变量). ASmaker 用来将Resources文件夹下的lua文件批量加密 算法参考我之前的rc4算法实现. 每次打包apk前 svn 最新的工程代码 和 cocos2dx引擎代码. @echo off rem 工具路径 set JAVA_HOME

  • lua脚本实现自动生成APK包 2015-03-24

    上次用了纯bat写了个脚本生成APK包,感觉bat扩展性和语法差的令人发指,这次用lua重写了一个脚本,适用于cocos2dx+lua的项目,小伙伴们来参考下吧. 可以根据需要自行扩展了. 使用前tool path 还有 target path的前两个还是需要自己设置下. 一些小的函数 jit_file copy_file 我就不贴了 比较简单,用来luajit 和 拷贝. -- Authors: sails鸢@oschina -- Date: 20th , August , 2014 -- N

  • 美团Android自动化之旅-生成渠道包 2015-03-24

    概述 每当发新版本时,美团团购Android客户端会被分发到各个应用市场,比如豌豆荚,360手机助手等.为了统计这些市场的效果(活跃数,下单数等),需要有一种方法来唯一标识它们. 团购客户端目前通过渠道号(channel)来区分不同的市场,代码中使用Config.channel变量记录该渠道号.比如,豌豆荚市场中美团应用的渠道号是wandoujia,360手机助手中美团应用的渠道号为qihu360.客户端访问API时会在请求参数中带上渠道号,以便后台接下来计算不同渠道的效果. 每次发版时,市场部

  • rpm包管理详解 2010-05-20

    在linux世界里流行两种包管理方式,分别是redhat系的rpm和debian系的deb.其中rpm的使用更为广泛,我打算接下来分多章详细介绍一下rpm的包管理机制. 包管理是操作系统用来维护各组件版本的一种方式,对于软件发行者来说,将自己的程序制作成标准的rpm格式也会使得程序的安装.升级和卸载变得非常容易.因此linux下几乎所有流行的程序都有rpm格式的包,有些是发行者自己打包,也有些第三方提供rpm包,例如redhat发行版里的rpm都是redhat自己打包,他们定期打patch,升级