代码改变世界

fpm来制作rpm包

2014-02-26 16:34  cmsd  阅读(551)  评论(0编辑  收藏  举报

转自 http://blog.halfss.com/blog/2013/02/26/fpmbao-guan-li/  

另查看 http://my.oschina.net/lxcong/blog/143855

fpm包管理

1简介

fpm:对包的类型进行转换,从一种类型转换到另一种类型

#包作者整理了PPT:

https://docs.google.com/presentation/d/11TOsLeg58w7GCt6i7y1VIQWnUYotsx0MzGMJ_dWUJNo/present#slide=id.i0

目前源类型支持:

  • dir:二进制包

  • rpm:redhat系列的包

  • gem:ruby的包 #fpm就是用ruby写的,也是gem中的一个包

  • python:python的模块

目标类型:

  • rpm
  • deb
  • solaris
  • puppet

2安装

2.1安装环境

fpm是ruby写的,系统环境需要rbuy

#ruby版本要大于1.8.5

在centos5上默认的源的ruby版本为1.8.5,

需添加一下源:

rpm -ivh http://yum.puppetlabs.com/el/5/products/x86_64/puppetlabs-release-5-6.noarch.rpm

该源中的ruby版本为1.8.7

 

$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
$ gem sources -l
yum install -y ruby ruby-devel rubygems rpm-build

2.2安装fpm

gem install fpm

3使用

3.1常用语法

常用命令:

fpm -s 源类型 -t 目标类型 [options]



常用的options:

-n 生成的package名字

-p 生成的package文件输出位置

-v 生成的package版本

-d 生成的package依赖于什么软件,通常为-d 'name' 或这 -d 'name > version'

-a 系统架构名称,如果是noarch则为'-a all' 或者 '-a native'

--description 软件包描述

--conflicts 与其他什么软件冲突



详情:fpm -h

3.2示例

[root@localhost test]# tar -xf libiconv-1.13.1.tar.gz 

[root@localhost test]# cd libiconv-1.13.1

[root@localhost libiconv-1.13.1]# ./configure --prefix=/usr



[root@localhost libiconv-1.13.1]# make

[root@localhost libiconv-1.13.1]# mkdir /tmp/libiconv-1.13.1

[root@localhost libiconv-1.13.1]# make install DESTDIR=/tmp/libiconv-1.13.1



[root@localhost libiconv-1.13.1]# ls /tmp/libiconv-1.13.1/

usr



[root@localhost rpm_test]# ls

[root@localhost rpm_test]# fpm -s dir -t rpm -n libiconv -v 1.13.1 -C /tmp/libiconv-1.13.1 usr

[root@localhost rpm_test]# ls

libiconv-1.13.1-1.x86_64.rpm

[root@localhost rpm_test]# rpm -qpl libiconv-1.13.1-1.x86_64.rpm 

/usr/bin/iconv

/usr/include/iconv.h

/usr/include/libcharset.h

…….

参考:

  • http://waydee.blog.51cto.com/4677242/834002

  • http://blog.sina.com.cn/s/blog_704836f40101fscj.html

  • http://www.ducea.com/2011/08/31/build-your-own-packages-easily-with-fpm/