FPM工具
支持的源類型包
dir 將目錄打包成所需要的類型。可以用于源碼編譯安裝后的軟件包
rpm 對rpm進行轉換
gen 對rubygem包進行轉換
python 將python模塊打包成相應的類型
支持的目標類型包
rpm 轉換成rpm包
deb 轉換成deb包
solaris 轉換成solaris包
puppet 轉換成puppet包
?
FPM安裝過程
?
安裝ruby支持模塊
yum install ruby rubygems ruby-devel -y
添加阿里云的rubygems倉庫,國外的源比較慢
gem sources -a
移除源生的ruby倉庫
gem sources –remove
安裝fpm
gem install fpm -v 1.4.0
?
錯誤:
ERROR:??Error installing fpm:
? ?? ???json?requires Ruby version >= 1.9.3.
? ?? ???json?requires Ruby version >= 1.9.3.
?
類似這種錯誤,很多網友推薦升級ruby,我也嘗試過,表示坑很多,并不推薦
實際上并不是fpm或者ruby的問題,而是因為系統內json默認版本過高,導致ruby 1.8.7無法支持,需要降低json版本
gem install json -v 1.8.3
安裝完json后再安裝fpm即可
另外,centos7.x中默認ruby版本就高,沒有此問題
?
fpm命令
?
常用參數:
-s 指定source類型,如dir
-t 制定目標類型,如rpm
-n 指定包名字
-v 指定包的版本號
-C 指定打包的相對路徑
-d 指定依賴于哪些包
-f 第二次打包時目錄下如果有同名包,覆蓋
-p 輸出安裝包的目錄,不指定則為當前目錄
–post-install 軟件包安裝完成之后所要執行的腳本 同::–after-install
–pre-install 軟件包安裝完成之前縮要執行的腳本 同: –before-install
–post-uninstall 軟件包卸載完成之后所要執行的腳本 同::–after-remove
–pre-uninstall 軟件包卸載完成之前縮要執行的腳本 同: –before-remove
fpm命令其實是對rpmbuild命令進行封裝,其實低層還是rpmbuild命令,因此系統必須要有rpmbuild命令。
如果fpm命令無法運行,可以檢查rpm-build是否安裝 yum install rpm-build -y
?
打包命令示例:
fpm?-s?dir?-t?rpm?-n?nginx?-v?1.6.3?-d?'pcre-devel,openssl-devel'?--post-install?/home/root/scripts/nginx.sh?/usr/local/nginx-1.6.3/ /usr/local/nginx-1.6.3/?為nginx的安裝目錄 /home/root/scripts/nginx.sh?為nginx安裝后要執行的腳本,如創建用戶、創建軟鏈接
?
注意事項:
1.打包路徑,推薦使用絕對路徑
2.推薦打包實際路徑,打包軟鏈接時后面一定要有 / ,不加 / 指的是軟鏈接文件,加 / 指目錄
?
?
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END