FPM打包工具


支持的源類型包:

  •  dir: 將目錄打包成所需要的類型,可以用於源碼編譯安裝的軟件包
  •  rpm: 對rpm進行轉換
  •  gem: 對rubygem包進行轉換
  •  python: 將Python模塊打包成相應的類型

支持的目標類型包:

  • rpm: 轉換為rpm包
  • deb: 轉換為deb包
  • solaris: 轉換為solaris包
  • puppet: 轉換為puppet包

FPM的安裝:

安裝ruby環境和gem命令:

yum -y install ruby rubygems ruby-devel

gem命令是從rubygem倉庫安裝軟件類似yum從yum倉庫安裝軟件

 查看當前源:

[root@localhost~]# gem source list
*** CURRENT SOURCES ***
http://rubygems.org/

添加國內源:

[root@localhost~]# gem sources -a http://mirrors.aliyun.com/rubygems/

移除國外源:

[root@localhost~]# gem sources --remove http://rubygems.org/

安裝FPM工具:

[root@localhost~]# gem install fpm
[root@loaclhost~]#sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf    //開啟yum緩存

FPM常用參數:

-s:指定源類型

-t:指定目標類型,即想要制作為什么包

-n:指定包的名字

-v:指定包的版本號

-C:指定打包的相對路徑

-d:指定依賴於哪些包

-f:第二次包時目錄下如果有同名安裝包存在,則覆蓋它

-p:輸出的安裝包的目錄,不想放在當前目錄下就需要指定

--post-install:軟件包安裝完成之后所要運行的腳本;同--offer-install

--pre-install:軟件包安裝完成之前所要運行的腳本;同--before-install

--post-uninstall:軟件包卸載完成之后所要運行的腳本;同--offer-remove

--pre-uninstall:軟件包卸載完成之前所要運行的腳本;同—before-remove

安裝遇到問題:

1.Need executable 'rpmbuild' to convert dir to rpm {:level=>:error}
解決方法:
[root@localhost]# yum install -y rpm-build

2.如果里面有gcc make的錯誤.
解決方法:
yum install -y gcc  

fpm打包實例:

1.fpm打包Nginx

[root@localhost opt]# fpm -s dir -t rpm -n nginx -v 1.6.1 -d 'pcre-devel,openssl-devel' --post-install /opt/nginx_rpm.sh -f /opt/nginx/ 
no value for epoch is set, defaulting to nil {:level=>:warn} no value for epoch is set, defaulting to nil {:level=>:warn} Created package {:path=>"nginx-1.6.1-1.x86_64.rpm"}

2.fpm相對路徑打包:

[root@localhost~]# fpm -s dir -t rpm -n opt -v 1.1.1.1 -d 'gcc,gcc+' -C ../opt/    
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"opt-1.1.1.1-1.x86_64.rpm"}

3.使用fpm將生成包指定到/tmp下:

[root@bogon ~]# fpm -s dir -t rpm -n ansible-v 1.1.1.1 -d 'gcc,gcc+' -f ansible-p /tmp/

no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"/tmp/ansible-1.1.1.1-1.x86_64.rpm"}

查看rpm包信息:

1.查看rpm執行的腳本

[root@localhost opt]# rpm -qp --scripts nginx-1.6.1-1.x86_64.rpm        
postinstallscriptlet (using /bin/sh):
#!/bin/bash
useraddnginx -M -s /sbin/nologin

2.查看rpm包的依賴

[root@localhost opt]# rpm -qpR nginx-1.6.1-1.x86_64.rpm  
openssl-devel
/bin/sh
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1

3.查看rpm包中的內容:

rpm -qpl zabbix-3.0-1.x86_64.rpm

鏡像同步公網YUM源:

centos官方標准源:
rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/
rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/
rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/

epel源:

rsync://mirrors.ustc.edu.cn/epel/6/x86_64/

命令:reposync

 

參考文檔:

            http://blog.oldboyedu.com/autodeploy-rpm/

            http://www.zyops.com/autodeploy-rpm

 

  


免責聲明!

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



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