一、简介
FPM是jordansissel使用ruby语言开发的一款打包软件包的工具,fpm相比于rpmbuild,使用户构建rpm等软件包变得更加简单便捷。
支持的源类型:
gem (even autodownloaded for you)
python modules (autodownload for you)
pear (also downloads for you)
directories
tar(.gz) archives
rpm
deb
node packages (npm)
pacman (ArchLinux) packages
支持的目标类型
deb
rpm
solaris
freebsd
tar
directories
Mac OS X .pkg files (osxpkg)
pacman (ArchLinux) packages
二、安装fpm
centos7:
2.1、安装ruby
yum install ruby-devel gcc make rpm-build rubygems -y
2.2、安装fpm
gem install --no-ri --no-rdoc fpm
2.3、查看fpm版本
fpm --version
目前最新版本为2019年1月出的1.11.0版
三、部署redis_cluster节点
部署详见:redis-cluster部署
3.1、创建打包目录
mkdir /home/redis/redis_cluster
3.2、打包目录中包含的文件
redis-cli redis-server
redis-dmn.sh:redis守护脚本
redis_node_build.sh:创建redis节点(集群模式)脚本
script目录:放置开机启动service文件以及post和pre安装前后执行的脚本
start.sh:启动redis节点脚本
#!/bin/bash
workdir="/home/ceiec/redis_cluster"
killall redis-dmn.sh redis-server
/bin/bash $workdir/redis_node_build.sh && /bin/bash $workdir/redis-dmn.sh
stop.sh:停止redis节点脚本
#!/bin/bash
killall redis-dmn.sh redis-server
script目录下
[root@node1 script]# cat post-install.sh
#!/bin/bash
workdir="/home/ceiec/redis_cluster/"
#systemd manager
cp $workdir/script/redis.service /usr/lib/systemd/system/
[root@node1 script]# cat post-uninstall.sh
#!/bin/bash
redis_workdir="/home/ceiec/redis_cluster"
rm -rf ${redis_workdir}
[root@node1 script]# cat pre-uninstall.sh
#!/bin/bash
systemctl stop redis.service
rm -rf /usr/lib/systemd/system/redis.service
[root@node1 script]# cat redis.service
[Unit]
Description=redis-cluster services
After=network.target
[Service]
User=root
ExecStart=/bin/bash /home/ceiec/redis_cluster/start.sh
ExecStop=/bin/bash /home/ceiec/redis_cluster/stop.sh
[Install]
WantedBy=multi-user.target
三、通过fpm打包
3.1、查看帮助
fpm --help
使用格式:fpm [OPTIONS] [ARGS] ...
ARGS:源包的类型,对于dir(目录)来说,包含指定目录中所有的目录和文件
OPTIONS:参数
-s, --input-type INPUT_TYPE:指定源包类型
-t, --output-type OUTPUT_TYPE:指定目标包类型
-p, --package OUTPUT:输出目标包的路径
-f, --force :强制输出目标包,覆盖输出路径下的同名包,默认关闭
-n, --name NAME:指定目标包名
--log LEVEL:指定记录日志级别error, warn, info, debug四级
--verbose:输出详细信息
-d, --depends DEPENDENCY:指定依赖包
--post-install FILE 与--after-install:软件包安装完成之后所要运行的脚本
--pre-install FILE 与 --before-install:软件包安装完成之前所要运行的脚本
--pre-uninstall FILE 与--before-remove:软件包卸载完成之前所要运行的脚本
--post-uninstall FILE 与--after-remove:软件包卸载完成之后所要运行的脚本
还有更多根据目标包类型可使用的参数,详见 fpm --help
3.2、打包
[root@node1 ~]# fpm -s dir -t rpm -n redis -v 4.0.14 --post-install /home/ceiec/redis_cluster/script/post-install.sh --post-uninstall /home/ceiec/redis_cluster/script/post-uninstall.sh --pre-uninstall /home/ceiec/redis_cluster/script/pre-uninstall.sh -f /home/ceiec/redis_cluster/
Created package {:path=>"redis-4.0.14-1.x86_64.rpm"}
3.3、验证
[root@node2 ~]# rpm -ivh redis-4.0.14-1.x86_64.rpm
[root@node2 ~]# systemctl start redis
[root@node2 ~]# systemctl status redis
● redis.service - redis-cluster services
Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2019-05-09 05:13:50 PDT; 4s ago
参考文章:
FPM GitHub:https://github.com/jordansissel/fpm
FPM 官方文档:https://fpm.readthedocs.io/en/latest/intro.html
fpm --help
转载于:https://blog.51cto.com/jiayimeng/2391950