FPM是jordansissel使用ruby语言开发的一款打包软件包的工具,fpm相比于rpmbuild,使用户构建rpm等软件包变得更加简单便捷。html
支持的源类型:node
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
支持的目标类型python
deb rpm solaris freebsd tar directories Mac OS X .pkg files (osxpkg) pacman (ArchLinux) packages
centos7:git
yum install ruby-devel gcc make rpm-build rubygems -y
gem install --no-ri --no-rdoc fpm
fpm --version 目前最新版本为2019年1月出的1.11.0版
部署详见:redis-cluster部署github
mkdir /home/redis/redis_cluster
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目录下redis
[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 --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 --helpnpm
[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"}
[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 --helpcentos