使用FPM快速生成RPM包

使用FPM快速生成RPM包

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

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

一、我们来先安装FPM:


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

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


  1. # 去nodejs官网下载最新源码包
  2. wget http://nodejs.org/dist/v0.10.12/node-v0.10.12.tar.gz
  3. # 解压
  4. tar zxvf node-v0.10.12.tar.gz -C /dev/shm/
  5. # 进入源码目录
  6. cd /dev/shm/node-v0.10.12/
  7. # 指定配置参数
  8. ./configure --prefix=/usr --dest-cpu=x64 --dest-os=linux
  9. # 使用多核编译
  10. make -j24
  11. mkdir /dev/shm/node-root
  12. # 指定安装路径
  13. make -j24 install DESTDIR=/dev/shm/node-root
  14. # 生成RPM
  15. fpm -f -s dir -t rpm -n nodejs --epoch 0 -v 0.10.12 --iteration 1.el6 -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 --workdir /dev/shm usr/bin usr/lib usr/share
  16. # 查看RPM包信息
  17. rpm -qpi ~/rpmbuild/RPMS/x86_64/nodejs-0.10.12-1.el6.x86_64.rpm

三、查看安装包信息:

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

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

原文发布时间:2014-06-11

本文来自云栖合作伙伴“linux中国”

时间: 2024-09-20 15:47:03

使用FPM快速生成RPM包的相关文章

源码-使用make生成rpm包报错

问题描述 使用make生成rpm包报错 下了coprhd项目的源码,想要生成rpm包,使用make clobber BUILD_TYPE=oss rpm命令,结果报错如图,Makefile:863,recipe for target"xxx.rpm"failed,求解

Centos下rpm包如何制作?

  Centos下rpm包如何制作?          谈论RPM对好多编译安装的朋友来多,RPM安装是傻瓜安装. 呵呵,其实RPM是一种非常有效果的集中部署的解决方案. yum+RPM是非常快速便捷的大规模部署方案. 下面简单介绍下rpm的制作: 以cronolog为例: 首先下载cronolog的源码包. 解开源码包,tar xzvf cronolog-1.6.2.tar.gz 找到 cronolog.spec 该文件是定制如何生成RPM包的配置文件 ? 1 2 3 4 5 6 7 8 9

使用Docker镜像构建RPM包

本文讲的是使用Docker镜像构建RPM包,[编者的话]RPM(Red Hat Package Manager)是用于 Linux 分发版的最常见的软件包管理器.因为它允许分发已编译的软件,所以用户只用一个命令就可以安装软件.而RPM包的构建相当繁琐,并且对环境的要求比较高,本文作者介绍了如何借助Docker来构建可以适用多个平台的RPM包. 在一个内部项目中,我一直在思考如何通过非CI工具/流程生成RPM包,我想手动生成RPM包,这样我可以测试它们是否能正常安装,并用于正常的冒烟测试(译者注:

Centos下rpm包如何制作?Centos下rpm包制作的方法

谈论RPM对好多编译安装的朋友来多,RPM安装是傻瓜安装. 呵呵,其实RPM是一种非常有效果的集中部署的解决方案. yum+RPM是非常快速便捷的大规模部署方案. 下面简单介绍下rpm的制作: 以cronolog为例: 首先下载cronolog的源码包. 解开源码包,tar xzvf cronolog-1.6.2.tar.gz 找到 cronolog.spec 该文件是定制如何生成RPM包的配置文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Linux源码包制作RPM包之Apache

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

怎样制作RPM包

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

Centos使用checkinstall制作RPM包的方法

一.checkinstall的安装 目前最新版本是1.6.2,可以按下面的方式下载安装.  代码如下 复制代码 wget http://asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz tar  zxvf checkinstall-1.6.2.tar.gz cd checkinstall-1.6.2 make  && make install 不过我在centos6.5 X64上安装时,并

Centos 中如何快速定制二进制的内核 RPM 包

随着Linux服务器越来越多了,底层系统内核想要保持版本统一就需要定制专门的二进制安装包来便捷的升级和管理. RedHat系那当然就是使用rpmbuild来做定制化管理了. 今天我们分俩个部分(root和普通用户)来讲解如何制作内核的二进制rpm包. Building主机系统环境约定: OS : CentOS release 6.6 Arch : i686 一,rpm包简单定制 注意: 这里我们首先要预留至少20GB的临时文件空间. 1.rpm 制作前的环境准备: yum -y groupins

FPM定制RPM包实践

1.1 快速部署方案  问题:当领导给你 100 台已经安装好系统的服务器,然后让优化,让你提出一个快速部署方案. 解答: 1.tar 打包 先编译安装 打包-->分发-->解包(比如 mysql 打包后直接就可以使用 2.SaltStack,puppet,ansible 3.定制 rpm yum 仓库 yum 安装 4.openstack 虚拟机镜像和 docker 容器分发 1.2 回顾下安装软件的三种方式: 1.编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验