CentOS FPM 打 RPM 包

Reference

  • Remove rexml - rexml broken in Ruby versions below 2.3

Requirements

$ yum install ruby rubygems ruby-devel -y
$ gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/

$ gem install arr-pm fpm

FPM 常用参数:

  • -s:指定源类型
  • -t:指定目标类型,即想要制作为什么包
  • -n:指定包的名字
  • -v:指定包的版本号
  • -C:指定打包的相对路径
  • -d:指定依赖于哪些包
  • -f:第二次包时目录下如果有同名安装包存在,则覆盖它;
  • -p:制作的rpm安装包存放路径,不想放在当前目录下就需要指定;
  • –post-install:软件包安装完成之后所要运行的脚本;同–offer-install
  • –pre-install:软件包安装完成之前所要运行的脚本;同–before-install
  • –post-uninstall:软件包卸载完成之后所要运行的脚本;同–offer-remove
  • –pre-uninstall:软件包卸载完成之前所要运行的脚本;同—before-remove
  • –prefix:制作好的rpm包默认安装路径;

支持的源类型包:

  • dir: 将目录打包成所需要的类型,可以用于源码编译安装的软件包
  • rpm: 对rpm进行转换
  • gem: 对rubygem包进行转换
  • python: 将Python模块打包成相应的类型

支持的目标类型包:

  • rpm: 转换为rpm包
  • deb: 转换为deb包
  • solaris: 转换为solaris包
  • puppet: 转换为puppet包

网上基本都能查到fpm相关资料,有些参数可能新版的fpm中,变成了不推荐使用。想要了解最新的参数,可以使用命令查看帮助。

fpm -help

Remove Rexml

rexml broken in Ruby versions below 2.3

$ find / -name osxpkg.rb
$ vim osxpkg.rb
# require 'rexml/document'  # stdlib

Shell

All flags should be before the first argument (stray flags found: ["--prefix"]
--post-install 不能放到最后,选项的顺序最好不要随意变换

打包

# daos_pre_install.sh
#!/bin/bash
echo "pre_install.sh"
scl enable devtoolset-9 bash
mkdir /usr/daos
exit $?

# daos_post_install.sh
#!/bin/bash
echo "post_install.sh"
cd /root/daos
scons --config=force --build-deps=yes install
exit $?

$ fpm -s dir -t rpm -n daos -v 1.2 \
-d python3-distro \
-d python-distro \
-d libuuid-devel \
-d openssl-devel \
-d valgrind-devel \
-d libunwind-devel \
-d libpmem-devel \
-d pandoc \
-d texlive \
-d texlive-xetex \
-d texlive-cjk \
-d texlive \
-d texlive-latex \
-d texlive-xetex \
-d texlive-collection-latexrecommended \
-d texlive-collection-latex \
-d texlive-xetex-def \
-d texlive-collection-xetex \
-d libcmocka-devel \
-d numactl-devel \
-d patchelf \
-d hwloc-devel \
-d boost-devel \
-d gcc \
-d gcc-c++ \
-d make \
-d automake \
-d cmake \
-d fuse3-devel \
-d json-c-devel \
-d lz4-devel \
-d libaio-devel \
-d openmpi-devel \
-d mpich-devel \
-d python3-devel \
-d golang \
-d libyaml-devel \
-d ipmctl \
-d libipmctl-devel \
-d devtoolset-9-gcc \
-d devtoolset-9-gcc-plugin-devel \
-d devtoolset-9-gcc-gfortran \
-d devtoolset-9-gcc-gdb-plugin \
-d devtoolset-9-gcc-c++ \
-d pandoc \
-d patchelf \
-d scons \
--pre-install /root/scripts/daos_pre_install.sh \
--post-install /root/scripts/daos_post_install.sh \
-f /root/daos/

安装

$ yum update -y && yum clean all && yum install -y epel-release centos-release-scl
$ yum localinstall -y daos-1.2-1.x86_64.rpm

你可能感兴趣的:(CentOS FPM 打 RPM 包)