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