使用fpm制作rpm

fpm

安装ruby和fpm

安装ruby

1
yum -y install ruby rubygems ruby-devel gcc rpm-build

ruby仓库

添加阿里云ruby仓库,移除原生ruby仓库

1
gem sources -a https://gems.ruby-china.org/ --remove https://rubygems.org/

如果安装fpm出现如下错误

1
2
ERROR: While executing gem ... (OpenSSL::SSL::SSLError)
hostname "upyun.gems.ruby-china.org" does not match the server certificate

解决方法,使用http协议

1
2
gem sources --remove https://gems.ruby-china.org/
gem sources -a http://gems.ruby-china.org/

参考ruby文档
如果提示ruby版本低,需要安装高版本ruby,无提示则忽略以下内容

1
2
3
4
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import
curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
rvm install 1.9.3

安装fpm

1
gem install fpm

制作rpm包

pureftp为例

创建目录

1
mkdir /tmp/pureftpd

配置pureftp

1
./configure --prefix=/usr/local/pureftpd

编译安装

1
make && make install DESTDIR=/tmp/pureftpd

打包rpm

1
2
fpm -s dir -t rpm -n pureftp -v 1.0.43 -C /tmp/pureftpd/ --post-install /tmp/pureftpd/usr/local/pureftpd/share/pureftp_post.sh
Created package {:path=>"pureftp-1.0.43-1.x86_64.rpm"}

fpm参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-s:指定源类型
• dir: 将目录打包成所需要的类型,可以用于源码编译安装的软件包
• rpm: 对rpm进行转换
• gem: 对rubygem包进行转换
• python: 将Python模块打包成相应的类型
• ……
-t:指定目标类型,即想要制作为什么包(deb, rpm, solaris, etc)
-n:指定包的名字
-v:指定包的版本号
-C:指定打包的相对路径
-d:指定依赖于哪些包 -d 'name' or -d 'name > version' or -d 'name,name'
-f:第二次包时目录下如果有同名安装包存在,则覆盖它
-p:输出的安装包的目录,不想放在当前目录下就需要指定
--prefix: 默认安装目录
--post-install:软件包安装完成之后所要运行的脚本;同--offer-install
--pre-install:软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall:软件包卸载完成之后所要运行的脚本;同--offer-remove
--pre-uninstall:软件包卸载完成之前所要运行的脚本;同—before-remove

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器