使用FPM打包工具打rpm包


                            使用FPM打包工具打rpm包

一:安裝ruby環境和gem命令

fpm 是 ruby寫的,因此系統環境需要ruby且版本必須大於1.8.5 # yum -y install ruby rubygems ruby-devel 查看當前ruby源 # gem source -l 添加國內源 # gem sources -a http://mirrors.aliyun.com/rubygems/
刪除國外源 # gem sources --remove  https://rubygems.org/
安裝fpm 可能要失敗 gem source -u #更新源或者 不行就 -c # gem install fpm 我這里解決方法安裝舊版本的fpm # gem install fpm -v 1.4.0 # gem -v
報錯解決:

解決:
因為系統內json默認版本過高,導致ruby 1.8.7無法支持,需要降低json版本
  gem install json -v 1.8.3
安裝完json后再安裝fpm即可
另外,centos7.x中默認ruby版本就高,沒有此問題
 
 

二:打包 以git-2.9.4.tar.gz打包為例子:

 第1步:將git編譯安裝到:/tmp/installdir/Data/apps/git下

  # tar xf git-2.9.4.tar.gz # cd git-2.9.4 # make prefix=/tmp/installdir/Data/apps/git all # make prefix=/tmp/installdir/Data/apps/git install
/tmp/installdir/為fpm打包時指定的相對路徑,rpm安裝時會自動去掉這個目錄,git會直接安裝到生產環境的/Data/apps/git下,所以要保障這個/tmp/installdir 目錄的純凈。
 
第2步:建立rpm安裝后需要執行腳本 在/tmp/installtarget/install_after.sh  #rpm安裝后執行腳本

 #!/bin/bash /bin/cp -a /usr/bin/git /usr/bin/git.1.7.1  2> /dev/null
  /bin/rm -f /usr/bin/git /bin/ln -s /Data/apps/git/bin/git /usr/bin/git exit 0
第3步:建立rpm卸載后需要的執行的腳本 在/tmp/installtarget/remove_after.sh

#!/bin/bash unlink /usr/bin/git /bin/mv /usr/bin/git.1.7.1 /usr/bin/git 2> /dev/null
 /bin/rm -rf /Data/apps/git exit 0
第4步打包

 fpm -s dir -t rpm -n hdf-git-client -v 2.9.4 -C /tmp/installdir/ --description 'git for haodf.com' --post-install /tmp/installtarget/install_after.sh --post-uninstall /tmp/installtarget/remove_after.sh -p /root/

 

FPM:常用參數說明:
-s:指定源類型: dir: 將目錄打包成所需要的類型,可以用於源碼編譯安裝的軟件包 rpm: 對rpm進行轉換 gem: 對rubygem包進行轉換 python: 將Python模塊打包成相應的類型 -t:指定目標類型,即想要制作為什么包 -n:指定包的名字 -v:指定包的版本號 -C:指定打包的相對路徑 -d:指定依賴於哪些包,格式為-d 'name'
-f:第二次包時目錄下如果有同名安裝包存在,則覆蓋它 -p:輸出的安裝包的目錄,不想放在當前目錄下就需要指定 --post-install:軟件包安裝完成之后所要運行的腳本;同--offer-install --pre-install:軟件包安裝完成之前所要運行的腳本; 同--before-install --post-uninstall:軟件包卸載完成之后所要運行的腳本;同--offer-remove --pre-uninstall:軟件包卸載完成之前所要運行的腳本; 同—before-remove

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM