admin · 8月21日 · 2020年
1.安装ruby环境
#原作者:jordansissel
#https://github.com/jordansissel/fpm
#安装ruby及依赖
yum -y install ruby rubygems ruby-devel
yum install rpm-build -y
#自带的ruby版本过低,需要升级ruby
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
curl -sSL https://get.rvm.io | bash -s stable
#根据运行的报错下载相应证书
source /etc/profile.d/rvm.sh
rvm install 2.5
2.安装fpm
#添加阿里源,移除国外源
gem sources -a http://mirrors.aliyun.com/rubygems/
gem sources --remove https://rubygems.org/
gem source -u
gem install fpm
3.使用fpm打包
#fpm参数说明
-s 指定源类型
-t 指定目标类型,即想要制作为什么包
-n 指定包的名字
-v 指定包的版本号
-C 指定打包的相对路径
-d 指定依赖于哪些包
-f 第二次打包时目录下如果有同名安装包存在,则覆盖它
-p 输出的安装包的目录,不想放在当前目录下就需要指定
--post-install 软件包安装完成之后所要运行的脚本;同--after-install
--pre-install 软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall 软件包卸载完成之后所要运行的脚本;同--after-remove
--pre-uninstall 软件包卸载完成之前所要运行的脚本;同--before-remove
#将源码文件编译好并放至指定目录
#以sersync为例
#rpm_install.sh
#!/bin/bash
ln -s /usr/local/sersync/bin/sersync /usr/local/bin
mkdir -p /etc/sersync
cp -a /usr/local/sersync/conf/confxml.xml /etc/sersync
cat > /usr/lib/systemd/system/sersync.service <<EOF
[Unit]
Description=sersync
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/sersync -d -n 30 -o /etc/sersync/confxml.xml
[Install]
WantedBy=multi-user.target
EOF
##rpm_remove.sh
#!/bin/bash
rm -f /usr/local/bin/sersync
rm -rf /etc/sersync
rm -rf /usr/local/sersync
rm -f /usr/lib/systemd/system/sersync.service
#打包
fpm -s dir -t rpm -n {name} -v {version} --post-install {dir} --post-uninstall {dir} -f {file_dir}
fpm -s dir -t rpm -n sersync -v 3.1.2 \
--post-install /rpm_script/sersync/rpm_install.sh \
--post-uninstall /rpm_script/sersync/rpm_remove.sh \
-f /usr/local/sersync/