使用fpm工具--定制rpm包

    技术2022-07-13  80

    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: 列出已处理文件的信息


    Processed: 0.014, SQL: 9