概述

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

安装FPM


yum -y install ruby ruby-devel rubygems # FPM是Ruby模块

gem sources -a http://ruby.taobao.org/ # 添加淘宝的Ruby仓库

gem sources --remove http://rubygems.org/ # 移除原生的Ruby仓库 

# 安装fpm

gem install fpm


官方的示例打包nodejs

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

mkdir /dev/shm/node-root 

make  install DESTDIR=/dev/shm/node-root # 指定安装路径

fpm -f -s dir -t rpm -n nodejs --epoch 0 -v 0.10.12 --iteration 1.el6 -C /dev/shm/node-root -p /root/ -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 'lxcong' --no-rpm-sign usr/bin usr/lib usr/share # 生成RPM 注意usr/bin usr/lib usr/share  这些就是需要打包的数据目录

rpm -qpi /root/nodejs-0.10.12-1.el6.x86_64.rpm # 查看RPM包信息 

参数含义

-s 指定INPUT的数据类型

-t 指定需要制作成什么包,可选项有(deb, rpm, solaris, etc)

-n 包名

--iteration  也就是rpm包里面的release

-C 就是打包的相对路径,类似于buildroot。譬如-C /dev/shm/node-root/  而打包机器的数据包路径是/dev/shm/node-root/usr/bin/node  那安装这个rpm包后,在本地的数据就是/usr/bin/node