Reference
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