fpm定制rpm包
因为centos7的yum安装的ruby版本是2.0,不支持下载比较高版本的rubygem
安装依赖:
yum update -y
yum install ruby-devel ruby-rdoc gcc gcc-c++ rpm-build curl libyaml-devel unzip
得到rubygem的包并解压:
mkdir -p /home/tools && cd /home/tools
wget -c https://rubygems.org/rubygems/rubygems-2.6.12.zip
unzip rubygems-2.6.12.zip
移除原生的ruby仓库,添加国内仓库
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
配好环境开始gem安装
cd /home/tools/rubygems-2.6.12 && ruby setup.rb
gem install json_pure
gem install bundler -v 1.17.3
gem install ffi -v 1.9.18
gem install fpm
开始定制
fpm -s dir -t rpm -n nginx -v 1.10.2 --iteration 1 -C . -f --vendor 'aike@dtstack.com' --description 'tzk Nginx' --url 'www.dtstack.com' -m 'aike' -d "dtstack-nginx" --after-install ./opt/dtstack/nginx/post-script.sh
-s: 指定原类型
-t: 指定目标类型
-n: 指定包名
-v: 指定包版本
-C: 指定打包的相对路径
-f: 第二次打包时如果目录下有同名的包,则强行覆盖
-m: 指名作者
-d: 指明依赖哪些包
--iteration: 包的迭代版本
--vendor: 包的发行者
--description: 描述包的信息
--url: Add a url for this package
--after-install: 软件包安装后执行的脚本(同--post-install)
--before-install: 软件包安装前执行的脚本(同--pre-install)
关于安装前、安装后执行的脚本:
-
脚本的位置随便放在哪里,把路径写正确就行(绝对路径、相对路径皆可用)
-
**rpm -qp --scripts [rpm包名]:**查看定制好的rpm包的安装前、安装后的脚本
-
-q: 查询
-p: 包名
–scripts: 查看脚本内容
-
解压缩rpm包:
rpm2cpio nginx.rpm | cpio -idmv
rpm2cpio可以将rpm格式的文件转换成cpio格式
cpio是用来建立、还原备份档的工具程序
-d: 创建所需目录
-i: 使用Copy-in mode,从归档中复制出文件或者列出文件内容
-m: 创建文件时保留文件的修改时间
-v: 列出已处理文件的信息