FPM是一个用ruby开发的快速打包工具,它可以打包的种类非常多,不局限于RPM,更多介绍可以浏览项目主页:
https://github.com/jordansissel/fpm
像CentOS也有自己的打包工具,譬如:rpmbuild,但是这东西说实话设计的很反人类,操作太过于复杂,所以很多时候我会选择使用fpm代替它。
为什么要把一个应用或是程序打包成RPM?
1.快速部署,比如某个程序有二进制文件,但是想要正常工作还是要自己写配置文件和服务文件等等,这样就非常麻烦,我们可以直接打一个RPM包,以后要装这个程序的时候直接一条命令就能安装完成。
2.批量/集群部署,这种情况出现的比较多,把程序打成RPM包后就不用一台机器一台机器这样去配置了,提升工作效率。
OK,下面我拿opentracker示范一下,初步了解FPM打包的方法。
首先要在打包机器上面安装FPM,所以先安装依赖:
yum -y install ruby-devel rubygems rpm-build gcc make
然后就可以直接用GEM安装了:
gem install fpm
确保安装正常,输入下面的命令查看一下FPM的版本号:
fpm --version
接着我们要把opentracker编译安装好,这里省略。。。
根据实际应用场景,opentracker编译好是一个二进制文件,也就是一个单文件,打包相对来说简单很多,但是opentracker启动和运行什么的还是要依靠systemd,所以我们可以先写一个脚本:
vi opentracker-auto-deploy.sh
写入:
#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH touch /usr/lib/systemd/system/opentracker.service cat > /usr/lib/systemd/system/opentracker.service <
给脚本执行权限:
chmod +x opentracker-auto-deploy.sh
然后就可以使用FPM打包了:
fpm -s dir -t rpm -n opentracker -v 1.0 --post-install /root/opentracker-auto-deploy.sh --prefix /usr/bin opentracker
参数注释:
s:指定打包方式
t:打包的类型
n:定义包名
v:定义版本号
post-install:在RPM包安装完成之后执行脚本,注意这个参数不能放到FPM的最后。
prefix:被打包程序所在的路径,这个参数是用来打包单文件的,如果是大型的程序,则不能使用这个参数。
如果一切正常,打包完成之后会有类似如下图的回显:
现在我们就可以把创建的RPM包传到另外一台机器上进行安装测试:
rpm -ivh opentracker-1.0-1.x86_64.rpm
可以看到一切正常,我们制作的RPM包可以正常安装并运行opentracker:
WordPress的编辑器自动把EOF转义了。。。搞了半天文章排版都是错位的,最后只能把有EOF的这一段引用一下,将就一下吧。。。
LALA
我什么都不卖了,告辞!
最新评论
5211314
能不能教我 一点不会